가능 : 디렉터리 및 파일 사용 권한을 재귀 적으로 설정하는 방법 파일에 대해 소유자,

무언가, 나는 이것을 할 수있다 :

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 }}
  모든 파일 또는 디렉토리의 권한을 지정된 파일로 변경
  사용 권한.

출처: https://stackoverflow.com/a/28782805/1306186


답변

모듈 파일을 사용할 수있게하려면 다음을 수행 할 수 있습니다.

파일 : dest = / foo / bar / somedir 소유자 = 루트 그룹 = apache 모드 = 0644 recurse = yes

file : dest = / foo / bar / somedir owner = 루트 그룹 = 아파치 모드 = 0775

이 방법을 사용하면 먼저 모든 파일 (recurse = yes)을 ‘644’로 설정 한 다음 / foo / bar / somedir을 ‘775’로 설정합니다.

플레이 북을 재생할 때마다 디렉토리 사용 권한이 변경되므로 완벽하지 않습니다.
적어도 모듈 명령과는 달리 멱등수입니다.

‘변경됨’상태를 원하지 않으면 module stat를 사용할 수 있습니다. / foo / bar / somedir에있는 모든 파일과 디렉토리를 나열하여 응답을 등록한 다음 해당 파일에 대해서만 루프를 만들 수 있습니다.


답변

나는 얼마나 많은 감각이 0775에 전화 번호부를 놓을 것인지에 관해 명확히하지 않는다 ( rwxrwxr-x ) 및 파일을 0644 ( rw-r--r-- ) : 그룹으로 쓸 수있는 디렉토리는 있지만 파일은 아닌가?

파일을 0664 ( rw-rw-r-- ) 디렉토리가 가로 지르는 동안 파일이 실행 가능하지 않게하려면 오직 하나만 포함하는 우아한 해결책이 있습니다 chmod 명령:

chmod -c -R ug=rw,o=r,a-x+X "{{top_dir}}"

여기에 어떻게 사용할 수 있을까요? 책임감있는 :

- 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 “변경됨”상태를 채우기 위해 편리하게 사용할 수있는 모든 변경 사항을 인쇄합니다. 책임감있는 . 나는 그것이 의미가 있기를 바랍니다.


답변

필요한 경우에만 개조 변경 :

- 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 {} \;


답변