Jump to content

chattr

This is a fully translated article. Click here for more information.
From DawoumWiki, the free Mathematics self-learning

chattr
Original author(s)Remy Card
Operating systemLinux
PlatformCross-platform
TypeCommand
chflags
Operating systemBSD-like systems, including macOS
PlatformCross-platform
TypeCommand

chattr은 사용자에게 파일의 특정 속성을 설정하는 것을 허용하는 리눅스명령입니다. lsattr는 파일의 속성을 표시하는 명령입니다.

macOS를 포함한 대부분의 BSD-계열 시스템은 항상 속성을 설정하는 유사한 명령 chflags을 가지지만, 속성을 표시하기 위한 명령은 없었습니다; ls 명령에 대한 특정 옵션이 대신 사용됩니다. chflags 명령은 4.4BSD에서 처음 등장했습니다.

Solaris는 특별히 조작하기 위한 명령을 가지지 않습니다. chmod[1]ls[2]가 대신 사용됩니다.

일반적으로 다른 유닉스는 유사한 명령을 가지지 않습니다. 비슷하게 들리는 명령 chatr (HP-UX에서) 및 lsattr (AIX에서)이 있지만 관련되지 않은 기능을 가집니다.

무엇보다도, chattr 명령은 암호 파일과 특정 시스템 파일이 소프트웨어 업그레이드 동안 지워질 수 없도록 파일을 변경할 수 없도록 하는 데 유용합니다.[3]

In Linux systems (chattr and lsattr)

File system support

명령줄 도구 chattr (속성 조작) 및 lsattr (속성 나열)은 원래 Second Extended Filesystem 제품군 (ext2, ext3, ext4)에 고유했었고, e2fsprogs 패키지의 일부로 사용할 수 있습니다.

어쨌든, 그 이후로 기능은 XFS, ReiserFS, JFSOCFS2를 포함한 다른 많은 시스템으로 전체 또는 부분적으로 확장되었습니다. 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 – 프로그램 버전을 표시합니다.
  • -adotfiles을 포함하여 디렉토리 안의 모든 파일을 나열합니다.
  • -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[note 1]
  • a 속성 설정을 갖는 파일은 오직 쓰기를 위해 덧붙이기 모드에서 열리게 될 수 있습니다.
Compressed c +c to set
-c to clear[note 2]
  • c 속성 설정을 갖는 파일은 커널에 의해 디스크에 자동으로 압축됩니다.
  • 이 파일에서 읽기는 압축되지 않은 데이터를 반환합니다.
  • 이 파일에 대한 쓰기는 데이터를 디스크에 저장하기 전에 압축합니다.
No Copy-on-Write (CoW) C +C to set
-C to clear[note 3]
  • 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[note 1]
  • i 속성을 갖는 파일은 수정될 수 없습니다.
  • 그것은 삭제되거나 이름을 바꿀 수 없으며, 링크가 이 파일에 생성될 수 없고 데이터는 파일에 쓸 수도 없습니다.
  • 설정은, 수퍼유저라도, 파일의 내용을 지우거나 변경하는 것을 방지합니다.
Data journaling j +j to set
-j to clear[note 4]
  • j 속성을 갖는 파일은, 만약 파일시스템이 "data=ordered" 또는 "data=writeback" 옵션으로 마운트되면, 파일 자체에 쓰기 전에 모든 데이터를 ext3 저널에 기록합니다.
  • 파일시스템이 "data=journal" 옵션으로 마운트될 때, 모든 파일 데이터가 이미 저널링되므로, 이 속성은 영향을 미치지 않습니다.
Secure deletion s +s to set
-s to clear[note 2][note 5]
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 블록 할당자의 목적을 위해 디렉토리 계층의 최상위로 여길 것입니다.
  • 이것은 ext3ext4에 의해 사용되는 블록 할당자에 대한 힌트로 이 디렉토리 아래의 하위디렉토리는 관련되지 않고, 따라서 할당 목작을 위해 따로 분리되어야 합니다.
  • 예를 들어: /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[note 2]
  • u 속성 설정을 갖는 파일이 삭제될 때, 해당 내용이 저장됩니다.
  • 이것은 사용자에게 삭제 취소를 요청하는 것을 허용합니다.
Compression raw access X (unavailable)
  • X 속성은 실험 압축 패치에서 압축 파일의 원시 콘텐츠가 직접 액세스될 수 있음을 나타내기 위해 사용됩니다.
Compressed dirty file Z (unavailable)
  • Z 속성은 압축된 파일이 "더티(dirty)"임을 나타내기 위해 실험적 압축 패치에서 사용됩니다.
Version / generation number -v -v version
  • 파일의 버전/생성 숫자.

Notes

  1. ^ a b Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear these attributes.
  2. ^ a b c These attributes are not honored by the ext2 and ext3 filesystems as implemented in the current mainline Linux kernels.
  3. ^ These attributes only make sense for Copy-on-Write file-systems such as btrfs.
  4. ^ Only the superuser or a process possessing the CAP_SYS_RESOURCE capability can set or clear this attribute.
  5. ^ This attribute is not honored by the ext4 filesystem as implemented in the current mainline Linux kernels as reported in Bug #17872.

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 File is hidden by default in the GUI (but not in 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,[4]uarchive와 같은 추가적인 플래그를 제공합니다; 참조를 참조하십시오.

See also

  • ATTRIB – analogous command in MS-DOS, OS/2 and Microsoft Windows
  • chown – change file/directory ownership in a Unix system
  • chmod – change file access control attributes in a Unix system
  • cacls – change file access control lists in Microsoft Windows NT

Notes

  1. ^ chmod(1) – illumos and OpenSolaris User Commands Reference Manual from latest Sun based OpenSolaris
  2. ^ ls(1) – illumos and OpenSolaris User Commands Reference Manual from latest Sun based OpenSolaris
  3. ^ chflags(1) – OpenBSD General Commands Manual
  4. ^ Different from the APFS sparse files on macOS, which have no special flags.

References