다른 사용자의 파일을 이동할 수 있는데 다른 사용자의 디렉터리를 이동할 수 없는 이유는 무엇입니까?

다른 사용자의 파일을 이동할 수 있는데 다른 사용자의 디렉터리를 이동할 수 없는 이유는 무엇입니까?

따르다다른 사용자의 질문나는 쉽게 합리화할 수 없는 특이한 Linux 파일 시스템 권한을 발견했습니다.

sudo mkdir ~/foo ~/foo/bar
sudo touch ~/baz
mkdir ~/my_dir
chown 700 ~/my_dir
# this is fine
mv ~/baz ~/my_dir
# renaming is fine
mv ~/foo ~/bob
# Moving caused: Permission denied
mv ~/bob ~/my_dir/

명확성을 위해 foo foo/bar baz루트가 소유합니다. my_dir내 사용자에게 속하며 물론 ~내 사용자에게도 속합니다. 이름을 바꿀 수 있고이동하다다른 사용자가 소유한 파일입니다. 다른 사용자가 소유한 디렉터리의 이름을 바꿀 수 있지만 변경할 수는 없습니다.이동하다다른 사용자가 소유한 디렉터리입니다.

이는 매우 구체적인 제한사항인 것 같으며 어떤 위험이 예방되고 있는지 또는 기본 메커니즘이 이 방식으로만 작동할 수 있다는 것을 의미하는지 이해하지 못합니다.

다른 사용자의 디렉터리를 이동할 수 없는 이유는 무엇입니까?

답변1

이런 상황 중 하나에요녹음된다음으로 이어진다 EACCES:

oldpath쓰기 권한을 허용하지 않는 디렉터리입니다( .. 항목 업데이트 필요).

내부적으로 쓸 수는 없습니다 . 즉 , 새 값을 가리키도록 bob업데이트할 수 없다는 뜻입니다 .bob/..my_dir

파일 이동에는 쓰기가 포함되지 않지만 디렉터리 이동에는 쓰기가 포함됩니다.

관련 정보