�
܍~c� � �� � d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ ej e
� � ZdadZ
dZddefd�Zddefd �Zd
� Ze j dd�� � Zddefd�Zddefd
�ZdS )� N)�log)�utilz/run/cloud-init/tmpz/var/tmp/cloud-initF� needs_exec � � | �| S |rt S t rt S t j � � dk rt S t j � dd� � S )Nr �TMPDIRz/tmp)�_EXE_ROOT_TMPDIR�_TMPDIR�os�getuid�_ROOT_TMPDIR�environ�get)�odirr s �6/usr/lib/python3/dist-packages/cloudinit/temp_utils.py�get_tmp_ancestorr sU � ������ ���� ��� �y�{�{�a�����
�:�>�>�(�F�+�+�+� c �& � t | |� � }t j � |� � s)t j |� � t j |d� � |r0t
j |d� � rt � d|� � | �|s|a
|S )a% Return the proper 'dir' argument for tempfile functions.
When root, cloud-init will use /run/cloud-init/tmp to avoid
any cleaning that a distro boot might do on /tmp (such as
systemd-tmpfiles-clean).
If the caller of this function (mkdtemp or mkstemp) was provided
with a 'dir' argument, then that is respected.
@param odir: original 'dir' arg to 'mkdtemp' or other.
@param needs_exe: Boolean specifying whether or not exe permissions are
needed for tempdir. This is needed because /run is mounted noexec.
i� �noexeczDRequested temporal dir with exe permission `%s` is mounted as noexec)r r
�path�isdir�makedirs�chmodr �
has_mount_opt�LOG�warningr )r r �tdirs r �_tempfile_dir_argr s� � � �D�)�,�,�D�
�7�=�=���� �
��D����
���v����� ���d�H�-�-� ��K�K�%��
�
�
� �|�I�|����Kr c �� �� t | � dd � � | � dd� � � � | d< |