"chattr +a"는 디렉토리에 대해 무엇을 합니까?

"chattr +a"는 디렉토리에 대해 무엇을 합니까?

Linux 파일 속성은 a일반적으로 파일에 적용 가능한 것으로 문서화되어 있습니다.

chattr(1) 맨페이지:

"a" 속성이 설정된 파일은 쓰기 모드로만 열 수 있습니다.

ext4 위키:

0x20 파일은 추가만 가능합니다(EXT4_APPEND_FL).

내 질문은 다음과 같습니다

  • 파일 만 chattr +a?
  • 새로운 하위 디렉터리와 파일로 반복됩니까?

답변1

이것추가만플래그( chattr +a)는 디렉토리 삭제를 방지합니다.우물 뿐만 아니라이 디렉터리 내에 직접 생성된 파일 및 디렉터리:

테스트 디렉터리 및 파일을 만듭니다.

# mkdir     /tmp/foo
# chattr +a /tmp/foo

이 디렉터리는 삭제할 수 없습니다:

# rmdir     /tmp/foo
rmdir: failed to remove ‘/tmp/foo’: Operation not permitted

이제 그 안에 파일과 디렉터리를 만듭니다.

# touch     /tmp/foo/bar
# mkdir     /tmp/foo/baz

확인 해보자:

# lsattr -d /tmp/foo /tmp/foo/ba*
-----a-------e-- /tmp/foo
-------------e-- /tmp/foo/bar
-------------e-- /tmp/foo/baz

뭔가를 제거해 보세요:

# rm     /tmp/foo/bar
rm: cannot remove ‘/tmp/foo/bar’: Operation not permitted
# rmdir  /tmp/foo/baz
rmdir: failed to remove ‘/tmp/foo/baz’: Operation not permitted
rm -Rf /tmp/foo
rm: cannot remove ‘/tmp/foo/bar’: Operation not permitted
rm: cannot remove ‘/tmp/foo/baz’: Operation not permitted

마지막으로 하위 하위 디렉터리와 하위 디렉터리의 파일보호되지 않음:

# mkdir            /tmp/foo/baz/bat
# touch            /tmp/foo/baz/baff
# rm --verbose -Rf /tmp/foo/baz
removed directory: ‘/tmp/foo/baz/bat’
removed ‘/tmp/foo/baz/baff’
rm: cannot remove ‘/tmp/foo/baz’: Operation not permitted

/tmp/foo추가 플래그 만 있다는 점을 다시 한 번 참고하세요 .

# lsattr -d  /tmp/foo /tmp/foo/baz
-----a-------e-- /tmp/foo
-------------e-- /tmp/foo/baz

관련 정보