몇 명의 사용자가 공유하는 디렉토리에 출력 결과를 저장하는 장기 실행 스크립트와 응용 프로그램이 많이 있습니다. 이 공유 디렉토리 아래에 생성 된 모든 파일과 디렉토리에 자동으로 u=rwxg=rwxo=r
권한 이 있는지 확인하는 방법을 원합니다 .
umask 006
다양한 스크립트에서 머리에 사용할 수 있다는 것을 알고 있지만 많은 사용자가 자신의 스크립트를 작성하고 umask를 직접 설정하는 것을 잊을 수 있기 때문에 이러한 접근 방식이 마음에 들지 않습니다.
파일 시스템이 특정 폴더에있는 경우 특정 권한으로 새로 생성 된 파일과 디렉토리를 설정하기를 원합니다. 이것이 가능합니까?
업데이트 : 기본 ACL 기능을 사용하여 POSIX ACL 로 수행 할 수 있다고 생각 하지만 현재로서는 머리가 조금 이상합니다. 누구든지 기본 ACL을 사용하는 방법을 설명 할 수 있다면 아마도이 질문에 멋지게 대답 할 것입니다.
답변
올바른 소유권을 얻으려면 다음을 사용하여 디렉토리에서 그룹 setuid 비트를 설정할 수 있습니다.
chmod g+rwxs dirname
이렇게하면 디렉토리에 생성 된 파일이 그룹이 소유하게됩니다. 그런 다음 모든 사람이 umask 002 또는 007 또는 그 성격의 어떤 것으로 실행되는지 확인해야합니다. 이것이 Debian 및 기타 많은 Linux 시스템이 기본적으로 사용자 별 그룹으로 구성되는 이유입니다.
사용자의 umask가 너무 강한 경우 원하는 권한을 강제하는 방법을 모르겠습니다.
답변
최소한 Linux에서 기본 ACL을 사용하여 수행하는 방법은 다음과 같습니다.
먼저 파일 시스템에서 ACL 지원을 활성화해야 할 수 있습니다 . ext4를 사용하는 경우 이미 활성화되어 있습니다. 다른 파일 시스템 (예 : ext3)은 acl
옵션 으로 마운트해야합니다 . 이 경우 옵션을 /etc/fstab
. 예를 들어, 디렉토리가 루트 파일 시스템에있는 경우 :
/dev/mapper/qz-root / ext3 errors=remount-ro,acl 0 1
그런 다음 다시 마운트하십시오.
mount -oremount /
이제 다음 명령을 사용하여 기본 ACL을 설정합니다.
setfacl -dm u::rwx,g::rwx,o::r /shared/directory
의 모든 새 파일 /shared/directory
은 이제 원하는 권한 을 가져야합니다. 물론 파일을 만드는 응용 프로그램에 따라 다릅니다. 예를 들어, 대부분의 파일은 umask를 사용할 때와 마찬가지로 처음부터 누구도 실행할 수 없습니다 (open (2) 또는 creat (2) 호출에 대한 mode 인수에 따라 다름). 일부 유틸리티 좋아 cp
, tar
및 rsync
소스 파일 그룹에 쓰기 권한이 없습니다 인 경우 기본 ACL을 마스크 할 소스 파일 (들)의 권한을 유지하려고합니다.
도움이 되었기를 바랍니다!
답변
추악하지만 setfacl 명령을 사용하여 원하는 것을 정확하게 얻을 수 있습니다.
Solaris 시스템에는 사용자 및 그룹에 대한 acl이 포함 된 파일이 있습니다. 불행히도 모든 사용자를 나열해야합니다 (적어도이 작업을 수행 할 수있는 방법을 찾을 수 없습니다).
user::rwx
user:user_a:rwx
user:user_b:rwx
...
group::rwx
mask:rwx
other:r-x
default:user:user_a:rwx
default:user:user_b:rwx
....
default:group::rwx
default:user::rwx
default:mask:rwx
default:other:r-x
파일 이름을 acl.lst로 지정하고 user_X 대신 실제 사용자 이름을 입력합니다.
이제 다음 명령을 실행하여 디렉토리에 해당 acl을 설정할 수 있습니다.
setfacl -f acl.lst /your/dir/here
답변
쉘 스크립트 (또는 .bashrc
)에서 다음과 같은 것을 사용할 수 있습니다.
umask 022
umask
새로 생성 된 파일에 대한 파일 권한 설정 방법을 제어하는 마스크 설정을 결정하는 명령입니다.