Ansible-mode 755 pour les répertoires et 644 pour les fichiers récursivement
Je voudrais permettre à quiconque de lister et de lire tous les fichiers de mon arborescence de répertoires, mais je ne veux 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 elle rend également tous les fichiers exécutables:
- name: Make my directory tree readable
file:
path: dir
mode: 0755
recurse: yes
D'un autre côté, si je choisis le mode 0644, alors tous mes fichiers ne sont pas exécutables, mais je ne suis pas en mesure de 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'un répertoire l'arbre?
Je vous Remercie.
2 réponses
Depuis la version 1.8, Ansible supporte les modes symboliques. Ainsi, ce qui suit effectuerait la tâche que vous voulez:
- 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 jeu de bits X.
Les modules fichier / copie Ansible ne vous donnent pas la granularité de spécifier des autorisations en fonction du type de fichier, donc vous devrez probablement le faire manuellement en faisant quelque chose comme ceci:
- 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 != \"\""
Ceux-ci auraient pour effet de se reproduire à travers {{ path }}
et de changer les autorisations de chaque fichier ou Répertoire aux autorisations spécifiées.