루트가 아닌 사용자에게 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의 홈 디렉토리에 대한 전체(rwx) 액세스 권한을 갖는 그룹(SK001778)에 속하지 않는다는 문제입니다.

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

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

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

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

[michael@machine mark]$ touch michael

mark는 자신의 홈 디렉토리에 대한 그룹 소유권을 다시 변경할 수 없습니다(이에 따라 루트만 chown을 발행할 수 있다는 것을 기억하십시오:왜 일반 사용자-chown-a-파일을 사용할 수 없나요?):

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

내 질문은: 마크가 si일 때에도 자신의 집 디렉토리의 그룹 소유권을 변경할 수 있었던 방법은 무엇입니까?선언하다해당 chown은 루트에서만 실행할 수 있습니다. 상자는 RedHat 5.6입니다.

답변1

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

chown와 명령 모두 소유자와 그룹을 모두 변경할 수 있는 chgrp동일한 기본 syscall을 사용하기 때문에 그렇게 작동합니다 . chownsyscall은 권한 확인을 적용하는 것입니다. 명령 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

관련 정보