chattr은 사용자에게 파일의 특정 속성을 설정하는 것을 허용하는 리눅스의 명령입니다. lsattr는 파일의 속성을 표시하는 명령입니다.
macOS를 포함한 대부분의 BSD-계열 시스템은 항상 속성을 설정하는 유사한 명령 chflags을 가지지만, 속성을 표시하기 위한 명령은 없었습니다; ls 명령에 대한 특정 옵션이 대신 사용됩니다. chflags 명령은 4.4BSD에서 처음 등장했습니다.
Solaris는 특별히 조작하기 위한 명령을 가지지 않습니다. chmod 및 ls가 대신 사용됩니다.
일반적으로 다른 유닉스는 유사한 명령을 가지지 않습니다. 비슷하게 들리는 명령 chatr (HP-UX에서) 및 lsattr (AIX에서)이 있지만 관련되지 않은 기능을 가집니다.
무엇보다도, chattr 명령은 암호 파일과 특정 시스템 파일이 소프트웨어 업그레이드 동안 지워질 수 없도록 파일을 변경할 수 없도록 하는 데 유용합니다.
In Linux systems (chattr and lsattr)
File system support
명령줄 도구 chattr (속성 조작) 및 lsattr (속성 나열)은 원래 Second Extended Filesystem 제품군 (ext2, ext3, ext4)에 고유했었고, e2fsprogs 패키지의 일부로 사용할 수 있습니다.
어쨌든, 그 이후로 기능은 XFS, ReiserFS, JFS 및 OCFS2를 포함한 다른 많은 시스템으로 전체 또는 부분적으로 확장되었습니다. btrfs 파일 시스템은 CoW와 결합된 느린 성능으로 인해 btrfs의 기본 제공 Copy-On-Write (CoW) 기능을 끄는 C 플래그를 비롯한 속성 기능을 포함합니다.
chattr description
chattr 명령의 형식은 다음입니다:
chattr [-RVf] [-+=AacDdijsTtSu] [-v version] files...
- -R – 디렉토리와 그 내용의 속성을 재귀적으로 변경합니다.
- -V – 프로그램 버전을 장황하게 하고 인쇄합니다.
- -f – 대부분의 오류 메시지를 억제합니다.
lsattr description
lsattr 명령 (gnu 1.41.3)의 형식은 다음입니다:
lsattr [ -RVadv ] [ files... ]
- -R – 디렉토리의 속성과 그 내용을 재귀적으로 나열합니다.
- -V – 프로그램 버전을 표시합니다.
- -a – dotfiles을 포함하여 디렉토리 안의 모든 파일을 나열합니다.
- -d – 내용을 나열하지 않고 다른 파일과 같은 디렉토리를 나열합니다.
Attributes
일부 속성은 다음을 포함합니다:
chattr(1) Linux 맨 페이지에 따른 리눅스 파일 시스템의 파일 속성 | |||
속성 | lsattr 플래그 |
chattr 옵션 | 의미와 근거 |
No atime updates |
A | +A to set -A to clear |
A 속성 집합을 갖는 파일은 접근될 때, 그것의 atime 레코드는 수정되지 않습니다. 이것은 일정량의 디스크 I/O 연산을 방지합니다. |
Append only | a | +a to set -a to clear |
a 속성 설정을 갖는 파일은 오직 쓰기를 위해 덧붙이기 모드에서 열리게 될 수 있습니다. |
Compressed | c | +c to set -c to clear |
c 속성 설정을 갖는 파일은 커널에 의해 디스크에 자동으로 압축됩니다. 이 파일에서 읽기는 압축되지 않은 데이터를 반환합니다. 이 파일에 대한 쓰기는 데이터를 디스크에 저장하기 전에 압축합니다. |
No Copy-on- Write (CoW) |
C | +C to set -C to clear |
C 속성을 가진 파일은 Copy-on-Write 업데이트에 영향을 받지 않을 것입니다. 이들 파일에 대한 업데이트는 원자 스냅샷에 영향을 받지 아닐 수 있고, 일부 파일 시스템 및 커널에 대한 일부 안정성 정보가 부족할 수 있습니다. |
Synchronous directory updates |
D | +D to set -D to clear |
D 속성 설정을 갖는 디렉토리가 수정될 때, 변경 사항이 디스크에 동기적으로 기록됩니다. 이것은 파일의 부분집합에 적용되는 dirsync 마운트 옵션과 동등합니다. |
No dump | d | +d to set -d to clear |
d 속성 설정을 갖는 파일은 dump 프로그램이 실행될 때 백업에 후보가 아닙니다. |
Compression error |
E | (unavailable) | E 속성은 압축된 파일이 압축 오류를 가지는 것을 나타내기 위해 실험 압축 패치에 의해 사용됩니다. |
Extent format | e | (unavailable) | e 속성은 파일이 디스크의 블록을 매핑하기 위해 extents를 사용하고 있음을 나타냅니다. |
Huge file | h | (unavailable) | h 속성은 파일이 섹터 단위 대신 파일시스템 블록 크기 단위로 블록을 저장되고 있음을 나타냅니다. 그것은 파일이 2TB보다 크거나 한 번에 컸음을 의미합니다. |
Indexed directory |
I | (unavailable) | I 속성은 디렉토리가 해시된 트리를 사용하여 인덱스되고 있음을 나타내기 위해 htree 프로그램 코드에 의해 사용됩니다. |
Immutable | i | +i to set -i to clear |
i 속성을 갖는 파일은 수정될 수 없습니다. 그것은 삭제되거나 이름을 바꿀 수 없으며, 링크가 이 파일에 생성될 수 없고 데이터는 파일에 쓰여질 수도 없습니다. 설정은, 수퍼유저라도, 파일의 내용을 지우거나 변경하는 것을 방지합니다. |
Data journaling | j | +j to set -j to clear |
j 속성을 갖는 파일은, 만약 파일시스템이 "data=ordered" 또는 "data=writeback" 옵션으로 마운트되면, 파일 자체에 쓰기 전에 모든 데이터를 ext3 저널에 기록합니다. 파일시스템이 "data=journal" 옵션으로 마운트될 때, 모든 파일 데이터가 이미 저널링되므로, 이 속성은 영향을 미치지 않습니다. |
Secure deletion | s | +s to set -s to clear |
s 속성 설정을 갖는 파일이 삭제될 때, 해당 블록이 0이 되고 디스크에 다시 기록됩니다. |
Synchronous updates |
S | +S to set -S to clear |
S 속성 설정을 갖는 파일이 수정될 때, 변경 사항이 디스크에 동기적으로 기록됩니다; 이것은 파일의 부분집합에 적용된 'sync' 마운트 옵션과 동등합니다. 이것은 파일의 부분집합에 적용되는 sync 마운트 옵션과 동등합니다. |
Top of directory hierarchy |
T | +T to set -T to clear |
T 속성을 가진 디렉토리는 Orlov 블록 할당자의 목적을 위해 디렉토리 계층의 최상위로 여겨질 것입니다. 이것은 ext3와 ext4에 의해 사용되는 블록 할당자에 대한 힌트로 이 디렉토리 아래의 하위디렉토리는 관련되지 않고, 따라서 할당 목작을 위해 따로 분리되어야 합니다. 예를 들어: /home/john와 /home/mary가 별도의 블록 그룹에 배치되도록 /home 디렉토리에 T 속성을 설정하기 것은 매우 좋은 생각입니다. 이 속성이 설정되지 않은 디렉토리에 대해, Orlov 블록 할당자는 가능한 경우 하위 디렉토리를 더 가깝게 그룹화하려고 시도할 것입니다. |
No tail-merging | t | +t to set -t to clear |
꼬리-병합을 지원하는 파일 시스템에 대해, t 속성을 가진 파일은 다른 파일과 병합된 파일의 끝에 부분 블록 조각을 가지지 않을 것입니다. 이것은 파일 시스템을 직접 읽고 꼬리-병합 파일을 이해하지 못하는 LILO와 같은 응용 프로그램에 필요합니다. |
Undeletable | u | +u to set -u to clear |
u 속성 설정을 갖는 파일이 삭제될 때, 해당 내용이 저장됩니다. 이것은 사용자에게 삭제 취소를 요청하는 것을 허용합니다. |
Compression raw access |
X | (unavailable) | X 속성은 실험 압축 패치에서 압축 파일의 원시 콘텐츠가 직접 액세스될 수 있음을 나타내기 위해 사용됩니다. |
Compressed dirty file |
Z | (unavailable) | Z 속성은 압축된 파일이 "더티(dirty)"임을 나타내기 위해 실험적 압축 패치에서 사용됩니다. |
Version / generation number |
-v | -v version | 파일의 버전/생성 숫자. |
In BSD-like systems (chflags)
File system support
chflags 명령은 특정 파일 시스템을 지정하지 않습니다. BSD 시스템에서 UFS와 macOS에서 APFS, HFS+, SMB, AFP, 및 FAT는 가장 작게 일부 프래그를 지원합니다.
chflags description
chflags 명령의 형식은 다음과 같습니다:
chflags [-R [-H | -L | -P]] flags file ...
- -H – 만약 -R 옵션이 지정되면, 명령줄에 대한 심볼릭 링크를 따릅니다. (트리 순회에서 만난 심볼릭 링크는 따르지 않습니다.)
- -L – 만약 -R 옵션이 지정되면, 모든 심볼릭 링크가 뒤따릅니다.
- -P – 만약 -R 옵션이 지정되면, 심볼릭 링크는 뒤따르지 않습니다. 이것이 기본값입니다.
- -R – 파일 자체가 아니라 파일에 뿌리를 둔 파일 계층에 대한 파일 플래그를 변경합니다.
Displaying
일반적으로 BSD-계열 시스템은 파일의 플래그를 표시하기 위해 기본 사용자-수준 명령이 없습니다. ls 명령은 전달된 시스템, 플래그에 따라 -lo, 또는 -lO 플래그와 함께 수행할 것입니다.
Attributes
모든 전통적인 속성은 수퍼유저에 의해 설정되거나 지워질 수 있습니다; 일부는 파일 소유자에 의해 설정되거나 지워질 수도 있습니다. 일부 속성은 다음을 포함합니다:
파일 속성 | |||||
속성 | ls 플래그 |
chflags 플래그 |
소유자- 설정 가능 |
OS 지원 | 의미와 근거 |
Archived | arch | arch, archived |
No | All | 파일이 보관됩니다 |
Opaque | opaque | opaque | Yes | All | 유니온 마운트를 통해 볼 때 디렉토리가 불투명합니다. |
No dump | nodump | nodump | Yes | All | 파일이 덤프되지 않습니다. |
System append-only |
sappnd | sappnd, sappend |
No | All | 파일에저 존재하는 데이터는 덮어쓰여질 수 없고 파일은 잘려질 수 없습니다. |
User append- only |
uappnd | uappnd, uappend |
Yes | All | 파일에서 존재하는 데이터는 덮어쓰여질 수 없고 파일은 잘려질 수 없습니다. |
System immutable |
schg | schg, schange, simmutable |
No | All | 파일은 변경되거나, 이름 변경되거나, 이동되거나, 제거될 수 없습니다. |
User immutable |
uchg | uchg, uchange, uimmutable |
Yes | All | 파일은 변경되거나, 이름 변경되거나, 이동되거나, 제거될 수 없습니다. |
System no- unlink |
sunlnk | sunlnk, sunlink |
No | All | 파일은 제거되거나, 이름 변경되거나 마운트되지 않습니다; macOS에서 이 플래그는 단일 사용자 모드에서 설정하거나 지워져야 합니다. |
User no- unlink |
uunlnk | uunlnk, uunlink |
Yes | Some | 파일은 제거되거나, 이름 변경되거나 마운트될 수 없습니다; macOS에 의해 지원되지 않습니다. |
Hidden | hidden | hidden | No | FreeBSD | 파일은 기본적으로 GUI에서 숨겨져 있습니다 (그러나 ls에서는 아닙니다). |
User hidden | uhidden | uhidden | Yes | FreeBSD | 파일은 기본적으로 GUI에서 숨겨져 있습니다 (그러나 ls에서는 아닙니다). |
Hidden | hidden | hidden | Yes | macOS | 파일은 기본값으로 GUI에서 숨겨집니다 (그러나 ls에서 그렇지 않습니다) |
Tracked | tracked | tracked | Yes | macOS | 파일 수정과 삭제는 추적됩니다. |
Restricted | restricted | restricted | No | macOS | 파일은 시스템 무결성 보호에 의해 보호됩니다; 확장 속성 com.apple.rootless와 동반됩니다; 플래그는 복구 모드에서 설정되거나 지워져야 합니다. |
Compressed | compressed | No | macOS | 파일이 HFS-압축 (읽기 전용 플래그)입니다; APFS-포맷 볼륨에서는 사용할 수 없습니다 | |
Data Vault | No | macOS | macOS Mojave 이후 숨겨진 개인 정보 플래그는 코어 시스템에서 특별한 권한 없이 접근을 금지하도록 설정했습니다. |
BSD 시스템은 offline, snapshot, sparse, 및 uarchive와 같은 추가적인 플래그를 제공합니다; 참조를 참조하십시오.