사용이것유용한 게시물 폴더에 기본 그룹 및 파일 권한을 설정할 수 있습니다.
기본 소유자(팀리드 uid 1234)를 설정하는 데 문제가 있습니다.
setfacl -d -m g::rwx /my/test/folder
setfacl -d -m o::rx /my/test/folder
getfacl /my/test/folder
# file: /my/test/folder
# owner: teamlead
# group: web_prod
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x
그런 다음 즉시:
[mary@boxen]# touch /my/test/folder/somefile
[mary@boxen]# ll /my/test/folder/somefile
-rw-rw-r--. 1 mary web_prod 0 Nov 6 08:58 somefile
따라서 올바른 그룹이 할당되지만 새 파일은 해당 파일을 만든 사용자의 소유권을 갖습니다. 새로 생성된 파일에 teamlead:web_prod 소유자/그룹이 포함되기를 원합니다.
setfacl
기본 사용자 설정에도 효과가 있는 것 같습니다 . 기존 폴더 acl 구성 사용(위):
[mary@boxen]# setfacl -d -m u:1234:rwx /my/test/folder
이제 다른 사용자로 파일을 생성하십시오. teamlead:web_prod의 소유권을 갖고 싶습니다.
[mary@boxen]# touch /my/test/folder/anotherfile
[mary@boxen]# ll /my/test/folder/anotherfile
-rw-rw-r--+ 1 mary web_prod 0 Nov 6 08:58 somefile
새 파일에는 uid 1234(팀 리더)가 아닌 해당 파일을 만든 소유자의 소유권이 있습니다.
내가 추구하는 것이 가능한 것입니까, 아니면 이 문제에 접근하는 방식이 잘못된 것입니까?
답변1
setfacl을 사용하면 새로 생성된 파일에 대한 기본 권한을 설정할 수 있지만 기본 소유자/그룹은 설정할 수 없습니다.
특정 사용자가 소유한 새 파일을 만들려면 디렉토리의 setgid 비트처럼 작동하는 setuid 비트가 필요합니다. 아쉽게도 이는 구현되지 않았습니다.
setfacl을 사용하면 대부분의 경우 거의 동일한 작업을 수행할 수 있습니다. 예를 들어 ACL을 설정할 수 있습니다 default:user:teamlead:rwx
(예: setfacl -d -m u:teamlead:rwx foo
). 이렇게 하면 다른 사람이 파일을 소유하더라도 지정된 사용자가 새 파일에 쓸 수 있습니다.
답변2
파일을 생성한 프로세스가 실행 중인 사용자에게 속한 새 파일이 항상 생성됩니다. (정확히 말하면 유효 사용자 ID입니다.) 사용자가 다른 사용자에게 속한 파일을 생성하도록 허용하면 다음과 유사한 보안 취약점이 발생하므로 변경할 수 없습니다.루트가 아닌 사용자가 파일을 유출하도록 허용.
무엇을 하고 싶어도 이 작업을 수행할 필요는 없습니다. ACL은 나중에 파일을 읽어야 하는 사람이 충분한 권한을 갖도록 보장하는 데 충분합니다. 파일을 생성한 사용자의 소유로 파일을 남겨둡니다.
답변3
새 그룹을 사용하여 새 파일을 생성하려면 기본 그룹을 변경해야 합니다.
이를 위해 다음을 사용할 수 있습니다.사용자 모드그리고 매개변수 -g
-g, --gid GROUP The group name or number of the user's new initial login group. The group must exist. Any file from the user's home directory owned by the previous primary group of the user will be owned by this new group. The group ownership of files outside of the user's home directory must be fixed manually.
예를 들어
test2@kinakuta:/tmp$ id
uid=1002(test2) gid=1002(test2) grupos=1002(test2),1003(testgroup)
test2@kinakuta:/tmp$ touch test2
test2@kinakuta:/tmp$ ls -la test2
-rw-r--r-- 1 test2 test2 0 nov 23 22:26 test2
root@kinakuta:/tmp# usermod -g testgroup test2
root@kinakuta:/tmp# su test2
test2@kinakuta:/tmp$ touch test2_1
test2@kinakuta:/tmp$ ls -la test2_1
-rw-r--r-- 1 test2 testgroup 0 nov 23 22:27 test2_1
답변4
Linux에서는 파일 그룹을 상속하려면 상위 디렉터리에 sgid가 있어야 합니다. (BSD 시스템의 디렉토리에는 sgid가 필요하지 않지만)