웹사이트 검색

Linux에서 중요한 파일을 IMMUTABLE(변경 불가능)으로 만드는 5가지 'chattr' 명령


chattr(속성 변경)은 로그인한 경우에도 중요한 파일 및 폴더를 실수로 삭제하거나 수정하는 것을 방지하기 위해 Linux 시스템의 파일에 대한 특정 속성을 설정/설정 해제하는 데 사용되는 명령줄 Linux 유틸리티입니다. 루트 사용자로 로그인합니다.

Linux 기본 파일 시스템(예: ext2, ext3, ext4, btrfs 등)에서는 모든 플래그를 지원하지만 모든 플래그가 모든 비기본 FS를 지원하지는 않습니다. chattr 명령으로 속성을 설정한 후에는 해당 파일/폴더에 대한 전체 권한이 있더라도 파일/폴더를 삭제하거나 수정할 수 없습니다.

이는 사용자 정보가 포함된 passwd, Shadow 파일과 같은 시스템 파일에 속성을 설정하는 데 매우 유용합니다.

chattr의 구문
chattr [operator] [flags] [filename]
속성 및 플래그

다음은 chattr 명령을 사용하여 설정/설정 해제할 수 있는 공통 속성 및 관련 플래그 목록입니다.

  1. 'A' 속성이 설정된 파일에 액세스하면 해당 atime 레코드가 업데이트되지 않습니다.
  2. 파일이 'S' 속성 세트로 수정되면 변경 사항이 디스크에 동기식으로 업데이트됩니다.
  3. 파일은 'a' 속성으로 설정되어 쓰기 위해 추가 모드에서만 열 수 있습니다.
  4. 파일은 'i' 속성으로 설정되어 있으며 수정할 수 없습니다(불변). 이름 변경 불가, 심볼릭 링크 생성 불가, 실행 불가, 쓰기 불가, 수퍼유저만 속성 설정을 해제할 수 있음을 의미합니다.
  5. 'j' 속성이 설정된 파일은 파일 자체에 업데이트되기 전에 모든 정보가 ext3 저널에 업데이트됩니다.
  6. 파일은 't' 속성으로 설정되어 있으며 꼬리 병합은 없습니다.
  7. 'd' 속성이 있는 파일은 덤프 프로세스가 실행될 때 더 이상 백업 후보가 아닙니다.
  8. 'u' 속성이 있는 파일이 삭제되면 해당 데이터가 저장됩니다. 이를 통해 사용자는 삭제 취소를 요청할 수 있습니다.
운영자
  1. + : 파일의 기존 속성에 속성을 추가합니다.
  2. : 파일의 기존 속성에 대한 속성을 제거합니다.
  3. = : 파일의 기존 속성을 유지합니다.

여기서는 파일 및 폴더에 대한 속성을 설정/설정 해제하는 chattr 명령 예제 중 일부를 보여 드리겠습니다.

1. 삭제로부터 보호하기 위해 파일에 속성을 추가하는 방법

데모 목적으로 demo 폴더와 important_file.conf 파일을 각각 사용했습니다. 속성을 설정하기 전에 'ls -l' 명령을 사용하여 기존 파일에 설정된 속성이 있는지 확인하십시오. 결과를 보셨나요? 현재 설정된 속성이 없습니다.

[root@tecmint tecmint]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo
-rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf

속성을 설정하려면 + 기호를 사용하고 설정을 해제하려면 chattr 명령과 함께 기호를 사용합니다. 따라서 누구도 파일을 삭제할 수 없도록 +i 플래그를 사용하여 파일에 불변 비트를 설정해 보겠습니다. 심지어 루트 사용자도 파일을 삭제할 권한이 없습니다.

[root@tecmint tecmint]# chattr +i demo/
[root@tecmint tecmint]# chattr +i important_file.conf

참고: 불변 비트 +i는 수퍼유저(예: 루트) 사용자만 설정할 수 있거나 sudo 권한이 있는 사용자가 설정할 수 있습니다. .

불변 비트를 설정한 후 'lsattr' 명령으로 속성을 확인해 보겠습니다.

[root@tecmint tecmint]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf

이제 강제로 삭제하거나 이름을 바꾸거나 권한을 변경하려고 시도했지만 "작업이 허용되지 않습니다"라고 표시되어 허용되지 않습니다.

