리눅스 파일 속성 관리 - lsattrchattr

리눅스에서는 파일의 속성을 설정하여 삭제, 수정, 추가 등을 제어할 수 있습니다. 이때 사용하는 명령어가 바로 lsattrchattr입니다. 이 글에서는 이 두 명령어의 사용법과 주요 옵션에 대해 알아보겠습니다.


1. lsattr - 파일 속성 확인하기

lsattr 명령어는 파일에 설정된 속성을 확인할 때 사용됩니다. 기본적으로 리눅스에서는 파일의 읽기, 쓰기, 실행 권한 외에도 특별한 속성들을 부여할 수 있으며, lsattr 명령어는 이런 속성을 확인할 수 있습니다.

  • 사용법
lsattr [옵션] [파일/디렉토리]
  • 주요옵션
옵션 내용
-a 숨김 파일을 포함하여 모든 파일 속성을 출력합니다.
-d 디렉토리 자체의 속성을 보여줍니다 (디렉토리 내의 파일 속성은 표시하지 않음).
-R 하위 디렉토리까지 재귀적으로 속성을 확인합니다.
  • 예제
$> lsattr myfile.txt
----i---------e---- myfile.txt

이 결과에서 i 속성은 파일을 보호하여 삭제 또는 수정이 불가능하게 하는 속성입니다.


2. chattr - 파일 속성 변경하기

chattr 명령어는 파일의 속성을 설정하거나 제거할 때 사용됩니다. 예를 들어, 중요한 파일이 실수로 삭제되지 않도록 보호하거나, 파일 내용이 추가되지 않도록 설정할 수 있습니다.

  • 사용법
chattr [옵션] [속성] [파일/디렉토리]
  • 주요속성
Flag 속성 내용
A No atime Update atime 레코드가 수정되지 않습니다.
a Append Only 파일이 추가 모드로만 열리게 되어 내용을 덧붙이기만 할 수 있습니다.
c Compressed 파일이 커널에 의해 자동적으로 압축됨
파일을 읽을 때는 압축을 해제하여 보여주며, 쓰기 작업 시에는 디스크에 저장하기 전에 압축부터 진행
D Synchronous directory updates 디렉토리의 변경 사항이 디스크에 동기식으로 저장됩니다.
d No Dump dump 프로그램을 실행 될 때 해당 파일이 백업되지 않습니다.
E Compression error Experimental compression patch에 사용되며, 압축된 데이터가 오류를 가지고 있음을 의미합니다.
e Extent format 파일이 디스크 클록에 매핑될 때 Extents를 사용합니다.
h Huge file 파일을 저장할 때 섹터 단위 대신 블록사이즈 단위로 저장합니다.
파일이 2TB 이상의 크기를 가지고 있음을 의미합니다.
I Indexed directory 디렉터리가 htree(Hashed tree)로 인덱싱 중 임을 의미합니다.
i immutable 파일이 불변 상태가 되어 삭제, 수정, 이름 변경 등이 불가능해집니다.
j Data Journaling 파일에 데이터를 쓰기 전에 ext3에 journal에 먼저 씀을 의미합니다.
S Shnchronous updates 파일의 변경 사항이 디스크에 동기식으로 저장됩니다.
s Secure deletion 파일을 제거했을 때 해당 블록은 zeroed되며, 디스크에 쓰여집니다.
T Top of directory hierarchy T 속성이 부여된 디렉토리는 가장 상위 디렉토리로 여겨집니다.
t No tail-merging 파일에 Partial black fragmentation이 발새하지 않습니다.(tail-merging이 발생하지 않습니다.)
u Undeletable 파일이 삭제되더라도 내용은 저장되어 있으며, 복구가 가능합니다.
X Compression raw access Experimental compression patch에 사용되며, 압축된 파일의 실제 내용을 직접 접근할 수 있음을 의미합니다.
Z Compressed dirty file Experimental compression patch에 사용되며, 압축된 데이터가 손상되었음을 의미합니다.
  • 주요옵션
옵션 내용
+ 속성을 추가할 때 사용합니다.
- 속성을 제거할 때 사용합니다.
= 기존 속성을 모두 제거하고 지정한 속성만 설정합니다.
  • 예제

파일을 삭제 불가 상태로 만들고 싶다면, i 속성을 추가할 수 있습니다.

$> sudo chattr +i myfile.txt

이후, myfile.txt 파일은 삭제나 수정이 불가능하게 됩니다. 속성을 제거하려면 -i 옵션을 사용합니다.

$> sudo chattr -i myfile.txt

3. 실전 예제 - lsattrchattr 함께 사용하기

파일을 실수로 삭제하지 않도록 보호하고, 이를 확인하려면 다음과 같이 명령어를 사용할 수 있습니다.

# 파일 속성 추가
$> sudo chattr +i myfile.txt

# 파일 속성 확인
$> lsattr myfile.txt
----i---------e---- myfile.txt

lsattr 명령어를 통해 i 속성이 적용된 것을 확인할 수 있습니다.


4. 속성 설정 시 주의사항

  • chattr 명령어는 일부 파일 시스템에서만 지원됩니다 (예: ext2, ext3, ext4).
  • 속성 변경은 파일 소유자 또는 관리자 권한을 가진 사용자만 가능합니다.
  • 시스템 파일에 불필요하게 속성을 설정하면 예기치 않은 동작이 발생할 수 있으므로 주의가 필요합니다.

마무리

lsattrchattr 명령어를 통해 파일 속성을 확인하고 설정하여 보다 안전하게 파일을 관리할 수 있습니다. 특히 중요한 파일에 대해 i 속성을 활용하여 실수로 삭제되지 않도록 하는 것이 유용합니다.