디렉터리에 있는 파일의 이름을 바꾸려면 실행 권한이 필요한 이유는 무엇입니까?

디렉터리에 있는 파일의 이름을 바꾸려면 실행 권한이 필요한 이유는 무엇입니까?

내가 디렉토리의 소유자이고 읽기 및 쓰기 권한은 있지만 실행 권한은 없다고 가정합니다. 디렉토리 구조는 다음과 같습니다.

x/           (drw-r--r--)
    y        (-rw-r--r--)
    z        (-rw-r--r--)

실행 권한이 없으면 디렉터리에 액세스할 수 없다는 것을 알고 있지만 cd디렉터리에서 파일 이름을 바꾸는 것은 디렉터리에 "쓰기"로 간주될 것이라고 생각했습니다. 놀랍게도 다음 명령은 권한 거부를 제공합니다.

mv x/y x/w

mv디렉토리에 대한 실행 권한이 필요한 이유 는 무엇 입니까 x? 이 명령 mv에 특별한 것이 있나요 ? 내부 mv용 인가요 cd? 아니면 무엇인가요?

답변1

읽고 나서이 답변관련 질문에 대해서는 이해한다고 생각합니다.

디렉터리는 파일 목록이며, 해당 디렉터리를 "실행"한다는 것은 디렉터리 목록에 있는 파일 자체의 링크를 따라가는 것을 의미합니다. 따라서 실행 권한이 없기 때문에 x명령의 x/y실제 파일 경로를 구문 분석할 수 없습니다. (실제 파일을 얻으려면 의 디렉토리 항목을 따라야 하는데, 이는 "실행"이라는 의미의 일부입니다.)ymv x/y x/wyyxx

그러나 사용자에게 실행 권한은 부여하고 쓰기 권한은 부여하지 않으면 다음과 같이 x파일을 내부에서 x외부로 복사할 수 있습니다.x

chmod u+x-w x
cp x/y y

관련 정보