[root@tecmint tecmint]# rm -rf demo/
rm: cannot remove âdemo/â: Operation not permitted
[root@tecmint tecmint]# mv demo/ demo_alter
mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[root@tecmint tecmint]# chmod 755 important_file.conf
chmod: changing permissions of âimportant_file.confâ: Operation not permitted

2. 파일 속성 설정을 해제하는 방법

위의 예에서는 속성을 설정하여 실수로 파일이 삭제되는 것을 방지하는 방법을 살펴보았습니다. 여기 이 예에서는 권한을 재설정(속성 설정 해제)하고 <를 사용하여 파일을 변경 가능하게 만드는 방법을 살펴보겠습니다. Strong>-i 플래그입니다.

[root@tecmint tecmint]# chattr -i demo/ important_file.conf

권한을 재설정한 후 'lsattr' 명령을 사용하여 파일의 변경 불가능한 상태를 확인하세요.

[root@tecmint tecmint]# lsattr
---------------- ./demo
---------------- ./important_file.conf

위 결과에서 '-i' 플래그가 제거된 것을 볼 수 있습니다. 이는 tecmint 폴더에 있는 모든 파일과 폴더를 안전하게 제거할 수 있음을 의미합니다.

[root@tecmint tecmint]# rm -rf *

[root@tecmint tecmint]# ls -l
total 0

3. /etc/passwd 및 /etc/shadow 파일을 보호하는 방법

/etc/passwd 또는 /etc/shadow 파일에 불변 속성을 설정하면 우발적인 제거나 변조로부터 파일을 안전하게 보호할 수 있으며 사용자 계정 생성도 비활성화됩니다.

[root@tecmint tecmint]# chattr +i /etc/passwd
[root@tecmint tecmint]# chattr +i /etc/shadow

이제 새 시스템 사용자를 생성하려고 하면 '/etc/passwd를 열 수 없습니다'라는 오류 메시지가 표시됩니다.

[root@tecmint tecmint]# useradd tecmint
useradd: cannot open /etc/passwd

이렇게 하면 중요한 파일이나 시스템 구성 파일에 대해 변경 불가능한 권한을 설정하여 삭제를 방지할 수 있습니다.

4. 파일의 기존 데이터를 수정하지 않고 데이터 추가

이미 입력된 데이터를 변경하거나 수정하지 않고 모든 사람이 파일에 데이터를 추가하기만 하도록 허용하려는 경우 다음과 같이 'a' 속성을 사용할 수 있습니다.

[root@tecmint tecmint]# chattr +a example.txt

[root@tecmint tecmint]# lsattr example.txt
-----a---------- example.txt

추가 모드를 설정한 후에는 추가 모드에서만 데이터 쓰기를 위해 파일을 열 수 있습니다. 다음과 같이 추가 속성을 설정 해제할 수 있습니다.

[root@tecmint tecmint]# chattr -a example.txt

이제 example.txt 파일의 기존 콘텐츠를 바꾸려고 하면 '작업이 허용되지 않습니다'라는 오류가 표시됩니다.

[root@tecmint tecmint]# echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted

이제 기존 파일 example.txt에 새 콘텐츠를 추가하고 확인해 보세요.

[root@tecmint tecmint]# echo "replace contain on file." >> example.txt
[root@tecmint tecmint]# cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.

5. 디렉토리를 보호하는 방법

전체 디렉토리와 해당 파일을 보호하기 위해 폴더의 전체 경로와 함께 '+i' 플래그와 함께 '-R'(재귀적으로) 스위치를 사용합니다.

[root@tecmint tecmint]# chattr -R +i myfolder

재귀적 속성을 설정한 후 폴더와 해당 파일을 삭제해 보십시오.

[root@tecmint tecmint]# rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted

권한 설정을 해제하려면 폴더의 전체 경로와 함께 '-i' 플래그와 함께 동일한 '-R'(재귀) 스위치를 사용합니다.

[root@tecmint tecmint]# chattr -R -i myfolder

그게 다야! chattr 명령 속성, 플래그 및 옵션에 대한 자세한 내용을 보려면 매뉴얼 페이지를 사용하십시오.