Ansible - режим 755 для каталогов и 644 для файлов рекурсивно
Я хотел бы разрешить всем пользователям перечислять и читать все файлы в моем дереве каталогов, но я не хочу, чтобы файлы исполнялись:
dir
\subdir1
file1
\subdir2
file2
...
\subdirX
fileX
Следующая задача делает мои каталоги и файлы доступными для чтения, но также делает все файлы исполняемыми:
- name: Make my directory tree readable
file:
path: dir
mode: 0755
recurse: yes
С другой стороны, если я выбираю режим 0644, то все мои файлы не исполняются, но я не могу перечислить свои каталоги.
Можно ли установить режим 755 для всех каталогов и 644 для всех файлов в дереве каталогов?
Спасибо.
Ответы
Ответ 1
Начиная с версии 1.8, Ansible поддерживает символические режимы. Таким образом, следующая задача выполнит требуемую задачу:
- name: Make my directory tree readable
file:
path: dir
mode: u=rwX,g=rX,o=rX
recurse: yes
Поскольку X (вместо x) применяется только к каталогам или файлам с хотя бы одним набором бит.
Ответ 2
Модули Ansible file/copy не дают вам детализации заданий разрешений на основе типа файла, поэтому вам, скорее всего, нужно будет сделать это вручную, выполнив что-то в этом направлении:
- name: Ensure directories are 0755
command: find {{ path }} -type d -exec chmod -c 0755 {} \;
register: chmod_result
changed_when: "chmod_result.stdout != \"\""
- name: Ensure files are 0644
command: find {{ path }} -type f -exec chmod -c 0644 {} \;
register: chmod_result
changed_when: "chmod_result.stdout != \"\""
Это приведет к рекурсии через {{ path }}
и изменению разрешений каждого файла или каталога на указанные разрешения.