ansibleでは、これを行うことができます:
file: dest=/foo/bar/somedir owner=root group=apache mode=0775 recurse=yes
また、そのパス内のすべてのディレクトリとファイルの所有者、グループ、およびアクセス許可を再帰的に0775に設定します。しかし、ディレクトリを0775に、ファイルを0664に設定したいのですが、これを可能にする方法はありますか?
ansibleでは、これを行うことができます:
file: dest=/foo/bar/somedir owner=root group=apache mode=0775 recurse=yes
また、そのパス内のすべてのディレクトリとファイルの所有者、グループ、およびアクセス許可を再帰的に0775に設定します。しかし、ディレクトリを0775に、ファイルを0664に設定したいのですが、これを可能にする方法はありますか?
回答:
file: dest=/foo/bar/somedir owner=root group=apache mode=u=rwX,g=rX,o=rX recurse=yes
ディレクトリを755に、ファイルを644に設定します。
Ansibleファイル/コピーモジュールは、ファイルの種類に基づいてアクセス許可を指定する細分性を提供しないため、次の行に沿って何かを行うことで手動でこれを行う必要があります。
- 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 {} \;
これらは
{{ path }}
、すべてのファイルまたはディレクトリのアクセス許可を繰り返し指定されたアクセス許可に変更する効果があります。
recurse
オプションを見ましたが、他のオプションは見ませんでした。
モジュールファイルをansibleで使用する場合、次のことができます。
ファイル:dest = / foo / bar / somedir owner = root group = apache mode = 0644 recurse = yes
ファイル:dest = / foo / bar / somedir owner = root group = apache mode = 0775
この方法では、最初にすべてのファイル(recurse = yes)を「644」に設定し、次に/ foo / bar / somedirを「775」に設定します。
これは、プレイブックを再生するたびにディレクトリのアクセス許可が変更されるため、完全ではありません。しかし、少なくともそれはi等であり、モジュールコマンドとは異なります。
「変更済み」ステータスにしたくない場合は、モジュールの統計情報を使用できます。/ foo / bar / somedirにあるすべてのファイルとディレクトリがリストされるので、答えを登録してから、それらのファイルのみでループを作成します。
ディレクトリを0775(rwxrwxr-x
)に設定し、ファイルを0644(rw-r--r--
)に設定することの意味がわからない:グループ書き込み可能ディレクトリ(ファイルではない)?
ファイルを0664(rw-rw-r--
)に設定して、ディレクトリがトラバース可能な間はファイルが実行されないようにする場合は、1つのchmod
コマンドのみを含むエレガントなソリューションがあります。
chmod -c -R ug=rw,o=r,a-x+X "{{top_dir}}"
Ansibleでの使用方法は次のとおりです。
- name: recursive chmod example
command: |
chmod -c -R ug=rw,o=r,a-x+X "{{item}}"
register: chmod_status
changed_when: chmod_status.stdout != ""
with_items:
- "/home/user/sample/dir"
chmod -c
Ansibleに「変更済み」ステータスを設定するために便利に使用できるすべての変更を出力します。理にかなっているといいのですが。