디렉토리로 이동하거나 복사 한 파일에 대한 기본 권한을 설정하는 방법은 무엇입니까?


9

내 질문은 리눅스에서 새로 생성 된 모든 파일에 대한 기본 파일 권한을 설정하는 방법 과 비슷 하지만 중요한 방법이 다릅니다.

특정 디렉토리에서 작성되거나 복사되거나 이동 된 모든 파일이 시스템 기본값과 다른 기본 권한 세트를 상속하기를 원합니다.

이론적 근거 : 해당 디렉토리는 애플리케이션의 "흡입 호퍼"입니다. 그룹의 사용자는 디렉토리에 파일을 배치하고 동일한 그룹의 다른 사용자 ID로 실행되는 앱이 파일을 가져 와서 처리합니다. 문제는 디렉토리에있는 각 파일의 소유자가 해당 파일을 배치 한 사용자이고 사용 권한의 기본값은 "rw-r--r--"입니다. "rw-rw ----"로 변경하고 싶습니다. 앱을 실행하는 사용자 ID가 문제의 파일을 소유하지 않으며 기본 권한으로 인해 앱이 파일에서 chmod를 허용하지 않기 때문에 섭취를 수행하는 앱은 명시 적으로 그렇게 할 수 없습니다! 분명히, 사용자는 파일을 거기에 넣은 후에 chmod를 수행 할 수 있습니다. 그러나 사용자가 "드롭"을 가능한 한 간단하게 유지하고 싶습니다. (이 사람들은 리눅스에 익숙하지 않습니다.

umask는 너무 강력 해 보입니다.이 사용자가 만든 모든 파일에 대해 기본 권한을 설정하고 싶지 않습니다.이 디렉토리에서 생성 된 파일에만 있습니다.

조언하십시오 ... 감사합니다!

답변:


5

ACL (액세스 제어 목록)을 사용하여 디렉토리의 파일에 대한 기본 권한을 설정할 수 있습니다.

보낸 사람 man 5 acl:

기본 ACL이 디렉토리와 연관된 경우, 파일 오브젝트를 작성하는 기능 및 디렉토리의 기본 ACL에 대한 mode 매개 변수는 새 오브젝트의 ACL을 판별하는 데 사용됩니다.

  1. 새 오브젝트는 포함 디렉토리의 기본 ACL을 액세스 ACL로 상속합니다.

  2. 파일 권한 비트에 해당하는 액세스 ACL 항목은 mode 매개 변수로 지정된 권한에 포함되지 않은 권한을 포함하지 않도록 수정됩니다.

설정하려면 (장치, 디렉토리 등을 적절히 변경하십시오) :

/etc/fstab파일을 편집 하고 acl마운트 옵션을 추가하십시오 .

/dev/mapper/star-home /home ext3  defaults,acl 0 2

재부팅하거나 다음을 사용하여 파일 시스템을 다시 마운트하십시오 ( Samba mount.cifs매뉴얼 페이지 ).

mount -o remount,acl /home

setfaclgetfacl유틸리티 가 있는지 확인하십시오 .

디렉토리에서 기본 ACL을 설정하십시오 (기존 파일에서 ACL을 설정해야 할 수도 있음).

$ setfacl -m d:user:george:rwx,d:group:sales-g:rwx,d:group:marketing-g:rwx projections

자세한 내용은 연결된 자습서를 참조하십시오.

출처 : 튜토리얼 1 2 부

참조 : Linux의 POSIX 액세스 제어 목록


에 추가 할 때 명령에 acl옵션으로 추가해야한다고 생각하지 않습니다 . 중복 될 것이고 응답 에서 명령 을 실행하면 다음 과 같은 결과 가 나타납니다 (끝 부분 참조 ). 내가 틀리지 않으면 정정하십시오. mount/etc/fstabmount/dev/vda1 on / type ext4 (rw,errors=remount-ro,acl,acl)acl,acl
its_me

1

해결 방법을 제공 할 수 있습니다. 별도의 "drop"디렉토리를 만들고 권한을 수정 한 다음 파일을 응용 프로그램의 데이터 디렉토리로 이동하는 별도의 minijob을 실행하십시오. 이를 위해 incron을 사용할 수 있으므로 거의 눈에 띄는 시간 지연이 없습니다.


1

이 작업을 수행하는 네 가지 가능한 방법을 생각할 수 있습니다.

  • 사용하지 않으려는 umask
  • 프로그램 래퍼-사용자가 아닌 해당 응용 프로그램의 umask를 설정합니다.
  • @Peter Eisentraut가 설명한 cron; find $HOME/intake -type f -exec chmod 660 {} \;다른 시스템 (등이 성능 개선이 -exec+옵션을)
  • 약간의 셸 프로그래밍이 필요한 디렉토리 기반 설정이지만 프롬프트를 설정하거나 cd를 호출 할 때 기본적으로 쉘은 해당 디렉토리 (또는 상위 디렉토리)에 도트 파일이 있으면 umask를 변경합니다. bash의 PROMPT_COMMAND='test -s $PWD/.umask && umask $(cat $PWD/.umask)'";$PROMPT_COMMAND"경우 가장 간단합니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.