기본 소유자를 "자동으로"설정하려면 다음 setuid
과 같은 디렉토리가 필요합니다 setgid
. 그러나 이것은 FreeBSD에서 구성 될 수 있지만 다른 UNIX 및 Linux 시스템은 무시 u+s
합니다. 그러나 귀하의 경우 다른 해결책이있을 수 있습니다.
내가 원하는 것은 사용자에게 그룹을 추가하여 공유 할 수있는 디렉토리를 갖는 것입니다. 이 디렉토리에서 생성 된 모든 것은 부모로부터 권한 체계를 상속합니다. 내가 시도하는 것보다 더 좋은 방법이 있다면 나는 모두 귀입니다.
따라서 기본적으로 그룹 메커니즘을 사용하여 디렉토리에 대한 액세스를 제어하려고합니다. 그러나 전체 디렉토리 구조에서 권한을 제한 할 필요는 없습니다. 실제로 디렉토리 --x
실행 비트는 필요한 것일 수 있습니다. 예를 들어 보겠습니다. 그것을 가정하면 ...
group_dir
디렉토리에 대한 액세스를 제어하는 그룹 은 ourgroup
입니다.
ourgroup
그룹의 사람들 만 액세스 할 수 있습니다 group_dir
.
user1
에 user2
속해 ourgroup
있습니다.
- 기본 umask는 0022입니다.
... 다음 설정을 고려하십시오.
drwxrws--- root:ourgroup |- group_dir/
drwxr-sr-x user1:ourgroup |---- group_dir/user1_submission/
drwxr-sr-x user2:ourgroup |---- group_dir/user2_submission/
-rw-r--r-- user2:ourgroup |-------- group_dir/user2_submission/README
여기서 모든 항목이 소유자에 의해 생성되었다고 가정합니다.
이제이 설정에서
- 의 모든 사용자가 모든 디렉토리를 자유롭게 탐색 할 수 있습니다
ourgroup
. 그룹의 모든 사용자는 파일을 생성, 이동, 삭제할 수 있습니다 group_dir
.
- 에없는 사람
ourgroup
은 (으)로 차단 group_dir
되어 그 아래의 어떤 것도 조작 할 수 없습니다. 예를 들어 user3
(의 멤버가 아닌 사람)는 파일 자체에 대한 권한 이 있어도 ourgroup
읽을 수 없습니다 .group_dir/user2_submission/README
r--
그러나이 경우 약간의 문제가 있습니다. 일반적인 umask로 인해 사용자가 만든 항목은 그룹의 다른 구성원이 조작 할 수 없습니다. 이것은 ACL이 들어오는 곳입니다. 기본 권한을 설정하면 umask 값에도 불구하고 모든 것이 제대로 작동하는지 확인할 수 있습니다.
$ setfacl -dRm u::rwX,g::rwX,o::0 group_dir/
이 호출은 다음을 설정합니다.
rw(x)
소유자의 기본 권한.
rw(x)
그룹의 기본 권한.
- 다른 사람에게는 기본적으로 권한이 없습니다. 부터하는 것으로 다른 사람이 액세스 할 수 없습니다
group_dir
어쨌든, 정말 자신의 권한 아래에 어떤 문제가되지 않습니다.
지금, 아이템 등을 작성하는 경우 user2
:
$ touch group_dir/user2_submission/AUTHORS
$ ls -l group_dir/user2_submission/AUTHORS
rw-rw---- user2:ourgroup group_dir/user2_submission/AUTHORS
이 ACL을 사용하여 이전 구조를 다시 빌드 할 수 있습니다.
drwxrws---+ root:ourgroup |- group_dir/
drwxrws---+ user1:ourgroup |---- group_dir/user1_submission/
drwxrws---+ user2:ourgroup |---- group_dir/user2_submission/
-rw-rw----+ user2:ourgroup |-------- group_dir/user2_submission/README
여기서도 각 항목은 소유자가 작성합니다.
또한 디렉토리를 사용하는 사람들에게 조금 더 많은 힘 / 보안을 제공하려면 끈적 끈적한 비트를 고려할 수 있습니다. 예를 들어, 권한 이 없기 때문에 user1
삭제 하지 못합니다 .user2_submission
-w-
group_dir
$ chmod +t group_dir/
이제, 의 디렉토리 user1
를 제거하려고하면 user2
, 그는 lovely하게 될 것 Operation not permitted
입니다. 그러나 이렇게하면에서 디렉토리 구조 수정을 방지 할 수 있지만 그 group_dir
아래의 파일 및 디렉토리에는 여전히 액세스 할 수 있습니다.
user1@host $ rm -r user2_submission
Operation not permitted
user1@host $ cat /dev/null > user2_submission/README
user1@host $ file user2_submission/README
user2_submission/README: empty (uh-oh)
고려해야 할 또 다른 사항은 우리가 사용한 ACL이 기본 권한을 설정한다는 것 입니다. 따라서 항목 소유자가 해당 항목과 관련된 권한을 변경할 수 있습니다. 예를 들어 user2
완벽하게 실행할 수 있습니다 ...
$ chown g= user2_submission/ -R
or
$ chgrp nobody user2_submission -R
... 그러므로 전체 제출 디렉토리를 그룹의 모든 사람이 사용할 수 없게합니다.
그러나 원래 rws
그룹의 모든 사용자 에게 모든 권한을 기꺼이 제공하기 때문에 이러한 사용자를 신뢰한다고 가정하고 악의적 인 작업이 너무 많을 것으로 예상하지 않습니다.