디렉토리의 파일에 대한 기본 사용자 이름 및 그룹 설정


13

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

기본 소유자를 설정하는 데 문제가 있습니다 (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)가 아니라 파일을 작성하는 소유자의 소유권을 갖습니다.

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

답변:


18

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

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

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


'default : user : teamlead : rwx'를 '/ foo'디렉토리에 적용하는 명령으로이 답변을 업데이트하십시오.
user319862

10

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

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


"ACL은 나중에 파일을 읽는 데 필요한 모든 것이 충분한 권한을 갖도록하기에 충분합니다." 그릇된. 새 파일 그룹이 사용자의 기본 그룹이됩니다. 공동 작업하는 사용자가 다른 기본 그룹을 가지고 있으면 서로의 파일에 액세스 할 수 없습니다. 상위 폴더의 그룹을 모든 하위 폴더에 "고착"시키려면 setgid가 필요합니다.
bviktor

@bviktor ACL을 사용하여 동일한 효과를 얻을 수 있습니다.
Gilles 'SO- 악마 그만해'

ACL을 사용하여 새 파일의 소유자 및 그룹을 어떻게 지정합니까?
bviktor

@bviktor 소유자는 파일을 만드는 사람이며 변경되지 않습니다. 기존 권한에서 파일을 소유 한 그룹은 관련이 없습니다. 새 파일의 ACL은 디렉토리의 기본 ACL이며, 새 파일의 소유 그룹이 BSD 시맨틱 ( g+s)을 가진 디렉토리의 소유 그룹과 같은 방식입니다 .
Gilles 'SO- 악마 그만해'

@ 질. 새 파일 그룹은 상위 폴더 그룹이 아닌 작성자 사용자의 "초기 로그인 그룹"이됩니다. 설명하는 동작 (즉, 새 파일은 부모 디렉토리의 그룹을 가져옴)은 부모에 대해 setgid를 설정해야합니다. 사용자가 공동 작업 할 때 그룹이 다르면 서로의 파일에 액세스 할 수 없기 때문에 그룹은 매우 관련이 있습니다. 파일을 세계적으로 액세스 할 수 없다면 정확히 좋은 아이디어는 아닙니다.
bviktor

1

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

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

0

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


문제는 새로 만든 파일에 소유권을 할당하는 것입니다. 그룹이 이미 올바르게 할당되었습니다.
코더
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.