저희 회사에서는 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