'리눅스 파일 속성 설정'에 해당되는 글 1건

file attribute 는 ls -l 명령에서 조회되지 않으며, 파일을 보호하거나 파일을 수정/삭제할 때 추가적인 동작을 설정하기 위한 속성이다.

이해하기 위해, 파일에 대한 자세한 상태를 조회해보자.

# stat file1
  File: file1
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 89h/137d	Inode: 3028155     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-03-15 19:41:19.831013012 +0900
Modify: 2025-03-15 19:41:19.831013012 +0900
Change: 2025-03-15 19:41:19.831013012 +0900
 Birth: -
# cat file1
# stat file1
  File: file1
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
Device: 89h/137d	Inode: 3028155     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2025-03-23 13:36:24.020187004 +0900
Modify: 2025-03-15 19:41:19.831013012 +0900
Change: 2025-03-15 19:41:19.831013012 +0900
 Birth: -

stat 명령어로 파일에 대한 access time, modify time, change time 을 조회할 수 있다. 그런데, cat 명령어로 파일을 조회하면 access time 이 변경되는 것을 볼 수 있다.

  • access time: 파일 내용을 조회한 시점
  • modify time: 파일 내용을 수정한 시점
  • change time: 파일 속성정보를 수정한 시점(소유자, 권한 등)

이 파일에 접근하여도 access time 을 갱신하지 않도록 하려면 어떻게 해야 할까?

해당 파일의 file attribute 에 특정 attribute 를 추가해주면 된다.(여기서는 A 속성이 맞겠다.)

 

file attribute 주요 속성

속성명 의미 자세한 설명
A no atime updates 파일에 access가 발생해도 파일 시스템의 파일 해당 정보의 atime을 갱신하지 않음
a append only 파일에 내용 추가만 할 수 있음. vi 에디터로 파일 마지막에 내용을 붙이는 것도 불가능. append (>>) 하는 형태로만 가능.(파일보안을 위해 일반적으로 사용). 디렉토리에 설정하면 해당 디렉토리 내에 파일을 생성만 할 수 있음
i immutable 파일의 이름, 내용, 소유자, 권한 등 어떠한 것도 변경할 수 없음(삭제도 안됨. 변경되면 안되는 중요한 설정 파일에 사용하면 좋음)
C no copy on write 기록 중 복사 업데이트 안함
c compressed 커널에 의해 파일이 디스크에 자동으로 압축된 상태로 저장함
D synchronous directory updates 디렉토리의 변경사항을 동기화시킴
d no dumps dump 명령어로 백업되지 않음
e extent format 파일이 디스크 블록에 매핑될 때 extent를 사용함
j data journaling 파일에 데이터를 쓰기 전에 ext3 journal에 먼저 씀
S synchronous updates 파일이 변경되면 디스크에 동기적으로 저장됨
s secure deletion 파일이 삭제될 경우 해당 블록이 0이 되고, 디스크에 다시 쓰기가 됨. 삭제파일복구 불가능
T top of directory hierarchy 해당 디렉토리를 최상위 디렉토리로 인식함
t no tail-merging 파일에 partial block fragmentation(tail-merging)이 발생하지 않음. 즉, 파일에 t 속성이 설정되면 tail 명령어로 여러 파일을 병합하여 출력할 때, 해당 파일의 마지막 내용은 출력되지 않습니다.
u undeletable 파일을 삭제시 그 내용이 저장되어 다시 복구할 수 있게 됨(휴지통 같은 느낌?)

 

1. file attribute 확인하기

lsattr {파일명}

 

2. file attribute 변경하기

chattr[ -options] {속성변경자}{속성} {대상파일명}

 

options 설명

옵션 설명
-p 파일의 프로젝트 번호 설정하기
-R 하위 디렉토리까지 재귀적으로 변경
-V 변경한 속성 출력
-f 대부분의 오류 메시지 출력안함
-v {version} 버전 설정하기

 

속성변경자 설명

속성변경지 설명
+ 지정한 속성 추가
- 지정한 속성 제거
= 지정한 속성만 남기고 나머지 속성들은 제거

 

e.g.

# chattr +a file1

=> file1 에 append 만 가능하도록 속성을 설정한다.

블로그 이미지

망원동똑똑이

프로그래밍 지식을 자유롭게 모아두는 곳입니다.

,