디렉토리에 대한 쓰기 전용 권한은 그 안에 있는 파일의 이름 바꾸기(이동)를 허용하지 않습니까?

디렉토리에 대한 쓰기 전용 권한은 그 안에 있는 파일의 이름 바꾸기(이동)를 허용하지 않습니까?

사실 저는 "디렉토리에 대한 쓰기 권한으로 정확히 무엇을 할 수 있나요?"라는 좀 더 일반적인 질문을 묻고 싶었습니다. 하지만 구체적인 예를 들어 이 문제를 다루겠습니다.

급한 경우 질문이 길어집니다.굵은 글씨로 읽기- 주요 부분을 가려야 합니다.

다양한 소스(좋은 질문,하나 더,그리마울의) 디렉토리 권한에 대해 다음과 같이 말합니다.

r, read - 디렉토리 내용 읽기(내부 파일 이름)

w, 쓰기 - 디렉토리의 속성(예: 수정 시간)을 변경하고 디렉토리에 항목을 생성/이름 바꾸기/삭제합니다.

x, 검색 - 내부의 파일에 액세스하려면 파일의 인덱스 노드에 액세스할 수 있으므로 실제 콘텐츠에 접근할 수 있습니다.

내 문제는 설명에 있습니다 w. 어떤 디렉터리 속성에 액세스할 수 있나요?쓰기 전용 권한이 있는 디렉터리에서는 파일을 생성/이름 바꾸기/삭제할 수 없습니다.:디렉토리( tdir/)를 생성하고 그 안에 파일( )을 생성했습니다. afile,,,,, chmod -x-r tdir/-- 디렉토리에 대한 권한도 설정하지 않으면 권한이 거부되어 모두 실패했습니다.mv tdir/afile tdir/afrm tdir/afiletouch tdir/newfilex

이것만으로는 x디렉토리 내에서 파일을 생성/이름 바꾸기/삭제할 수 있는 권한이 부여되지 않습니다.

이를 위해서는 다음이 필요합니다 x.w.

그러나 touch tdir디렉토리의 수정 시간은 변경 됩니다 w.

질문에 맞게 위 소스를 이런 식으로 바꾸겠습니다. 디렉토리를 사용하면 r파일 이름을 볼 수 있지만 실제 파일(inode)은 x파일의 inode에 대한 액세스를 제공하지 않습니다(즉, 해당 권한을 볼 수 있음을 의미). , 이를 통해 콘텐츠에 액세스할 수 있지만 여전히 디렉터리의 어떤 것도 변경할 수 없습니다. 디렉터리는 실제로 일종의 파일이므로 그 안의 내용을 변경하려면 권한이 필요합니다 w.

따라서 디렉터리의 내용을 변경하려면 w권한이 필요합니다. 변경 사항에 디렉터리에 있는 파일의 inode가 필요한 경우 x그것도 필요합니다.

다음을 사용하여 디렉토리의 파일을 삭제할 수 없는 이유를 설명합니다 w.파일을 삭제할 때 inode의 링크 수를 1씩 줄여야 합니다. inode를 알아야 합니다. 따라서 x디렉터리가 필요합니다..

그런데 왜 x파일을 생성하고(inode를 노출하지 않고 파일을 생성하도록 시스템에 요청할 수 있습니까?) 파일 이름을 바꾸거나 이동해야 합니다(파일을 이동할 때 어떤 식으로든 변경하지 않고 레코드만 변경합니다). 디렉토리 내부 및 해당 inode 수?)?

어쩌면 이것은 단지 구현 일일까요? 즉, 파일 이름을 바꾸거나 생성하는 데 실제로 inode가 필요하지 않습니다. 파일 이름과 w권한만 필요하지만 inode와 파일 이름은 디렉터리의 레코드를 구성하므로 파일 이름 변경 = 레코드 변경 = 액세스 방법 아이노드.

그렇다면 디렉토리에는 수정 시간, 권한, 파일 기록 외에 어떤 다른 속성이 있습니까? 디렉토리에서 변경할 수 있는 다른 항목은 무엇입니까 w?

답변1

일부 콘텐츠의 경우 w 권한이 필요합니다.

예.

그런데 파일을 생성하고(시스템에 inode를 노출하지 않고 파일을 생성하도록 요청할 수 있습니까?) 파일 이름을 바꾸거나 이동하는 데(파일을 이동할 때 어떤 식으로든 변경하지 않고 파일 이름만 변경하기 위해 x가 필요한 이유는 무엇입니까?) 디렉토리 내부와 해당 inode 수를 기록합니까?

그렇지 않은 경우 x디렉토리 자체에만 영향을 미칠 수 있습니다. 외부에서 디렉토리를 볼 수 있습니다. 그렇지 않은 경우 x디렉토리 항목은 사용자 범위를 벗어나게 됩니다. 디렉토리의 항목을 추가, 삭제 또는 수정(예: 이름 바꾸기)하려면 해당 항목에 액세스할 수 있어야 합니다.

파일의 권한에 따라 파일 내용으로 수행할 수 있는 작업이 결정됩니다. 디렉토리 항목은 디렉토리의 내용이기 때문에 디렉토리 권한에 따라 파일의 디렉토리 항목으로 수행할 수 있는 작업이 결정됩니다.

디렉토리에 대한 쓰기 권한을 사용하면 항목을 생성하고 삭제할 수 있습니다. 이름 바꾸기는 하나의 항목을 원자적으로 생성하고 다른 항목을 삭제하는 것으로 간주됩니다. 그렇지 않으면 디렉터리는 일반 파일과 동일한 메타데이터를 갖습니다. 쓰기 권한을 사용하면 디렉터리의 마지막 수정 및 마지막 액세스 타임스탬프를 변경할 수도 있습니다. 디렉터리의 권한, 그룹 소유권 또는 액세스 제어 목록(지원되는 경우)을 변경하려면 해당 목록이 있어야 합니다. 사용자 소유권을 변경하려면 대부분의 UNIX 변형에는 루트가 필요합니다.

관련 정보