Die Datei- / Kopiermodule von Ansible bieten Ihnen nicht die Granularität der Angabe von Berechtigungen basierend auf dem Dateityp. Daher müssen Sie dies höchstwahrscheinlich manuell tun, indem Sie folgende Schritte ausführen:
- name: Ensure directories are 0755 command: find {{ path }} -type d -exec chmod 0755 {} \; - name: Ensure files are 0644 command: find {{ path }} -type f -exec chmod 0644 {} \;
Dies würde dazu führen,
{{ path }}
dass die Berechtigungen aller Dateien oder Verzeichnisse in den angegebenen Berechtigungen rekursiert und geändert werden .
Ansible: Wie werden Verzeichnis- und Dateiberechtigungen rekursiv festgelegt?
In Ansible kann ich das tun:
file: dest=/foo/bar/somedir owner=root group=apache mode=0775 recurse=yes
Der Besitzer, die Gruppe und die Berechtigungen werden für alle Verzeichnisse und Dateien in diesem Pfad rekursiv auf 0775 gesetzt. Aber ich möchte Verzeichnisse auf 0775 und Dateien auf 0664 setzen. Gibt es eine Möglichkeit, Ansable zu machen, dies zu tun?
5 Antworten auf die Frage
- Beliebte
- Neu
- Mit Kommentaren
- Aktiv
file: dest=/foo/bar/somedir owner=root group=apache mode=u=rwX,g=rX,o=rX recurse=yes
setzt Verzeichnisse auf 755 und Dateien auf 644.
Wenn Sie die Moduldatei in ansible verwenden möchten, können Sie:
file: dest = / foo / bar / somedir owner = Root-Gruppe = Apache-Modus = 0644 Recurse = Ja
file: dest = / foo / bar / somedir owner = Stammgruppe = Apache-Modus = 0775
Bei dieser Methode setzen Sie zuerst die gesamte Datei (recurse = yes) auf '644' und dann / foo / bar / somedir auf '775'.
Dies ist nicht perfekt, da dadurch die Verzeichnisberechtigung jedes Mal geändert wird, wenn Sie Ihr Playbook abspielen. Aber es ist zumindest idempotent, nicht wie der Modulbefehl.
Wenn Sie den Status nicht geändert haben möchten, können Sie das Modul stat verwenden. Es werden alle Dateien und Verzeichnisse in / foo / bar / somedir aufgelistet, so dass Sie die Antwort registrieren und dann nur diese Dateien in einer Schleife ausführen.
Ich bin nicht sicher, wie sinnvoll es wäre, Verzeichnisse auf 0775 ( rwxrwxr-x
) und Dateien auf 0644 ( rw-r--r--
) zu setzen: gruppenbeschreibbare Verzeichnisse, aber keine Dateien?
Wenn Sie Dateien auf 0664 ( rw-rw-r--
) setzen möchten, um sicherzustellen, dass Dateien nicht ausführbar sind, während Verzeichnisse durchsuchbar sind, gibt es eine elegante Lösung, die nur einen chmod
Befehl enthält:
chmod -c -R ug=rw,o=r,a-x+X "{}"
So kann es in Ansible verwendet werden :
- name: recursive chmod example command: | chmod -c -R ug=rw,o=r,a-x+X "{}" register: chmod_status changed_when: chmod_status.stdout != "" with_items: - "/home/user/sample/dir"
chmod -c
druckt alle Änderungen, die wir bequem verwenden können, um den Status "geändert" in Ansible aufzufüllen . Ich hoffe es macht Sinn.
Mods nur bei Bedarf ändern:
- name: make dirs 0755 command: find {{ your_path }} -type d ! -perm 0755 -exec chmod 0755 {} \; - name: make files 0644 command: find {{ your_path }} -type f ! -perm 0644 -exec chmod 0644 {} \;
Verwandte Probleme
-
3
Meine Datei ist in Excel 2007 gesperrt. Was ist los?
-
1
Wie stelle ich TrustedInstaller als Besitzer des Programmverzeichnisses wieder her?
-
1
Ändern Sie die Berechtigungen für Dateien und Verzeichnisse im Basisverzeichnis
-
3
Wie bearbeiten Sie die Hosts-Datei unter Windows 7?
-
6
Ändern Sie die Dateiberechtigungen in Linux
-
2
schreibgeschützte Dateien in Ubuntu
-
1
Fortgeschrittene Probleme mit Datei- / Ordnerberechtigungen unter Windows 7 - Besitz?
-
6
Schützen Sie einen Ordner mit einem Kennwort
-
3
So schützen Sie private Dateien vor dem Anzeigen / Kopieren in einem LAN
-
2
Wie erzwinge ich das Löschen einer Datei unter Windows 7?