Ansible-Modo 755 para directorios y 644 para archivos recursivamente


Me gustaría permitir que cualquiera enumere y lea todos los archivos en mi árbol de directorios, pero no quiero hacer que los archivos sean ejecutables :

dir
  \subdir1
      file1
  \subdir2
      file2
  ...
  \subdirX
      fileX

La siguiente tarea hace que mis directorios y archivos sean legibles, pero también hace que todos los archivos sean ejecutables:

- name: Make my directory tree readable
  file:
    path: dir
    mode: 0755
    recurse: yes

Por otro lado, si elijo el modo 0644, entonces todos mis archivos no son ejecutables, pero no puedo listar mis directorios.

¿Es posible establecer el modo 755 para todos los directorios y 644 para todos los archivos de un directorio árbol?

Gracias.

Author: udondan, 2015-02-28

2 answers

Desde la versión 1.8, Ansible soporta modos simbólicos. Por lo tanto, lo siguiente realizaría la tarea que desea:

- name: Make my directory tree readable
  file:
    path: dir
    mode: u=rwX,g=rX,o=rX
    recurse: yes

Porque X (en lugar de x) solo se aplica a directorios o archivos con al menos un bit x establecido.

 87
Author: Adrien Clerc,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-22 09:52:21

Los módulos Ansible file/copy no le dan la granularidad de especificar permisos basados en el tipo de archivo, por lo que lo más probable es que necesite hacer esto manualmente haciendo algo en estas líneas:

- 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 != \"\""

Estos tendrían el efecto de recurrir a {{ path }} y cambiar los permisos de cada archivo o directorio a los permisos especificados.

 22
Author: Bruce P,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-26 17:04:22