디렉토리의 파일에 대한 기본 사용자 이름 및 그룹 설정 갖도록 새로 만든 파일을

유용한 게시물을 사용 하여 폴더에서 기본 그룹 및 파일 권한을 설정할 수 있습니다.

기본 소유자를 설정하는 데 문제가 있습니다 (teamlead 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 owner / group을 갖도록 새로 만든 파일을 원합니다.

그 표시 setfacl도 기본 사용자를 설정하는 데 사용할 수 있습니다. 기존 폴더 acl config (위)에서 :

[mary@boxen]# setfacl -d -m u:1234:rwx /my/test/folder

이제 다른 사용자로 파일을 작성하십시오. weblead 소유권이 팀 리더가 될 것으로 기대합니다.

[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 (teamlead)가 아니라 파일을 작성하는 소유자의 소유권을 갖습니다.

내가 할 수있는 일이 있습니까? 아니면 내가 잘못 가고있는 방법입니까?



답변

setfacl을 사용하면 기본 권한을 설정할 수 있지만 새로 작성된 파일의 기본 소유자 / 그룹은 설정할 수 없습니다.

특정 사용자가 새 파일을 소유하려면 디렉토리의 setgid 비트처럼 작동하는 setuid 비트가 필요합니다. 불행히도 그것은 구현되지 않았습니다.

setfacl을 사용하면 대부분의 시나리오에서 거의 동등한 작업을 수행 할 수 있습니다 default:user:teamlead:rwx. ACL을 다음과 같이 설정할 수 있습니다 . 그렇게하면 다른 사람이 소유하더라도 명명 된 사용자가 새 파일을 작성할 수 있습니다.


답변

파일을 작성하는 프로세스가 실행중인 사용자에게 항상 새 파일이 작성됩니다. (유효한 사용자 ID는 정확합니다.) 사용자가 다른 사용자에게 속한 파일을 만들 수있게하는 것은 루트가 아닌 사용자가 파일을 제공하는 것과 비슷한 보안상의 허점이되기 때문에 변경할 수 없습니다 .

무엇을하려고하더라도이 작업을 수행 할 필요가 없습니다. ACL은 나중에 파일을 읽는 데 필요한 모든 것이 충분한 권한을 갖도록하기에 충분합니다. 파일을 작성한 사용자가 소유 한 파일을 그대로 두십시오.


답변

새 파일을 사용하여 새 파일을 만들려면 기본 그룹을 변경해야합니다.

이를 위해 usermod 및 -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

답변

Linux에서는 파일 그룹을 상속하려면 parent dir에서 sgid해야합니다. (BSD 시스템의 디렉토리에는 sgid가 필요하지 않지만)