개발 창고/Server

[Linux] How to use commands related to file properties

로이제로 2023. 10. 28. 22:00
반응형

 

 리눅스 시스템에서 모든 파일과 디렉토리는 접근 권한 정책을 가지며, 이 권한 정책에는 사용자, 그룹, 기타 사용자로 나뉘어 집니다. 또한 파일 시스템의 유형에 따라 ext2, ext3 등으로 나뉘어지며, 그 외에 다양한 정보에 따라 파일과 디렉토리의 정보가 정의됩니다.

 

lsattr 명령어

 파일의 속성을 조회하는 명령어

man lsattr 결과

 

주요 옵션 내용
-R 디렉토리와 그 이하 모든 내용에 대해 재귀적으로 속성 값을 출력합니다.
-V lsattr의 버전을 출력합니다.
-a '.'로 시작하는 파일을 포함한 디렉토리 내 모든 파일을 출력합니다.
-d 디렉토리를 보여줄 때 안에 든 파일을 보여주는 것이 아닌, 폴더를 일반 파일처럼 출력합니다.
-v 파일의 버전을 출력합니다.

 

lsattr 사용 예시

▶ /etc/ntp 디렉토리 내 파일과 디렉토리 구조 확인

# lsattr은 아니지만 이후 예시에 도움 될 수 있도록 확인
$> ls -alt /etc/ntp

/etc/ntp 내 파일 및 디렉토리 목록 확인

 

▶ /etc/ntp 디렉토리 내 파일과 디렉토리 속성 확인

$> lsattr /etc/ntp

/etc/ntp 내 파일과 디렉토리 속성 정보 확인

 

▶ /etc/ntp 내 파일과 디렉토리 뿐만 /etc/ntp 디렉토리 내 재귀적으로(디렉토리 안의 디렉토리...) 파일과 디렉토리 속성 확인

$> lsattr -R /etc/ntp

/etc/ntp 뿐만 아니라 자식 디렉터리 내 파일 및 디렉터리의 속성 정보까지 확인

 

 

▶ lsattr의 버전을 확인합니다.

$> lsattr -V

lsattr의 버전 확인

 

▶ '.'과 상위 디렉터리가 있는 경우 '..' 까지 포함하여 확인

'.' 까지 포함하여 속성 확인

 

▶ 파일의 버전을 포함하여 확인

파일의 버전을 포함하여 확인

 

chattr 명령어

파일 속성 설정

man chattr 결과

 

주요 옵션 내용
-R 현재 디렉토리 이하 모든 디렉토리와 파일의 속성을 변환합니다. (재귀적 적용)
-V 자세한 출력 모드를 제공합니다.
-f 대부분의 에러 메시지를 출력하지 않습니다.
-v 지정된 파일의 버전 정보를 설정할 수 있습니다.

 

설정 모드 내용
+ 지정한 속성을 추가합니다.
- 지정한 속성을 제거합니다.
= 지정한 속성을 덮어씌웁니다.

 

속성 정의 내용
A No atime Update atime 레코드가 수정되지 않음
a append only 파일을 append mode로만 열 수 있기 때문에, 파일을 쓰는 것은 가능하지만 삭제는 불가능합니다.
c Compressed 파일이 커널에 의해 자동적으로 압축됩니다.
파일을 읽을 때 압축을 해제하여 보여주며, 쓰기 작업 시에는 디스크에 저장하기 전에 압축부터 진행합니다.
D Synchronous directory update 디렉토리의 변경 사항이 디스크에 동기식으로 저장 됩니다.
d No dump dump 프로그램이 실행 중일 때에는 해당 파일이 백업 되지 않습니다.
E Compression error Experimental compression path에 사용되며, 압축된 데이터가 오류를 가지고 있음을 의미합니다.
e Extent format 파일이 디스크 블록에 배포될 때 Extents를 사용합니다.
h Huge file 파일을 저장할 때 섹터 단위 대신에 블록 사이즈 단위로 저장합니다.
또한 파일이 2TB 이상의 크기를 가지고 있음을 의미합니다.
I Indexed directory 디렉터리가 htree(Hased tree)로 인덱싱 중임을 나타냅니다.
i Immutable 파일을 수정할 수 없습니다.
쓰기, 삭제, 이름 변경은 물론 링크를 생성할 수도 없습니다.
j Data journaling 파일에 데이터를 쓰기 전에 ext3 journal에 먼저 씁니다.
S Synchronous updates 해당 속성 집합을 가진 파일을 수정하면 변경 내용이 디스크에 동기적으로 기록됩니다.
s secure deletion 해당 파일을 삭제하면 해당 파일의 블록이 0이 되어 디스크에 다시 기록됩니다.
T Top of directory hierarchy 해당 속성을 갖는 디렉토리는 가장 상위 디렉토리로 여겨집니다.
t No tail-merging 파일에 Partial block fragmentation이 발생하지 않습니다. (tailmerging이 발생하지 않음)
u Undeletable 파일이 삭제되더라도 내용은 저장되어 있으며 복구가능합니다.
X Compression raw access Experimental comperssion path에 사용되며, 압축된 파일의 실제 내용을 직접 접근할 수 있음을 의미합니다.
Z Compression dirty file Experimental compression path에 사용되며, 압축된 데이터가 손상되었음을 의미합니다.

 

chattr 사용 예시

▶︎ file01.txt 파일이 수정 할 수 없도록 설정 후 삭제 + 파일 수정 가능하도록 설정 후 삭제

# 파일 생성
$> touch file01.txt

# 파일 존재 여부 확인
$> ls -alt | grep file01.txt

# 파일 수정 불가 속성 부여
$> chattr +i file01.txt

# 파일 속성 확인
$> lsattr file01.txt

# 파일 강제 삭제
$> rm -f file01.txt

# 파일 수정 불가 속성 제거
$> chattr -i file01.txt

# 파일 속성 확인
$> lsattr file01.txt

# 파일 강제 삭제
$> rm -f file01.txt

# 파일 존재 여부 확인
$> ls -alt | grep file01.txt

수정 불가 속성 부여된 경우 삭제 불가하고, 수정 불가 속성이 제거된 경우 삭제 가능함을 확인 할 수 있음

 

반응형

'개발 창고 > Server' 카테고리의 다른 글

[Linux] How to use "lastlog" command  (0) 2023.10.29
[Linux] How to use "dd" command  (2) 2023.10.28
[Linux] How to use "chkconfig" command  (0) 2023.10.27
[Linux] How to use "chmod" command  (0) 2023.10.27
[Linux] How to use "top" command  (2) 2023.10.26