79 votes

Ansible : Comment définir récursivement les permissions des répertoires et des fichiers

Dans ansible, je peux faire ça :

file: dest=/foo/bar/somedir owner=root group=apache mode=0775 recurse=yes

Et il définit récursivement le propriétaire, le groupe et les permissions à 0775 sur tous les répertoires et fichiers dans ce chemin. Mais je veux définir les répertoires à 0775, et les fichiers à 0664. Existe-t-il un moyen de faire en sorte qu'ansible fasse cela ?

3voto

Tom Phan Points 31

Vous pouvez utiliser le module copy : et définir le directory_mode à 0755 et le mode à 644 pour les fichiers. Notez que vous avez besoin de la barre oblique "/" à la fin pour la copie récursive.

Exemple :

    - name: Recursively copy testing directory
      copy:
        src: testing/
        dest: /opt/testing/
        directory_mode: 0755
        owner: test
        group: test
        mode: 0644

2voto

phuturer Points 21

Une approche plus moderne consisterait à commencer par filtrer les dirs comme ça :

  - name: Evaluating home dirs    
    find:    
      path: "/home"    
      file_type: "directory"    
    register: homedirs    

  # This returns the actual dir-path's 
  - set_fact: 
      homes: "{{ homedirs.files | map(attribute='path') | list }}"           

  - name: Changing permissions of /home/*
    file:    
      path: "{{ item }}"  
      mode: 0700  
    with_items:    
      - "{{ homes }}"

NOTE : Changer le paramètre "file_type" en "file", pour les fichiers à affecter

2voto

Jay Lepore Points 11
- name: Change permissions on /remote/file/path to ansible:user so we can write to it 
  file:
    path: /remote/file/path/(or file)
    owner: root (or other)
    # recursive if you need it
    # recurse:true 
    group: users (or other)
    mode: "0770"

Ou, en rendant plus 'Ansible-ish' la réponse appréciée ci-dessus

 name: Change permissions from /SM/data-drive/sm_sites etc...
  file:
    dest: "{{ item }}"
    owner: www-data
    group: www-data    
    recurse: true 
    # supposed to set directories to 755 and files to 644
    mode: u=rwX,g=rX,o=rX
  with_items:
    - /SM/data-drive/sm_sites
    - /SM/data-drive/smw_dams
    - /SM/data-drive/smw_wikis

0voto

Moises Jafet Points 1

A titre d'exemple, comme pour "sécuriser" une hypothétique instance de Joomla !

- name: Ensure to secure the Joomla installation
  shell: "find . -type d -exec chmod 755 {} \\; && find . -type f -exec chmod 644 {} \\; && chown -R www-data: cache modules images media modules logs tmp administrator/cache"
  args:
      chdir: "{{ production_backend_root_path }}"
  tags: 
      - joomla_secure

Où root possède tous les répertoires, sauf quelques répertoires désignés appartenant au serveur web.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X