chown은 루트가 아닌 사용자도 사용할 수 있도록 허용하는 것 같습니다.

chown은 루트가 아닌 사용자도 사용할 수 있도록 허용하는 것 같습니다.

저희 회사에서는 LDAP 인증을 사용하고 있는데 제가 잘 모르는 부분이 있을 수도 있어 아래와 같은 질문이 나올 수 있습니다. 명령이 이상하게 동작하는 것으로 나타났는데 chown이것이 정상적인 것인지는 알 수 없습니다. 내 시나리오는 다음과 같습니다.

사용자 태그의 GID는 SK001936이고 태그 홈 디렉터리의 소유자 그룹은 SK001778입니다. 그룹 SK001778이 다음을 사용하여 사용자의 태그가 지정된 홈 디렉터리를 소유자(태그)로 사용하여 모든 작업(rwx)을 수행하도록 허용합니다.

[mark@machine ~]$ id
uid=48447(mark) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)
[mark@machine ~]$ ls -lad .
drwxrwxr-x   6 mark SK001778  4096 Oct 10 13:30 .

사용자 michael과 mark의 GID는 모두 SK001936입니다.

[michael@machine mark]$ id
uid=40570(michael) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)
[mark@machine ~]$ id
uid=48447(mark) gid=41795(SK001936) groups=40119(SUB_SK001936_PPS),41795(SK001936)

사용자 michael은 사용자 mark의 홈 디렉터리에 파일을 만들 수 없습니다. 문제는 michael이 mark의 홈 디렉터리(SK001778)에 대한 전체(rwx) 액세스 권한을 가진 그룹에 속하지 않는다는 것입니다.

[michael@machine mark]$ touch michael
touch: cannot touch `michael': Permission denied

일반적으로 사용자가 파일의 소유자라도 chown을 실행할 수 없습니다. 그러나 이 예에서 홈 디렉터리의 소유자(태그)는 자신의 홈 디렉터리의 소유자 그룹을 변경할 수 있습니다(따라서 해당 그룹에 속한 사용자가 자신의 홈 디렉터리에 액세스할 수 있음).

[mark@machine ~]$ chown mark:SK001936 .

이제 mark의 홈 디렉터리에 액세스할 수 있는 그룹은 michael의 GID와 동일한 그룹이므로 michael은 이제 mark의 홈 디렉터리에서 파일/폴더를 생성/삭제할 수 있습니다.

[michael@machine mark]$ touch michael

홈 디렉터리로 다시 변경할 수 없는 그룹 소유권을 표시합니다. 루트만 다음을 사용하여 chown할 수 있다는 점을 기억하세요.일반 사용자가 파일을 chown할 수 없는 이유는 무엇입니까?):

[mark@machine ~]$ chown mark:SK001778 .
chown: changing ownership of `.': Operation not permitted

내 질문은: Mark가 어떻게 자신의 홈 디렉토리에 대한 그룹 소유권을 변경할 수 있는지입니다.발표하다이 chown은 루트에서만 실행할 수 있습니다. 상자는 RedHat 5.6입니다.

답변1

그룹만 변경하는 방식으로 사용할 chown때와 동일하게 작동합니다 chgrp. 파일이나 디렉토리의 소유자는 그룹을 자신이 속한 그룹으로 변경할 수 있습니다.

chown및 명령이 모두 소유자와 그룹을 변경할 수 있는 chgrp동일한 기본 시스템 호출을 사용하기 때문에 이와 같이 작동합니다 . chown시스템 호출은 애플리케이션 권한을 확인합니다. chown명령과 명령의 유일한 차이점은 chgrp변경 사항을 지정하는 데 사용되는 구문입니다.

Mark는 SK001778 그룹의 구성원이 아니기 때문에(그리고 루트가 아니며 그룹 멤버십 대상이 아니기 때문에) 그룹을 다시 SK001778로 변경할 수 없습니다.

답변2

사용자는 이 그룹 중 하나에 속한다고 가정하고 이를 사용하여 그룹을 변경할 수 있습니다.

내가 다음 그룹에 속해 있다고 가정해 보겠습니다.

$ groups
saml vboxusers jupiter newgrp

파일이 있습니다:

$ ls -l | grep afile
-rw-rw-r--   1 saml saml        0 Oct 10 11:29 afile

그래서 해당 파일의 그룹을 다음과 같이 변경했습니다. L

$ chown saml.newgrp afile 

$ ls -l | grep afile
-rw-rw-r--   1 saml newgrp        0 Oct 10 11:29 afile

chown다음과 같이 사용할 수도 있습니다 .

$ chown .saml afile 

$ ls -l|grep afile
-rw-rw-r--   1 saml saml        0 Oct 10 11:29 afile

관련 정보