사용자 A와 사용자 B에게 루트 권한이 없다고 가정합니다. 가정:
X
사용자 A는 권한 777을 사용하여 디렉터리를 만듭니다 .- 그런 다음 사용자 B는 755 권한을 가진 디렉터리를 만듭니다
X/Y
. - 그런 다음 사용자 B는
X/Y/troll
755 권한을 가진 파일을 만듭니다.
사용자 A가 다음 명령을 실행하려고 하면 올바른 동작은 무엇입니까?
rm -rf X/Y
"트롤" 파일은 어떻습니까? 방금 내 컴퓨터에서 테스트했는데, 사용자 A는 사용자 B의 파일을 삭제할 수 없습니다. 맞습니까?
그렇다면 사용자 B가 A의 디렉터리에 A가 삭제할 수 없는 매우 큰 파일을 생성하여 A의 할당량을 초과할 수 있다는 의미입니까?
답변1
예, 이는 예상된 동작이며 지적한 대로 다른 사용자에게 자신의 디렉터리에 대한 쓰기 권한을 부여한 다른 사용자를 속이는 데 사용될 수 있습니다. 올바르게 표시된 것처럼 "트롤" 사용자가 콘텐츠와 함께 생성한 쓰기 권한이 없는 디렉터리는 해당 사용자와 루트만 삭제할 수 있습니다.
비어 있지 않은 디렉터리는 삭제할 수 없고, 다른 사용자의 디렉터리를 허가 없이 수정할 수 없기 때문입니다.
일반적으로 이로 인해 리소스 제한 문제가 발생하지 않습니다.(할당량) 일반적으로 디렉터리 위치가 아닌 파일 소유권을 기준으로 계산되기 때문입니다.이것chown
이것이 일반 사용자가 자신의 파일을 다른 사용자에게 제공할 수 없는 이유 중 하나입니다. 그렇지 않으면 chown
파일 삭제 권한이 없는 사용자에게 파일을 전달할 수 있습니다 .
이를 사용하여 할당량을 제어하는 방법도 있습니다.X
: 사용자 B가 파일을 추가한 후 사용자 A가 권한을 변경하는 경우 :
chmod 700 X
사용자 B는 파일을 삭제할 수 없습니다. 파일에 대한 하드 링크가 없으면 해당 파일을 보거나 다시 쓸 수도 없습니다. 디렉터리를 이동할 수는 없지만 상위 디렉터리에 대한 쓰기 권한이 있으면 다른 사용자의 파일을 이동할 수 있습니다. 따라서 세계적으로 쓰기 가능한 디렉토리는 일반적으로 현명하지 않습니다.
대조적으로, Linux에서는 파일을 다른 사용자에게 전달할 때 항상 파일을 자신의 디렉토리에 보관하고 읽기 권한을 부여하십시오. 다른 사용자는 귀하나 다른 사용자에게 위험을 끼치지 않고 스스로 파일을 복사할 수 있습니다.
거의 모든 경우에 이러한 유형의 행동에 대한 대답은 트롤링 사용자에게 중지를 정중하게 요청한 다음 사용자가 그렇지 않은 경우 시스템 관리자에게 신고하는 것입니다..
답변2
스틱 비트나 ACL, 파일 기능 등과 같은 다른 멋진 기능이 없다고 가정합니다.
A는 Y에 쓸 수 없으므로 A는 트롤 파일의 링크를 해제할 수 없으며 Y는 비어 있지 않으므로 삭제할 수 없으며 궁극적으로 아무 일도 일어나지 않습니다.
FSUID=A인 프로세스가 B를 소유한 파일의 링크를 해제할 수 있는지 여부는 여러 조건에 따라 달라집니다. 항상 사용자 이름에 대해 이야기하기보다는 프로세스의 자격 증명에 집중하세요.
마지막 질문에도 마찬가지입니다. Linux에는 정말 많은 부가 기능이 있습니다. 그 중 일부를 수행할 권한이 있습니까? 조건에 따라 많이 달라지네요...