♧ 리눅스 파일시스템의 모든 파일과 디렉토리는 사용자, 그룹,
그리고 타인에 대한 읽기, 쓰기 실행 퍼미션을 가지고 있다. 또한
파일과 디렉토리는 퍼미션 외에도 특정 파일시스템 유형과 관련된 다른 속성들도 가지고 있다.
ext2와 ext3 파일시스템에 있는 파일은 사용자가 선택할 수 있는 특별한 속성들을 가지고 있다.
lsattr 명령어를 사용하면 이들 속성 목록을 볼 수 있는데,
속성 대부분은 잘 알려져 있지 않으며 기본적으로 비활성화되어 있다.
[ 속성들 ]
[ 속 성 ] | [ 설 명 ] |
대시(-) | ext2/ext3등 파일시스템에서 설정할 수 있는 13개의 속성을 의미 |
a | 쓰기시에 오로지 추가모드로만 열 수 있다. |
c | 커널에 의해 디스크 상에 압축 상태로 저장. |
d | dump(8)명령 수행시 백업 되지 않는다 (덤프 방지) |
i | 삭제,이름변경,링크등 어떤 자료도 변경 불가. (root 조차 변경 불가) |
j | 데이터 저널링 |
s | 지워질 때 블록들이 모두 0으로 되고 다시 디스크상에에 씌여짐(안전한 삭제) |
t | 하단 결합 불가 |
u | 삭제가 되었을 경우에는 그 내용이 저장 (데이터로 복구 가능) |
A | 접근시간(atime) 갱신 안함 |
D | 동기화된 디렉토리 업데이트 |
S | 수정될 때 그 변화가 디스크 상에 동기화 (동기화된 업데이트) |
T | 디렉토리 계층구조의 최상위 |
[ 읽기 전용 속성 ] | |
h | 큰 파일(huge file) |
E | 압축 오류(compression error) |
I | 색인 디렉토리(indexed directory) |
X | 압축 로우 액세스(compression raw access) |
Z | compressed dirty file |
■ lsattr - 확장 파일시스템 상의 파일 속성 출력
lsattr [ -Radv ] [ files… ] |
[ 옵션 ]
-R | 디렉토리와 그 이하 모든 내용에 대해 재귀적으로 속성값 출력. |
-a | ' . '로 시작하는 파일을 포함한 디렉토리 내 모든 파일을 출력. |
-d | 디렉토리를 보여줄 때 안에든 파일을 보여주는 것이 아니라 일반 파일처럼 출력. |
-v | 파일 버전 출력. |
▶ 일반적인 lsattr 명령어의 사용 예:
$ lsattr /etc/host* -----------------e- /etc/host.conf -----------------e- /etc/hostname -----------------e- /etc/hosts -----------------e- /etc/hosts.allow -----------------e- /etc/hosts.deny |
☞ 모든 /tmp 속성을 재귀적으로 나열 : $ lsattr -aR /tmp/ | less
■ chattr - 확장 파일시스템 상의 파일 속성 변경
chattr [ -RVf ] [ -v version ] [ mode ] files… |
[ 옵션 ]
-R | 디렉토리와 그 이하 모든 내용의 속성을 재귀적으로 변환. |
-V | 변화된속성에 대하여 자세히 출력. |
-f | 오류 메시지 표시. |
-v version | 파일에 버전을 설정 |
[ 속성 연산자 ]
'+' | 파일의 속성에 추가 |
'-' | 파일의 속성을 제거 |
'=' | 파일이 갖는 속성을 오로지 주어진 속성만 갖도록 설정. |
▶ ' i ' 속성을 부여하여 이동,삭제,내용수정등 변경불가 (파일 보호)
$ touch test $ sudo chattr +i test $ lsattr test ----i------------e- test /* 쓰기 불가 */ $ sudo echo "write" > test -bash: test: 허가 거부 /* 이동 불가 */ $ sudo mv test xxxx mv: `test'를 `xxxx'로 옮길 수 없음: 명령을 허용하지 않음 /* 삭제 불가 */ $ sudo rm -f test rm: `test'를 지울 수 없음: 명령을 허용하지 않음 |
☞ root 조차 속성이 해제되기 전까지는 변경할 수 없다
☞ 다시 삭제하려면 기호(-)를 사용하여 속성을 제거후 삭제($ sudo chattr -i test)
▶ -R 옵션을 사용하여 +A 속성을 재귀적으로 한번에 설정하여 접근 시간(atime) 갱신 안함.
$ touch test_aaa test_bbb test_ccc $ sudo chattr -R +A test_* $ lsattr test_* -------A---------e- test_aaa -------A---------e- test_bbb -------A---------e- test_ccc |
☞ test_* 파일들은 더 이상 접근 시간(atime) 수정 되지 않는다.
☞ A 속성은 노트북 또는 USB 디스크 등 비교적 느린 디스크 환경에서 디스크 I/O를 줄일 수 있다.
▶ ' d ' 속성이 부여된 파일은 dump명령에 의하여 백업되지 않도록 보호.
$ touch test $ sudo chattr +d test $ lsattr test ------d----------e- test |
☞ dump 명령어를 사용하여 ext(n) 파일시스템을 백업하고 있다면 해당 파일은 백업되지 않도록 보호함.
이러한 특징을 적용해 크기가 큰 ISO 이미지 파일 등을 백업에서 제외시킬 수 있다.
맨 페이지(man page) 참조 : man lsattr, man chattr
'컴퓨터 서적 정리 > Ubuntu Linux Toolbox' 카테고리의 다른 글
[Chap7 #01] - 파일시스템 기초 이해 (0) | 2011.08.07 |
---|---|
[Chap4 #07] - 파일 무결성 검증(md5sum, sha1sum) (0) | 2011.08.07 |
[Chap4 #04] - 파일 복사하기(cp, dd) (0) | 2011.08.07 |
[Chap4 #03] - 파일시스템 살펴보기 (cd, pwd, pushd, popd) (0) | 2011.08.07 |
[Chap3 #02] - 리눅스 쉘 사용(3) (Redirection, pipe, xargs) (0) | 2011.08.07 |