誰でもディレクトリツリー内のすべてのファイルを一覧表示して読み取ることができるようにしたいのですが、ファイルを実行可能にしたくないのです。
dir
\subdir1
file1
\subdir2
file2
...
\subdirX
fileX
次のタスクは、ディレクトリとファイルを読み取り可能にしますが、すべてのファイルも実行可能にします。
- name: Make my directory tree readable
file:
path: dir
mode: 0755
recurse: yes
一方、モード0644を選択した場合、すべてのファイルは実行可能ではありませんが、ディレクトリを一覧表示できません。
すべてのディレクトリにモード755、ディレクトリツリー内のすべてのファイルに644を設定できますか?
ありがとうございました。
バージョン1.8以降、Ansibleはシンボリックモードをサポートしています。したがって、次のコマンドで目的のタスクを実行できます。
- name: Make my directory tree readable
file:
path: dir
mode: u=rwX,g=rX,o=rX
recurse: yes
(Xではなく)Xは、少なくとも1つのxビットが設定されたディレクトリまたはファイルにのみ適用されるためです。
Ansibleファイル/コピーモジュールは、ファイルの種類に基づいてアクセス許可を指定する細分性を提供しないため、次の行に沿って何かを行うことで手動でこれを行う必要があります。
- 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 != \"\""
これらは、{{ path }}
を再帰処理し、すべてのファイルまたはディレクトリのアクセス許可を指定されたアクセス許可に変更する効果があります。