
chown(2)에서:
권한이 있는 프로세스(Linux: CAP_CHOWN 기능이 있는 프로세스)만 파일 소유자를 변경할 수 있습니다. 파일 소유자는 파일 그룹을 해당 소유자가 구성원으로 속한 그룹으로 변경할 수 있습니다. 권한이 있는 프로세스(Linux: CAP_CHOWN 포함)는 그룹을 임의로 변경할 수 있습니다.
이 제한의 이유는 무엇입니까? 권한이 없는 사용자가 자신이 소유한 파일의 소유권을 변경할 수 없는 이유는 무엇입니까(예: /etc/shadow 없음)?
$ touch blah
$ chown root:root blah
chown: changing ownership of `blah': Operation not permitted
답변1
사용자가 파일을 "제공"하도록 허용하면 OS의 다양한 기능에 위배됩니다. 와 같은:
Taking up another user's disk quota.
Impersonating another user (or even root) via setuid.
Having insufficient privileges to undo a mistaken chown.
Making it appear that someone else had created a given file.
Setting up cron jobs to run on other user's accounts.
And many more...
답변2
이를 허용하지 않는 것은 Linux 디자이너의 개인적인 선택일 뿐입니다. 모든 의사 보안상의 이유입니다.주어진, 이를 허용하는 유닉스 시스템이 있기 때문에 그럴듯합니다.
내 생각에 이 기능은 유닉스의 동작이 'System-V'(AT&T)를 따르느냐 아니면 버클리의 유닉스(BSD)를 따르느냐에 달려 있다고 생각합니다...
언급된 다른 보안 문제에 대해서는 다음과 같습니다.
setuid를 통해 다른 사용자(또는 루트)를 가장합니다.
문제 없음: '소유자'를 변경하면 모든 'setXid' 비트(U/G)가 지워집니다.
잘못된 chown을 실행 취소할 수 있는 권한이 충분하지 않음
실제로 '보안 위험'은 아니지만 사용자 변경을 허용하는 시스템에 있을 수 있습니다. 자신이 소유한 디렉토리에 있으면 다시 변경할 수 있습니다. 그렇지 않으면 '조심하세요'!
다른 사람이 특정 파일을 생성한 것처럼 보이게 합니다.
그것은 여전히 당신이 쓸 수 있는 디렉토리에 있을 것입니다. 즉, 그룹이나 전체(또는 특히 ACL을 사용할 수 있는 경우)에 쓰기 위해 열어 두지 않는 한 홈 디렉터리로 이동할 수 없습니다.
다른 사용자의 계정에서 실행되도록 크론 작업을 설정합니다.
다시 말하지만, 작동하지 않습니다. crondir은 사용자가 소유하고 심지어 설정되지 않았기 때문입니다.읽을 수 있는쓰기는 물론이고 다른 사용자에 의해서도 가능합니다.
누구든지 소유권을 변경할 수 있다면 누구든지 시스템의 모든 파일에 액세스할 수 있는 권한을 변경할 수 있습니다.
아니요: 사용자가 해당 파일이 포함된 디렉터리를 '소유'하는 경우에만 가능합니다. 즉, 'passwd'라는 파일을 루트에 제공할 수 있지만 /etc/에 대한 쓰기 권한이 없으면 해당 파일을 /etc/로 이동할 수 없습니다.
할당량
잠재적으로 유효한 요점 -만약에할당량을 사용하지만 홈 디렉토리로 디스크 공간을 합산하면 쉽게 감지할 수 있을 것 같습니다. 유일한 문제는 여러 사용자가 쓸 수 있는 디렉토리에 있습니다. 그렇다면 해당 'dir'의 소유자가 갈 수도 있습니다. 그것5월파일 '제공'을 지원하는 시스템의 경우, 자신이 '소유한' 디렉토리에서만 이 작업을 수행할 수 있지만 실제로 이를 허용하는 시스템을 사용한 지 오래되었으므로 그렇게 하지 않습니다. 정확한 제한사항이 기억나지 않습니다.
'파일 제공'을 허용하는 데 약간의 '절충'이 있었던 것을 기억하는 것 같습니다... 예를 들어 이를 허용하는 시스템에서는 Linux가 허용하는 다른 것이 허용되지 않았지만 그게 무엇인지 기억할 수 없습니다. 손...
위의 '답변'은 실제 답변이 아니기 때문에 답변 표시를 해제해야 한다고 말하고 싶습니다. IT는 디자인 결정에 가깝습니다. 트레이드오프가 무엇인지 모르겠습니다.
위에 제기되지 않은 보안 문제가 있을 수 있지만 위의 문제는 유효하지 않습니다.
IMO에서는 "/proc"에서 시스템 설정 가능한 '값'이어야 하지만 일반적으로 말하면 대부분의 사람들은 그다지 신경 쓰지 않는 것 같습니다.
이에 대한 강력한 필요성이 있는 경우 'chown'은 보안을 강화하고 이를 허용하도록 수정한 다음 setuid 'root'를 사용하여 이러한 정책을 구현할 수 있도록 설정할 수 있습니다.
답변3
글쎄, 누구든지 소유권을 변경할 수 있다면 누구든지 시스템의 모든 파일에 액세스할 수 있는 권한을 변경할 수 있습니다. 이는 맬웨어 관점(sudo 필요 없음)뿐만 아니라 시스템 관리자의 관점에서도 좋지 않습니다. 사용자 중 누군가가 파일을 변경할 수 있다면 파일 권한은 쓸모가 없습니다.
답변4
그러면 사용자가 파일 시스템 할당량을 회피할 수 있기 때문입니다. 내 할당량이 100MB이고 귀하의 할당량이 100MB라면 내가 100MB를 업로드하고 chmod a+r을 적용한 다음 100MB를 더 업로드할 수 있습니다.