리눅스에서 root에서만 변경가능한 파일을 만들고 싶을때 chattr을 사용합니다.

권한만 root로 바꾸고 다른 계정에 읽기 권한을 준다면 해당 파일은 vi에서 w!(강제저장)으로 파일이 변경됩니다.


chattr : 파일의 속성을 설정하는 명령어
lsattr : 파일을 속성을 확인하는 명령어



chattr의 간단한 사용방법


chattr [-RV] [-v] [+-속성] 대상파일들

[+-속성]

+ : 지정한 속성을 부여한다.
- : 지정한 속성을 제거한다.

[-RV]

-R : 서브디렉토리 그이하까지 일괄 변환합니다ㅣ.
-V: 자세한 출력모드를 제공합니다.

[-v]
-v : 지정된 파일에 버전을 설정할수있습니다.


속성의 종류

a: 파일에 추가만 할수있는 속성이빈다. 일반적으로 로그에 주로사용합니다. 삭제는 안되지만 추가는 가능합니다.
*아무나 삭제하면 안되지만 계속 기록은 되어야하는 로그파일 설정에 주로쓰입니다.


c: 커널에 의해서 압축된 상태로 저장이 된다. 파일을 읽을경우에는 해제된상태로 되고 저장하기전에는 다시압축하는 방법입니다. 


d: dump로 백업이 되지 않습니다.


i: 파일의 삭제 변경,이름변경, 파일추가 및 링크파일도 만들수없습니다.
*삭제가 되면 안되는 시스템 설정파일등에 주로 활용되빈다.


s: 파일삭제가 될경우 해당블럭을 모두 0으로 만들고 새로 디스크에 다시씁니다.


u: 파일이 삭제되었을경우 그내용이 저장이 되며 삭제되기전에 데이터로 복구가 가능해집니다.



예시


1. 특정 파일에 대하여 파일삭제 ,변경,추가등을 불가능하게 설정합니다.

$ lsattr test.test
-------------- test.test

일반적인 파일입니다.


$ chattr +i test.test
$ lsattr test.test
---i---------- test.test

i 속성이 지정 되었다.


$ rm -rf test.test
rm: cannot remove `test.test': Operation not permitted

삭제가 불가능합니다.


2. i 속성을 제가해서 파일삭제,변경,추가가 가능하게 합니다.


$ chattr -i test.test
$ lsattr test.test
-------------- test.test

i 속성을 제거하였다.

$ rm -rf test.test

삭제가 가능합니다.


3. 삭제는 안되지만 추가는 할수있는 속성 설정


$ chattr -i test.test


4. 폴더내에 모든 파일들을 일괄 설정 및 제거


$ chattr -R +i folder

$ lsattr -R folder | more
..

$ chattr -R -i folder

$ lsattr -R folder | more
..



+ Recent posts