변경할 수 없는 디렉터리에 새 파일을 만드는 방법

변경할 수 없는 디렉터리에 새 파일을 만드는 방법

chattr +i /testdir다음을 통해 디렉터리 속성을 변경할 수 없도록 변경했지만 해당 디렉터리에 파일을 만들어야 합니다.

아니면 누구도 디렉토리를 삭제할 수 없지만 소유자는 여전히 디렉토리에 쓸 수 있도록 하는 방법이 있습니까?

답변1

필요한 것을 얻는 방법은 다음과 같습니다.

chattr +a /testdir

소유자만 쓰기 액세스 권한을 갖도록 디렉터리 자체에 대한 권한을 설정합니다.

a스위치를 사용하면 내부적으로 파일을 생성하고 수정할 수 있지만 삭제할 수는 없습니다.

페이지 man에는 파일에서 수행되는 작업 chattr만 설명되어 있지만 a디렉터리에서 사용할 경우 동일한 작업을 수행하는 방법을 찾을 때 발견한 것처럼 위에서 말한 것과 정확히 일치합니다.

답변2

주문하다

chattr -i /testdir

플래그가 제거됩니다. 그런 다음 새 파일을 만들고 다시

chattr +i /testdir

디렉토리 삭제를 방지하려면 그룹 및 기타의 상위 디렉토리 r합계 만 설정해야 합니다.x

답변3

디렉터리에 설정된 불변 속성은 해당 디렉터리와 해당 디렉터리의 즉각적인(예: 첫 번째 수준) 콘텐츠에만 영향을 미칩니다. 하위 디렉터리의 내용이 아닙니다.

따라서 이 디렉터리 내의 파일을 수정하거나 삭제하지 않고 이 디렉터리에 파일을 추가해야 하는 경우 aNasir 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

관련 정보