chattr +i /testdir
다음을 통해 디렉터리 속성을 변경할 수 없도록 변경했지만 해당 디렉터리에 파일을 만들어야 합니다.
아니면 누구도 디렉토리를 삭제할 수 없지만 소유자는 여전히 디렉토리에 쓸 수 있도록 하는 방법이 있습니까?
답변1
필요한 것을 얻는 방법은 다음과 같습니다.
chattr +a /testdir
소유자만 쓰기 액세스 권한을 갖도록 디렉터리 자체에 대한 권한을 설정합니다.
이 a
스위치를 사용하면 내부적으로 파일을 생성하고 수정할 수 있지만 삭제할 수는 없습니다.
페이지 man
에는 파일에서 수행되는 작업 chattr
만 설명되어 있지만 a
디렉터리에서 사용할 경우 동일한 작업을 수행하는 방법을 찾을 때 발견한 것처럼 위에서 말한 것과 정확히 일치합니다.
답변2
주문하다
chattr -i /testdir
플래그가 제거됩니다. 그런 다음 새 파일을 만들고 다시
chattr +i /testdir
디렉토리 삭제를 방지하려면 그룹 및 기타의 상위 디렉토리 r
합계 만 설정해야 합니다.x
답변3
디렉터리에 설정된 불변 속성은 해당 디렉터리와 해당 디렉터리의 즉각적인(예: 첫 번째 수준) 콘텐츠에만 영향을 미칩니다. 하위 디렉터리의 내용이 아닙니다.
따라서 이 디렉터리 내의 파일을 수정하거나 삭제하지 않고 이 디렉터리에 파일을 추가해야 하는 경우 a
Nasir Riley가 표시한 속성을 사용하는 것이 올바른 방법입니다.
반면에 디렉터리 이름 변경/삭제를 방지하면서 디렉터리에 대한 모든 권한을 가지려면 다음과 같이 하위 폴더를 사용하고 상위 수준 폴더를 변경할 수 없게 만들 수 있습니다.
$ mkdir d1
$ mkdir d1/d2
$ sudo chattr +i d1
그런 다음 모든 권한이 있는지 확인할 수 있습니다 d1/d2
.
$ touch d1/d2/f1
$ mv d1/d2/f1 d1/d2/f2
$ rm d1/d2/f2
동시에 d1
폴더는 변경할 수 없습니다.
$ sudo rm -rf d1/
rm: cannot remove 'd1/d2': Operation not permitted
$ sudo mv d1 d3
mv: cannot move 'd1' to 'd3': Operation not permitted