web-dev-qa-db-ja.com

Ansible-ディレクトリの場合はモード755、ファイルの場合は再帰的に644

誰でもディレクトリツリー内のすべてのファイルを一覧表示して読み取ることができるようにしたいのですが、ファイルを実行可能にしたくないのです。

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

次のタスクは、ディレクトリとファイルを読み取り可能にしますが、すべてのファイルも実行可能にします。

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

一方、モード0644を選択した場合、すべてのファイルは実行可能ではありませんが、ディレクトリを一覧表示できません。

すべてのディレクトリにモード755、ディレクトリツリー内のすべてのファイルに644を設定できますか?

ありがとうございました。

61
mykola

バージョン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ビットが設定されたディレクトリまたはファイルにのみ適用されるためです。

91
Adrien Clerc

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 }}を再帰処理し、すべてのファイルまたはディレクトリのアクセス許可を指定されたアクセス許可に変更する効果があります。

25
Bruce P