Chattr은 리눅스 및 BSD 계열 시스템에서 파일 및 디렉토리의 속성을 변경하고 나열하는 데 사용되는 명령어이다. 리눅스에서는 chattr, lsattr 명령어를 통해 ext2, ext3, ext4, XFS, ReiserFS, JFS, OCFS2, btrfs 파일 시스템의 속성을 제어하며, BSD 계열 시스템에서는 chflags 명령어를 사용하여 UFS, APFS, HFS+, SMB, AFP, FAT 파일 시스템의 플래그를 관리한다. Chattr 명령어는 파일의 접근 시간 기록 방지, 추가 모드 접근 허용, 압축, 삭제 시 데이터 0으로 채우기 등 다양한 속성을 설정할 수 있으며, chflags는 보관, 덤프 금지, 불변, 숨김 등의 플래그를 지원한다. 이러한 기능은 보안 강화, 시스템 관리 효율성 증진, 특정 파일 시스템 기능 활용 등에 기여한다.
더 읽어볼만한 페이지
유닉스 파일 시스템 관련 소프트웨어 - Filesystem in Userspace Filesystem in Userspace (FUSE)는 사용자 공간에서 파일 시스템을 구현하는 인터페이스로, 커널 수정 없이 파일 시스템 개발을 가능하게 하며, libfuse 라이브러리를 통해 다양한 운영체제 및 프로그래밍 언어를 지원한다.
유닉스 파일 시스템 관련 소프트웨어 - Chmod chmod는 파일 및 디렉터리의 접근 권한을 변경하는 유닉스 명령어이며, 문자열 또는 숫자 모드를 사용하여 권한을 설정하고 재귀적으로 하위 디렉터리에도 적용할 수 있다.
Chattr - [IT 관련 정보]에 관한 문서
chattr
종류
명령어
운영체제
리눅스
플랫폼
크로스 플랫폼
개발자
Remy Card
chflags
운영체제
BSD-like 시스템, macOS 포함
플랫폼
크로스 플랫폼
종류
명령어
일반 정보
명령어 종류
매뉴얼 페이지
2. 리눅스 시스템 (chattr, lsattr)
`-A` 해제
파일 접근 시 `atime` 기록을 수정하지 않아 디스크 I/O 작업을 줄인다.
추가 전용
`a`
`+a` 설정 `-a` 해제[4]
파일을 추가 모드로만 열 수 있다.
압축됨
`c`
`+c` 설정 `-c` 해제[5]
파일을 자동으로 압축하여 저장한다. 파일에서 읽으면 압축되지 않은 데이터를 반환하고, 파일에 쓰면 데이터를 디스크에 저장하기 전에 압축한다.
쓰기 시 복사 없음
`C`
`+C` 설정 `-C` 해제[6]
쓰기 시 복사(CoW) 업데이트를 적용하지 않는다.
동기 디렉토리 업데이트
`D`
`+D` 설정 `-D` 해제
디렉토리 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `dirsync` 마운트 옵션과 동일하다.
덤프 없음
`d`
`+d` 설정 `-d` 해제
`dump` 프로그램 실행 시 백업 대상에서 제외한다.
변경 불가
`i`
`+i` 설정 `-i` 해제[4]
파일을 수정, 삭제, 이름 변경, 링크 생성할 수 없게 한다. (슈퍼유저도 제한)
데이터 저널링
`j`
`+j` 설정 `-j` 해제[7]
파일 데이터를 ext3 저널에 먼저 기록한다. 파일 시스템이 `"data=journal"` 옵션으로 마운트된 경우 모든 파일 데이터는 이미 저널링되므로 이 속성은 아무런 효과가 없다.
보안 삭제
`s`
`+s` 설정 `-s` 해제[5][8]
파일 삭제 시 해당 블록을 0으로 채워 디스크에 다시 기록한다.
동기 업데이트
`S`
`+S` 설정 `-S` 해제
파일 수정 시 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `sync` 마운트 옵션과 동일하다.
디렉토리 계층 구조의 최상위
`T`
`+T` 설정 `-T` 해제
Orlov 블록 할당자의 목적으로 디렉토리 계층 구조의 최상위로 간주된다.
테일 머지 없음
`t`
`+t` 설정 `-t` 해제
테일 머지를 지원하는 파일 시스템의 경우, 이 속성이 있는 파일은 파일 끝에 있는 부분 블록 조각이 다른 파일과 병합되지 않는다.
삭제 불가
`u`
`+u` 설정 `-u` 해제[5]
이 속성이 설정된 파일이 삭제되면 내용이 저장된다. 이를 통해 사용자는 복구를 요청할 수 있다.
압축 오류
`E`
실험적인 압축 패치에서 압축 파일에 압축 오류가 있음을 나타내는 데 사용된다.
익스텐트 형식
`e`
파일이 디스크의 블록을 매핑하기 위해 익스텐트를 사용하고 있음을 나타낸다.
대용량 파일
`h`
파일이 블록을 섹터 단위가 아닌 파일 시스템 블록 크기 단위로 저장하고 있음을 나타낸다.
인덱싱된 디렉토리
`I`
HTree 프로그램 코드에서 해시 트리로 디렉토리가 인덱싱되고 있음을 나타내는 데 사용된다.
압축 원시 접근
`X`
실험적인 압축 패치에서 압축 파일의 원시 내용에 직접 접근할 수 있음을 나타내는 데 사용된다.
압축된 더티 파일
`Z`
실험적인 압축 패치에서 압축 파일이 "더티"임을 나타내는 데 사용된다.
버전 / 생성 번호
`-v`
`-v 버전`
파일의 버전/생성 번호.
2. 1. 파일 시스템 지원
`chattr`(속성 조작)과 `lsattr`(속성 나열) 명령어는 원래 ext2, ext3, ext4 파일 시스템에 특화되어 있었으며, e2fsprogs 패키지의 일부로 제공된다.
하지만, 이 기능은 이후 XFS, ReiserFS, JFS, OCFS2를 포함한 다른 많은 시스템으로 전부 또는 부분적으로 확장되었다. btrfs 파일 시스템은 속성 기능, 특히 CoW(copy-on-write)와 관련된 느린 성능으로 인해 btrfs의 내장 CoW 기능을 끄는 `C` 플래그를 포함한다.
2. 2. chattr 명령어
`chattr` 명령어는 파일 및 디렉터리의 속성을 변경하는 데 사용된다. 명령어 형식은 다음과 같다.
파일을 자동으로 압축하여 저장한다. 파일에서 읽으면 압축되지 않은 데이터를 반환하고, 파일에 쓰면 데이터를 디스크에 저장하기 전에 압축한다.
쓰기 시 복사 없음
`C`
`+C` 설정 `-C` 해제[6]
쓰기 시 복사(CoW) 업데이트를 적용하지 않는다.
동기 디렉토리 업데이트
`D`
`+D` 설정 `-D` 해제
디렉토리 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `dirsync` 마운트 옵션과 동일하다.
덤프 없음
`d`
`+d` 설정 `-d` 해제
`dump` 프로그램 실행 시 백업 대상에서 제외한다.
변경 불가
`i`
`+i` 설정 `-i` 해제[4]
파일을 수정, 삭제, 이름 변경, 링크 생성할 수 없게 한다. (슈퍼유저도 제한)
데이터 저널링
`j`
`+j` 설정 `-j` 해제[7]
파일 데이터를 ext3 저널에 먼저 기록한다. 파일 시스템이 `"data=journal"` 옵션으로 마운트된 경우 모든 파일 데이터는 이미 저널링되므로 이 속성은 아무런 효과가 없다.
보안 삭제
`s`
`+s` 설정 `-s` 해제[5][8]
파일 삭제 시 해당 블록을 0으로 채워 디스크에 다시 기록한다.
동기 업데이트
`S`
`+S` 설정 `-S` 해제
파일 수정 시 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `sync` 마운트 옵션과 동일하다.
디렉토리 계층 구조의 최상위
`T`
`+T` 설정 `-T` 해제
Orlov 블록 할당자의 목적으로 디렉토리 계층 구조의 최상위로 간주된다. `ext3` 및 `ext4`에서 사용되는 블록 할당자에 대한 힌트이며, 이 디렉토리 아래의 하위 디렉토리가 관련이 없으므로 할당 목적으로 분산되어야 함을 나타낸다. 예를 들어 `/home` 디렉토리에 `T` 속성을 설정하는 것은 매우 좋은 생각이다. 그러면 `/home/john`과 `/home/mary`가 별도의 블록 그룹에 배치된다. 이 속성이 설정되지 않은 디렉토리에 대해 Orlov 블록 할당자는 가능한 경우 하위 디렉토리를 더 가깝게 그룹화하려고 시도한다.
테일 머지 없음
`t`
`+t` 설정 `-t` 해제
테일 머지를 지원하는 파일 시스템의 경우, 이 속성이 있는 파일은 파일 끝에 있는 부분 블록 조각이 다른 파일과 병합되지 않는다. 이는 파일 시스템을 직접 읽고 테일 병합된 파일을 이해하지 못하는 LILO와 같은 응용 프로그램에 필요하다.
삭제 불가
`u`
`+u` 설정 `-u` 해제[5]
이 속성이 설정된 파일이 삭제되면 내용이 저장된다. 이를 통해 사용자는 복구를 요청할 수 있다.
압축 오류
`E`
실험적인 압축 패치에서 압축 파일에 압축 오류가 있음을 나타내는 데 사용된다.
익스텐트 형식
`e`
파일이 디스크의 블록을 매핑하기 위해 익스텐트를 사용하고 있음을 나타낸다.
대용량 파일
`h`
파일이 블록을 섹터 단위가 아닌 파일 시스템 블록 크기 단위로 저장하고 있음을 나타낸다. 이는 파일이 2TB보다 크거나 한때 그랬음을 의미한다.
인덱싱된 디렉토리
`I`
HTree 프로그램 코드에서 해시 트리로 디렉토리가 인덱싱되고 있음을 나타내는 데 사용된다.
압축 원시 접근
`X`
실험적인 압축 패치에서 압축 파일의 원시 내용에 직접 접근할 수 있음을 나타내는 데 사용된다.
압축된 더티 파일
`Z`
실험적인 압축 패치에서 압축 파일이 "더티"임을 나타내는 데 사용된다.
버전 / 생성 번호
`-v`
`-v 버전`
파일의 버전/생성 번호.
2. 4. 1. 주요 속성
`chattr(1)` 리눅스 매뉴얼 페이지에 따른 리눅스 파일 시스템의 파일 속성
속성
의미 및 근거
`atime` 업데이트 없음 (A)
파일 접근 시 `atime` 기록을 수정하지 않아 디스크 I/O 작업을 줄인다.
추가 전용 (a)
파일을 추가 모드로만 열 수 있다.[4]
압축됨 (c)
파일을 자동으로 압축하여 저장한다.[5] 파일에서 읽으면 압축되지 않은 데이터를 반환하고, 파일에 쓰면 데이터를 디스크에 저장하기 전에 압축한다.
쓰기 시 복사 없음 (C)
쓰기 시 복사(CoW) 업데이트를 적용하지 않는다.[6]
동기 디렉토리 업데이트 (D)
디렉토리 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `dirsync` 마운트 옵션과 동일하다.
덤프 없음 (d)
`dump` 프로그램 실행 시 백업 대상에서 제외한다.
변경 불가 (i)
파일을 수정, 삭제, 이름 변경, 링크 생성할 수 없게 한다. (슈퍼유저도 제한)[4]
데이터 저널링 (j)
파일 데이터를 ext3 저널에 먼저 기록한다.[7] 파일 시스템이 `"data=journal"` 옵션으로 마운트된 경우 모든 파일 데이터는 이미 저널링되므로 이 속성은 아무런 효과가 없다.
보안 삭제 (s)
파일 삭제 시 해당 블록을 0으로 채워 디스크에 다시 기록한다.[5][8]
동기 업데이트 (S)
파일 수정 시 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `sync` 마운트 옵션과 동일하다.
2. 4. 2. 기타 속성
`-t` 해제
테일 머지를 지원하는 파일 시스템의 경우, 이 속성이 있는 파일은 파일 끝에 있는 부분 블록 조각이 다른 파일과 병합되지 않는다. 이는 파일 시스템을 직접 읽고 테일 병합된 파일을 이해하지 못하는 LILO와 같은 응용 프로그램에 필요하다.
삭제 불가
u
`+u` 설정 `-u` 해제[5]
이 속성이 설정된 파일이 삭제되면 내용이 저장된다. 이를 통해 사용자는 복구를 요청할 수 있다.
압축 원시 접근
X
(사용 불가)
실험적인 압축 패치에서 압축 파일의 원시 내용에 직접 접근할 수 있음을 나타내는 데 사용된다.
압축된 더티 파일
Z
(사용 불가)
실험적인 압축 패치에서 압축 파일이 "더티"임을 나타내는 데 사용된다.
버전/생성 번호
`-v`
`-v 버전`
파일의 버전/생성 번호.
3. BSD 계열 시스템 (chflags)
BSD 계열 시스템에서 `chflags` 명령어는 파일 시스템의 확장 속성을 관리하는 데 사용된다.[1] 이 명령어는 파일이나 디렉터리의 특별한 속성을 설정하거나 해제하여 파일 시스템의 동작 방식을 변경할 수 있다.
`chflags` 명령어의 기본 형식은 다음과 같다.
```bash
chflags [-R [-H | -L | -P]] flags file ...
```
여기서 사용되는 옵션은 다음과 같다.
-R: 지정된 파일뿐만 아니라 하위 디렉터리 및 파일에 대해서도 재귀적으로 속성을 변경한다.
-H: -R 옵션과 함께 사용될 때, 명령어 줄에 지정된 심볼릭 링크를 따라간다. (트리 탐색 중 발견된 심볼릭 링크는 따라가지 않는다.)
-L: -R 옵션과 함께 사용될 때, 모든 심볼릭 링크를 따라간다.
-P: -R 옵션과 함께 사용될 때, 심볼릭 링크를 따라가지 않는다. (기본값)
BSD 계열 시스템에서 파일의 플래그를 표시하는 표준 명령어는 없지만, `ls` 명령어에 `-lo` 또는 `-lO` 옵션을 추가하여 확인할 수 있다.[1]
(요약 및 참조할 원문 소스가 제공되지 않아, '한국 IT 환경에서의 활용' 섹션 내용을 작성할 수 없습니다.)
참조
[1]
Manpage
chmod
[2]
Manpage
ls
[3]
Manpage
chflags
[4]
문서
[5]
문서
[6]
문서
[7]
문서
[8]
문서
[9]
Manpage
chmod
[10]
Manpage
ls
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.