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 만 가능하도록 속성을 설정한다.
'Linux' 카테고리의 다른 글
[LINUX] 리눅스 root 권한 취득 su - 와 sudo -i 의 차이점 (0) | 2025.03.23 |
---|---|
[LINUX] SetUID, SetGID, Sticky bit 특수권한 설명 (0) | 2025.03.16 |
[LINUX] 리눅스 umask 파일 기본 권한 설정 (0) | 2025.03.15 |
[LINUX] 리눅스 chmod 사용법(파일 권한 관리) (0) | 2025.03.15 |
[LINUX] 리눅스 계정 패스워드 관리 (0) | 2025.03.12 |