J'aimerais permettre à quiconque de répertorier et de lire tous les fichiers de mon arborescence de répertoires, mais je ne souhaite pas rendre les fichiers exécutables:
dir
\subdir1
file1
\subdir2
file2
...
\subdirX
fileX
La tâche suivante rend mes répertoires et fichiers lisibles, mais rend également tous les fichiers exécutables:
- name: Make my directory tree readable
file:
path: dir
mode: 0755
recurse: yes
Par contre, si je choisis le mode 0644, tous mes fichiers ne sont pas exécutables, mais je ne peux pas lister mes répertoires.
Est-il possible de définir le mode 755 pour tous les répertoires et 644 pour tous les fichiers d'une arborescence de répertoires?
Merci.
Depuis la version 1.8, Ansible supporte les modes symboliques. Ainsi, les tâches suivantes exécuteraient la tâche souhaitée:
- name: Make my directory tree readable
file:
path: dir
mode: u=rwX,g=rX,o=rX
recurse: yes
Parce que X (au lieu de x) ne s'applique qu'aux répertoires ou fichiers avec au moins un x bit défini.
Les modules fichier/copie Ansible ne vous donnent pas la granularité de spécifier des autorisations en fonction du type de fichier. Vous devrez probablement le faire manuellement en procédant comme suit:
- 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 != \"\""
Celles-ci auraient pour effet de récurser à travers {{ path }}
et modifier les autorisations de chaque fichier ou répertoire en fonction des autorisations spécifiées.