Chattr
1. 개요
Chattr은 리눅스 및 BSD 계열 시스템에서 파일 및 디렉토리의 속성을 변경하고 나열하는 데 사용되는 명령어이다. 리눅스에서는 chattr, lsattr 명령어를 통해 ext2, ext3, ext4, XFS, ReiserFS, JFS, OCFS2, btrfs 파일 시스템의 속성을 제어하며, BSD 계열 시스템에서는 chflags 명령어를 사용하여 UFS, APFS, HFS+, SMB, AFP, FAT 파일 시스템의 플래그를 관리한다. Chattr 명령어는 파일의 접근 시간 기록 방지, 추가 모드 접근 허용, 압축, 삭제 시 데이터 0으로 채우기 등 다양한 속성을 설정할 수 있으며, chflags는 보관, 덤프 금지, 불변, 숨김 등의 플래그를 지원한다. 이러한 기능은 보안 강화, 시스템 관리 효율성 증진, 특정 파일 시스템 기능 활용 등에 기여한다.
| 종류 | 명령어 |
|---|---|
| 운영체제 | 리눅스 |
| 플랫폼 | 크로스 플랫폼 |
| 개발자 | Remy Card |
| 운영체제 | BSD-like 시스템, macOS 포함 |
|---|---|
| 플랫폼 | 크로스 플랫폼 |
| 종류 | 명령어 |
| 명령어 종류 | |
|---|---|
| 매뉴얼 페이지 |
-
유닉스 파일 시스템 관련 소프트웨어 -
Filesystem in Userspace
Filesystem in Userspace (FUSE)는 사용자 공간에서 파일 시스템을 구현하는 인터페이스로, 커널 수정 없이 파일 시스템 개발을 가능하게 하며, libfuse 라이브러리를 통해 다양한 운영체제 및 프로그래밍 언어를 지원한다. -
유닉스 파일 시스템 관련 소프트웨어 -
Chmod
chmod는 파일 및 디렉터리의 접근 권한을 변경하는 유닉스 명령어이며, 문자열 또는 숫자 모드를 사용하여 권한을 설정하고 재귀적으로 하위 디렉터리에도 적용할 수 있다.
2. 리눅스 시스템 (chattr, lsattr)
`chattr`(속성 조작)과 `lsattr`(속성 나열) 명령어는 리눅스 파일 시스템의 확장 속성을 관리하는 데 사용된다. `chattr` 명령어는 파일 및 디렉터리의 속성을 변경하고, `lsattr` 명령어는 이러한 속성을 나열한다.
`chattr` 명령어 형식은 다음과 같다.
```bash
chattr [-RVf] [-+=AacDdijsTtSu] [-v version] files...
```
* `-R`: 디렉터리와 그 내용의 속성을 재귀적으로 변경한다.
* `-V`: 상세 모드를 활성화하고 프로그램 버전을 출력한다.
* `-f`: 대부분의 오류 메시지를 표시하지 않는다.
`lsattr` 명령어 형식(gnu 1.41.3)은 다음과 같다.
```bash
lsattr [ -RVadv ] [ files... ]
```
주요 옵션은 다음과 같다.
* `-R`: 디렉터리와 그 내용의 속성을 재귀적으로 나열한다.
* `-V`: 프로그램 버전을 표시한다.
* `-a`: 점 파일을 포함하여 디렉터리의 모든 파일을 나열한다.
* `-d`: 디렉터리의 내용을 나열하는 대신 다른 파일처럼 디렉토리를 나열한다.
리눅스 파일 시스템에서 사용 가능한 주요 속성과 그 의미는 다음과 같다.
| 속성 | `lsattr` 플래그 | `chattr` 옵션 | 의미 및 근거 |
|---|---|---|---|
| | style="text-align:center" | `A` || `+A` 설정 `-A` 해제 || 파일 접근 시 `atime` 기록을 수정하지 않아 디스크 I/O 작업을 줄인다. | |||
| | style="text-align:center" | `a` || `+a` 설정 `-a` 해제 || 파일을 추가 모드로만 열 수 있다. | |||
| | style="text-align:center" | `c` || `+c` 설정 `-c` 해제 || 파일을 자동으로 압축하여 저장한다. 파일에서 읽으면 압축되지 않은 데이터를 반환하고, 파일에 쓰면 데이터를 디스크에 저장하기 전에 압축한다. | |||
| | style="text-align:center" | `C` || `+C` 설정 `-C` 해제 || 쓰기 시 복사(CoW) 업데이트를 적용하지 않는다. | |||
| | style="text-align:center" | `D` || `+D` 설정 `-D` 해제 || 디렉토리 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `dirsync` 마운트 옵션과 동일하다. | |||
| | style="text-align:center" | `d` || `+d` 설정 `-d` 해제 || `dump` 프로그램 실행 시 백업 대상에서 제외한다. | |||
| | style="text-align:center" | `i` || `+i` 설정 `-i` 해제 || 파일을 수정, 삭제, 이름 변경, 링크 생성할 수 없게 한다. (슈퍼유저도 제한) | |||
| | style="text-align:center" | `j` || `+j` 설정 `-j` 해제 || 파일 데이터를 ext3 저널에 먼저 기록한다. 파일 시스템이 `"data=journal"` 옵션으로 마운트된 경우 모든 파일 데이터는 이미 저널링되므로 이 속성은 아무런 효과가 없다. | |||
| | style="text-align:center" | `s` || `+s` 설정 `-s` 해제 || 파일 삭제 시 해당 블록을 0으로 채워 디스크에 다시 기록한다. | |||
| | style="text-align:center" | `S` || `+S` 설정 `-S` 해제 || 파일 수정 시 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `sync` 마운트 옵션과 동일하다. | |||
| | style="text-align:center" | `T` || `+T` 설정 `-T` 해제 || Orlov 블록 할당자의 목적으로 디렉토리 계층 구조의 최상위로 간주된다. | |||
| | style="text-align:center" | `t` || `+t` 설정 `-t` 해제 || 테일 머지를 지원하는 파일 시스템의 경우, 이 속성이 있는 파일은 파일 끝에 있는 부분 블록 조각이 다른 파일과 병합되지 않는다. | |||
| | style="text-align:center" | `u` || `+u` 설정 `-u` 해제 || 이 속성이 설정된 파일이 삭제되면 내용이 저장된다. 이를 통해 사용자는 복구를 요청할 수 있다. | |||
| | style="text-align:center" | `E` || || 실험적인 압축 패치에서 압축 파일에 압축 오류가 있음을 나타내는 데 사용된다. | |||
| | style="text-align:center" | `e` || || 파일이 디스크의 블록을 매핑하기 위해 익스텐트를 사용하고 있음을 나타낸다. | |||
| | style="text-align:center" | `h` || || 파일이 블록을 섹터 단위가 아닌 파일 시스템 블록 크기 단위로 저장하고 있음을 나타낸다. | |||
| | style="text-align:center" | `I` || || HTree 프로그램 코드에서 해시 트리로 디렉토리가 인덱싱되고 있음을 나타내는 데 사용된다. | |||
| | style="text-align:center" | `X` || || 실험적인 압축 패치에서 압축 파일의 원시 내용에 직접 접근할 수 있음을 나타내는 데 사용된다. | |||
| | style="text-align:center" | `Z` || || 실험적인 압축 패치에서 압축 파일이 "더티"임을 나타내는 데 사용된다. | |||
| | style="text-align:center" | `-v` || style="text-align:center" | `-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` 명령어는 파일 및 디렉터리의 속성을 변경하는 데 사용된다. 명령어 형식은 다음과 같다.
chattr [-RVf] [-+=AacDdijsTtSu] [-v version] files...
* `-R`: 디렉터리와 그 내용의 속성을 재귀적으로 변경한다.
* `-V`: 상세 모드를 활성화하고 프로그램 버전을 출력한다.
* `-f`: 대부분의 오류 메시지를 표시하지 않는다.
2.3. lsattr 명령어
`lsattr` 명령어 형식(gnu 1.41.3)은 다음과 같다.
```bash
lsattr [ -RVadv ] [ files... ]
```
주요 옵션은 다음과 같다.
* `-R`: 디렉토리와 그 내용의 속성을 재귀적으로 나열한다.
* `-V`: 프로그램 버전을 표시한다.
* `-a`: 점 파일을 포함하여 디렉토리의 모든 파일을 나열한다.
* `-d`: 디렉토리의 내용을 나열하는 대신 다른 파일처럼 디렉토리를 나열한다.
2.4. 속성
wikitext
리눅스 파일 시스템에서 사용 가능한 주요 속성은 다음과 같다.
| 속성 | `lsattr` 플래그 | `chattr` 옵션 | 의미 및 근거 |
|---|---|---|---|
| | style="text-align:center" | `A` || `+A` 설정 `-A` 해제 || 파일 접근 시 `atime` 기록을 수정하지 않아 디스크 I/O 작업을 줄인다. | |||
| | style="text-align:center" | `a` || `+a` 설정 `-a` 해제 || 파일을 추가 모드로만 열 수 있다. | |||
| | style="text-align:center" | `c` || `+c` 설정 `-c` 해제 || 파일을 자동으로 압축하여 저장한다. 파일에서 읽으면 압축되지 않은 데이터를 반환하고, 파일에 쓰면 데이터를 디스크에 저장하기 전에 압축한다. | |||
| | style="text-align:center" | `C` || `+C` 설정 `-C` 해제 || 쓰기 시 복사(CoW) 업데이트를 적용하지 않는다. | |||
| | style="text-align:center" | `D` || `+D` 설정 `-D` 해제 || 디렉토리 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `dirsync` 마운트 옵션과 동일하다. | |||
| | style="text-align:center" | `d` || `+d` 설정 `-d` 해제 || `dump` 프로그램 실행 시 백업 대상에서 제외한다. | |||
| | style="text-align:center" | `i` || `+i` 설정 `-i` 해제 || 파일을 수정, 삭제, 이름 변경, 링크 생성할 수 없게 한다. (슈퍼유저도 제한) | |||
| | style="text-align:center" | `j` || `+j` 설정 `-j` 해제 || 파일 데이터를 ext3 저널에 먼저 기록한다. 파일 시스템이 `"data=journal"` 옵션으로 마운트된 경우 모든 파일 데이터는 이미 저널링되므로 이 속성은 아무런 효과가 없다. | |||
| | style="text-align:center" | `s` || `+s` 설정 `-s` 해제 || 파일 삭제 시 해당 블록을 0으로 채워 디스크에 다시 기록한다. | |||
| | style="text-align:center" | `S` || `+S` 설정 `-S` 해제 || 파일 수정 시 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `sync` 마운트 옵션과 동일하다. | |||
| | style="text-align:center" | `T` || `+T` 설정 `-T` 해제 || Orlov 블록 할당자의 목적으로 디렉토리 계층 구조의 최상위로 간주된다. `ext3` 및 `ext4`에서 사용되는 블록 할당자에 대한 힌트이며, 이 디렉토리 아래의 하위 디렉토리가 관련이 없으므로 할당 목적으로 분산되어야 함을 나타낸다. 예를 들어 `/home` 디렉토리에 `T` 속성을 설정하는 것은 매우 좋은 생각이다. 그러면 `/home/john`과 `/home/mary`가 별도의 블록 그룹에 배치된다. 이 속성이 설정되지 않은 디렉토리에 대해 Orlov 블록 할당자는 가능한 경우 하위 디렉토리를 더 가깝게 그룹화하려고 시도한다. | |||
| | style="text-align:center" | `t` || `+t` 설정 `-t` 해제 || 테일 머지를 지원하는 파일 시스템의 경우, 이 속성이 있는 파일은 파일 끝에 있는 부분 블록 조각이 다른 파일과 병합되지 않는다. 이는 파일 시스템을 직접 읽고 테일 병합된 파일을 이해하지 못하는 LILO와 같은 응용 프로그램에 필요하다. | |||
| | style="text-align:center" | `u` || `+u` 설정 `-u` 해제 || 이 속성이 설정된 파일이 삭제되면 내용이 저장된다. 이를 통해 사용자는 복구를 요청할 수 있다. | |||
| | style="text-align:center" | `E` || || 실험적인 압축 패치에서 압축 파일에 압축 오류가 있음을 나타내는 데 사용된다. | |||
| | style="text-align:center" | `e` || || 파일이 디스크의 블록을 매핑하기 위해 익스텐트를 사용하고 있음을 나타낸다. | |||
| | style="text-align:center" | `h` || || 파일이 블록을 섹터 단위가 아닌 파일 시스템 블록 크기 단위로 저장하고 있음을 나타낸다. 이는 파일이 2TB보다 크거나 한때 그랬음을 의미한다. | |||
| | style="text-align:center" | `I` || || HTree 프로그램 코드에서 해시 트리로 디렉토리가 인덱싱되고 있음을 나타내는 데 사용된다. | |||
| | style="text-align:center" | `X` || || 실험적인 압축 패치에서 압축 파일의 원시 내용에 직접 접근할 수 있음을 나타내는 데 사용된다. | |||
| | style="text-align:center" | `Z` || || 실험적인 압축 패치에서 압축 파일이 "더티"임을 나타내는 데 사용된다. | |||
| | style="text-align:center" | `-v` || style="text-align:center" | `-v 버전` || 파일의 버전/생성 번호. |
2.4.1. 주요 속성
| 속성 | 의미 및 근거 |
|---|---|
| `atime` 업데이트 없음 (A) | 파일 접근 시 `atime` 기록을 수정하지 않아 디스크 I/O 작업을 줄인다. |
| 추가 전용 (a) | 파일을 추가 모드로만 열 수 있다. |
| 압축됨 (c) | 파일을 자동으로 압축하여 저장한다. 파일에서 읽으면 압축되지 않은 데이터를 반환하고, 파일에 쓰면 데이터를 디스크에 저장하기 전에 압축한다. |
| 쓰기 시 복사 없음 (C) | 쓰기 시 복사(CoW) 업데이트를 적용하지 않는다. |
| 동기 디렉토리 업데이트 (D) | 디렉토리 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `dirsync` 마운트 옵션과 동일하다. |
| 덤프 없음 (d) | `dump` 프로그램 실행 시 백업 대상에서 제외한다. |
| 변경 불가 (i) | 파일을 수정, 삭제, 이름 변경, 링크 생성할 수 없게 한다. (슈퍼유저도 제한) |
| 데이터 저널링 (j) | 파일 데이터를 ext3 저널에 먼저 기록한다. 파일 시스템이 `"data=journal"` 옵션으로 마운트된 경우 모든 파일 데이터는 이미 저널링되므로 이 속성은 아무런 효과가 없다. |
| 보안 삭제 (s) | 파일 삭제 시 해당 블록을 0으로 채워 디스크에 다시 기록한다. |
| 동기 업데이트 (S) | 파일 수정 시 변경 사항을 디스크에 동기적으로 기록한다. 이는 파일의 하위 집합에 적용되는 `sync` 마운트 옵션과 동일하다. |
2.4.2. 기타 속성
다음은 `chattr(1)` 명령어에 의해 설정될 수 있는 리눅스 파일 시스템의 파일 속성들이다.
| 속성 | `lsattr` 플래그 | `chattr` 옵션 | 의미 및 근거 |
|---|---|---|---|
| 압축 오류 | E | (사용 불가) | 실험적인 압축 패치에서 압축 파일에 압축 오류가 있음을 나타내는 데 사용된다. |
| 익스텐트 형식 | e | (사용 불가) | 파일이 디스크의 블록을 매핑하기 위해 익스텐트를 사용하고 있음을 나타낸다. |
| 대용량 파일 | h | (사용 불가) | 파일이 블록을 섹터 단위가 아닌 파일 시스템 블록 크기 단위로 저장하고 있음을 나타낸다. 이는 파일이 2TB보다 크거나 한때 그랬음을 의미한다. |
| 인덱싱된 디렉토리 | I | (사용 불가) | HTree 프로그램 코드에서 해시 트리로 디렉토리가 인덱싱되고 있음을 나타내는 데 사용된다. |
| 테일 머지 없음 | t | `+t` 설정 `-t` 해제 | 테일 머지를 지원하는 파일 시스템의 경우, 이 속성이 있는 파일은 파일 끝에 있는 부분 블록 조각이 다른 파일과 병합되지 않는다. 이는 파일 시스템을 직접 읽고 테일 병합된 파일을 이해하지 못하는 LILO와 같은 응용 프로그램에 필요하다. |
| 삭제 불가 | u | `+u` 설정 `-u` 해제 | 이 속성이 설정된 파일이 삭제되면 내용이 저장된다. 이를 통해 사용자는 복구를 요청할 수 있다. |
| 압축 원시 접근 | X | (사용 불가) | 실험적인 압축 패치에서 압축 파일의 원시 내용에 직접 접근할 수 있음을 나타내는 데 사용된다. |
| 압축된 더티 파일 | Z | (사용 불가) | 실험적인 압축 패치에서 압축 파일이 "더티"임을 나타내는 데 사용된다. |
| 버전/생성 번호 | `-v` | `-v 버전` | 파일의 버전/생성 번호. |
3. BSD 계열 시스템 (chflags)
BSD 계열 시스템에서 `chflags` 명령어는 파일 시스템의 확장 속성을 관리하는 데 사용된다. 이 명령어는 파일이나 디렉터리의 특별한 속성을 설정하거나 해제하여 파일 시스템의 동작 방식을 변경할 수 있다.
`chflags` 명령어의 기본 형식은 다음과 같다.
```bash
chflags [-R [-H | -L | -P]] flags file ...
```
여기서 사용되는 옵션은 다음과 같다.
* -R: 지정된 파일뿐만 아니라 하위 디렉터리 및 파일에 대해서도 재귀적으로 속성을 변경한다.
* -H: -R 옵션과 함께 사용될 때, 명령어 줄에 지정된 심볼릭 링크를 따라간다. (트리 탐색 중 발견된 심볼릭 링크는 따라가지 않는다.)
* -L: -R 옵션과 함께 사용될 때, 모든 심볼릭 링크를 따라간다.
* -P: -R 옵션과 함께 사용될 때, 심볼릭 링크를 따라가지 않는다. (기본값)
BSD 계열 시스템에서 파일의 플래그를 표시하는 표준 명령어는 없지만, `ls` 명령어에 `-lo` 또는 `-lO` 옵션을 추가하여 확인할 수 있다.
BSD 파일 시스템에서 사용 가능한 주요 속성은 다음과 같다.
| 속성 | ls영어 플래그 | chflags영어 플래그 | 소유자 설정 가능 | OS 지원 | 의미 및 근거 |
|---|---|---|---|---|---|
| 숨김 | hidden영어 | hidden, uhidden영어 | 예 | macOS, FreeBSD | GUI에서 기본적으로 파일이 숨겨짐 (그러나 ls영어에서는 숨겨지지 않음) |
| 추적됨 | tracked영어 | tracked영어 | 예 | macOS | 파일 수정 및 삭제가 추적됨 |
| 제한됨 | restricted영어 | restricted영어 | 아니요 | macOS | 파일이 시스템 무결성 보호에 의해 보호됨; 확장 속성 com.apple.rootless영어가 함께 제공됨; 복구 모드에서 플래그를 설정하거나 해제해야 함 |
| 압축됨 | compressed영어 | 아니요 | macOS | 파일이 HFS로 압축됨 (읽기 전용 플래그); APFS 형식 볼륨에서는 사용할 수 없음 | |
| 데이터 보관소 | 아니요 | macOS | 특정 권한 없이 접근을 금지하기 위해 핵심 시스템에서 설정된 macOS Mojave 이후의 숨겨진 개인 정보 보호 플래그 | ||
| 오프라인 | offline영어 | offline, uoffline영어 | 예 | FreeBSD | 파일이 오프라인 상태임 |
| 스냅샷 | snapshot영어 | 아니요 | FreeBSD, NetBSD | 파일이 스냅샷 파일임 (읽기 전용 플래그) | |
| 희소 | sparse영어 | sparse, usparse영어 | 예 | FreeBSD | 모두 0으로 쓰여진 내용은 "홀"로 기록될 수 있음 |
| 보관되어야 함 | uarch영어 | uarch, uarchive영어 | 예 | FreeBSD | 파일을 보관해야 함 |
3.1. 파일 시스템 지원
`chflags` 명령어는 특정 파일 시스템에 국한되지 않는다. BSD 시스템의 UFS, macOS의 APFS, HFS+, SMB, AFP, FAT 파일 시스템 등은 적어도 일부 플래그를 지원한다.
3.2. chflags 명령어
명령 형식은 다음과 같다.
```bash
chflags [-R [-H | -L | -P]] flags file ...
```
* -H -R 옵션이 지정된 경우, 명령어 줄에 있는 심볼릭 링크를 따라간다. (트리 탐색에서 발견된 심볼릭 링크는 따라가지 않는다.)
* -L -R 옵션이 지정된 경우, 모든 심볼릭 링크를 따라간다.
* -P -R 옵션이 지정된 경우, 심볼릭 링크를 따라가지 않는다. (기본값)
* -R 파일 자체뿐만 아니라 파일에 있는 파일 계층 구조의 파일 플래그를 변경한다.
3.3. 플래그 표시
BSD 계열 시스템은 일반적으로 파일의 플래그를 표시하기 위한 기본 사용자 수준 명령어가 없다. ls 명령어는 시스템에 따라 `-lo` 또는 `-lO` 플래그를 사용하여 이를 수행할 수 있다.
3.4. 속성
wikitext
BSD 파일 시스템에서 사용 가능한 주요 속성은 다음과 같다. 모든 전통적인 속성은 최고 사용자가 설정하거나 해제할 수 있으며, 일부는 파일 소유자도 설정하거나 해제할 수 있다.
| 속성 | ls영어 플래그 | chflags영어 플래그 | 소유자 설정 가능 | OS 지원 | 의미 및 근거 |
|---|---|---|---|---|---|
| 숨김 | hidden영어 | hidden, uhidden영어 | 예 | macOS, FreeBSD | GUI에서 기본적으로 파일이 숨겨짐 (그러나 ls영어에서는 숨겨지지 않음) |
| 추적됨 | tracked영어 | tracked영어 | 예 | macOS | 파일 수정 및 삭제가 추적됨 |
| 제한됨 | restricted영어 | restricted영어 | 아니요 | macOS | 파일이 시스템 무결성 보호에 의해 보호됨; 확장 속성 com.apple.rootless영어가 함께 제공됨; 복구 모드에서 플래그를 설정하거나 해제해야 함 |
| 압축됨 | compressed영어 | 아니요 | macOS | 파일이 HFS로 압축됨 (읽기 전용 플래그); APFS 형식 볼륨에서는 사용할 수 없음 | |
| 데이터 보관소 | 아니요 | macOS | 특정 권한 없이 접근을 금지하기 위해 핵심 시스템에서 설정된 macOS Mojave 이후의 숨겨진 개인 정보 보호 플래그 | ||
| 오프라인 | offline영어 | offline, uoffline영어 | 예 | FreeBSD | 파일이 오프라인 상태임 |
| 스냅샷 | snapshot영어 | 아니요 | FreeBSD, NetBSD | 파일이 스냅샷 파일임 (읽기 전용 플래그) | |
| 희소 | sparse영어 | sparse, usparse영어 | 예 | FreeBSD | 모두 0으로 쓰여진 내용은 "홀"로 기록될 수 있음 |
| 보관되어야 함 | uarch영어 | uarch, uarchive영어 | 예 | FreeBSD | 파일을 보관해야 함 |
3.4.1. 주요 속성
Chattr영어의 주요 속성은 다음과 같다.
| 속성 | 의미 및 근거 |
|---|---|
| 보관됨 (arch) | 파일이 보관되었음을 나타낸다. |
| 불투명 (opaque) | 유니온 마운트에서 디렉토리를 불투명하게 만든다. |
| 덤프 금지 (nodump) | 파일을 덤프할 수 없게 한다. |
| 시스템 추가 전용 (sappnd) | 파일의 기존 데이터를 덮어쓸 수 없고 파일을 자를 수 없다. |
| 사용자 추가 전용 (uappnd) | 시스템 추가 전용(sappnd)과 동일하지만, 사용자 권한으로 설정/해제 가능하다. |
| 시스템 불변 (schg) | 파일을 변경, 이름 변경, 이동, 삭제할 수 없다. |
| 사용자 불변 (uchg) | 시스템 불변(schg)과 동일하지만, 사용자 권한으로 설정/해제 가능하다. |
| 시스템 연결 해제 금지 (sunlnk) | 파일을 제거, 이름 변경, 마운트할 수 없다. (macOS에서는 단일 사용자 모드에서 설정/해제) |
| 사용자 연결 해제 금지 (uunlnk) | 시스템 연결 해제 금지(sunlnk)와 동일하지만, 사용자 권한으로 설정/해제 가능하다. (FreeBSD, DragonFly BSD) |
3.4.2. 기타 속성
wikitext
| 속성 | ls영어 플래그 | chflags영어 플래그 | 소유자 설정 가능 | OS 지원 | 의미 및 근거 |
|---|---|---|---|---|---|
| 보관됨 | arch영어 | arch영어, archived영어 | 아니요 | 전체 | 파일이 보관됨 |
| 불투명 | opaque영어 | opaque영어 | 예 | 전체 | 디렉토리가 유니온 마운트를 통해 볼 때 불투명함 |
| 덤프 금지 | nodump영어 | nodump영어 | 예 | 전체 | 파일을 덤프할 수 없음 |
| 시스템 추가 전용 | sappnd영어 | sappnd영어, sappend영어 | 아니요 | 전체 | 파일의 기존 데이터를 덮어쓸 수 없으며 파일도 잘릴 수 없음 |
| 사용자 추가 전용 | uappnd영어 | uappnd영어, uappend영어 | 예 | 전체 | 파일의 기존 데이터를 덮어쓸 수 없으며 파일도 잘릴 수 없음 |
| 시스템 불변 | schg영어 | schg영어, schange영어, simmutable영어 | 아니요 | 전체 | 파일을 변경, 이름 변경, 이동 또는 제거할 수 없음 |
| 사용자 불변 | uchg영어 | uchg영어, uchange영어, uimmutable영어 | 예 | 전체 | 파일을 변경, 이름 변경, 이동 또는 제거할 수 없음 |
| 시스템 연결 해제 금지 | sunlnk영어 | sunlnk, sunlink영어 | 아니요 | FreeBSD, DragonFly BSD, macOS | 파일을 제거, 이름 변경 또는 마운트할 수 없음; macOS에서는 이 플래그를 단일 사용자 모드에서 설정하거나 해제해야 함 |
| 사용자 연결 해제 금지 | uunlnk영어 | uunlnk, uunlink영어 | 예 | FreeBSD, DragonFly BSD | 파일을 제거, 이름 변경 또는 마운트할 수 없음 |
| 숨김 | hidden영어 | hidden, uhidden영어 | 예 | macOS, FreeBSD | GUI에서 기본적으로 파일이 숨겨짐 (그러나 ls영어에서는 숨겨지지 않음) |
| 추적됨 | tracked영어 | tracked영어 | 예 | macOS | 파일 수정 및 삭제가 추적됨 |
| 제한됨 | restricted영어 | restricted영어 | 아니요 | macOS | 파일이 시스템 무결성 보호에 의해 보호됨; 확장 속성 com.apple.rootless영어가 함께 제공됨; 복구 모드에서 플래그를 설정하거나 해제해야 함 |
| 압축됨 | compressed영어 | 아니요 | macOS | 파일이 HFS로 압축됨 (읽기 전용 플래그); APFS 형식 볼륨에서는 사용할 수 없음 | |
| 데이터 보관소 | 아니요 | macOS | 특정 권한 없이 접근을 금지하기 위해 핵심 시스템에서 설정된 macOS Mojave 이후의 숨겨진 개인 정보 보호 플래그 | ||
| 오프라인 | offline영어 | offline, uoffline영어 | 예 | FreeBSD | 파일이 오프라인 상태임 |
| 스냅샷 | snapshot영어 | 아니요 | FreeBSD, NetBSD | 파일이 스냅샷 파일임 (읽기 전용 플래그) | |
| 희소 | sparse영어 | sparse, usparse영어 | 예 | FreeBSD | 모두 0으로 쓰여진 내용은 "홀"로 기록될 수 있음 |
| 보관되어야 함 | uarch영어 | uarch, uarchive영어 | 예 | FreeBSD | 파일을 보관해야 함 |
4. 한국 IT 환경에서의 활용
(요약 및 참조할 원문 소스가 제공되지 않아, '한국 IT 환경에서의 활용' 섹션 내용을 작성할 수 없습니다.)