내가 가지고 있다고 가정 해 봅시다 :
user1111
ID를 가진 사용자1111
user2222
ID를 가진 사용자2222
- 위 두 사용자가 속한
group3333
ID를 가진 그룹3333
내가 만든다:
user1111
, 폴더 포함a
user1111
, 파일 로a/b
user2222
, 파일 로a/c
폴더와 두 파일 모두 777 권한을 갖습니다.
$ stat --printf='%a %u %g %n\n' a a/b a/c
777 1111 1111 a
777 1111 3333 a/b
777 2222 3333 a/c
이것을 허용하지 않는다는 의미는 다음과 같습니다 user1111
.
user1111$ chown -v 2222 a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111 to 2222
즉, 사용자가 이 작업을 수행하도록 허용하지 않아도 괜찮습니다.분배하다소유권은 다른 사용자에게 있습니다.
이것이 왜 허용되지 않는지 이해가 되지 않습니다.
user2222$ chown -v 2222 a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111 to 2222
즉, 사용자가 할 수 없는 이유가져가다다른 사용자의 소유권?
@binarysta에서 더 많은 정보를 추가하도록 편집되었습니다.
user1111$ chown -v user2222: a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111:group3333 to user2222:group2222
user1111$ chown -v user2222:group3333 a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111:group3333 to user2222:group3333
user2222$ chown -v user2222: a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111:group3333 to user2222:group2222
user2222$ chown -v user2222:group3333 a/b
chown: changing ownership of 'a/b': Operation not permitted
failed to change ownership of 'a/b' from user1111:group3333 to user2222:group3333
답변1
루트만이 파일의 소유자를 변경할 수 있습니다. 소유자는 명령을 실행하는
root
데 사용되거나 사용되지 않는 한 소유권을 이전할 수 없습니다.sudo
파일 소유자는 파일이 속한 그룹을 변경할 수 있습니다(파일 소유자가 해당 그룹에 속한 경우). 파일 그룹은
root
어떤 그룹으로든 변경할 수 있습니다. 소유자가 아닌 소유 그룹의 구성원은 파일의 소유 그룹을 변경할 수 없습니다.
setuid: 실행 파일에 대해 setuid 권한이 설정되면 사용자는 사용자와 일치하는 액세스 수준으로 프로그램을 실행할 수 있습니다.파일을 소유하다.
권한이 없는 사용자를 사용하여 파일의 소유권을 변경할 수 있으면 다음과 같은 여러 가지 보안 문제가 발생할 수 있습니다.
- 사용자는 실행 가능한 스크립트의 uid를 설정한 다음 소유권을 루트로 변경할 수 있습니다. 이 경우 스크립트는 루트 권한으로 실행됩니다.
- 소유권을 변경하면 실제로 파일을 만든 사람을 추적하는 것이 불가능해집니다.
- 각 사용자에 대해 할당량이 정의된 경우 디스크 할당량 문제가 발생할 수 있습니다.
- 파일 소유자만 권한/메타데이터를 변경할 수 있습니다(
chmod
).
답변2
root
이 기능이 있는 프로세스 만 CAP_CHOWN
파일 소유자를 변경할 수 있습니다(참고자료 참조 man capabilities
).
그러나 ACL을 사용하여 특정 사용자나 그룹에 대한 특별한 권한을 설정할 수 있습니다(참고자료 참조 man setfacl
).
NFSv4 ACL을 사용하면 소유자가 아닌 사용자나 그룹에 ACL을 변경할 수 있는 권한을 부여할 수도 있습니다(일반적으로 루트, 파일 소유자 및 프로세스로 제한됨 CAP_FOWNER
). 를 참조하세요 man nfs4_acl
.