Linux 파일 속성은 a
일반적으로 파일에 적용 가능한 것으로 문서화되어 있습니다.
chattr(1) 맨페이지:
"a" 속성이 설정된 파일은 쓰기 모드로만 열 수 있습니다.
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