리눅스 명령어 chattr 사용법 및 5가지 옵션

리눅스 명령어 chattr은 특정 파일이나 디렉터리에 대한 추가적인 권한 설정을 할 수 있어 파일 보호나 보안 강화에 유용하게 활용됩니다. 특히 파일을 삭제하거나 수정할 수 없도록 설정하는 기능이 강력합니다. 이번 포스팅에서는 chattr 명령어의 사용법과 그 다양한 옵션들에 대해 알아보겠습니다.

리눅스 명령어 chattr이란?

chattr는 리눅스에서 파일 시스템의 속성을 변경하는 명령어입니다. 이는 기본적인 읽기, 쓰기, 실행 권한과는 별도로 특정 속성을 추가하거나 제거할 수 있도록 도와줍니다. 주로 중요한 파일을 수정하지 못하도록 보호하거나, 로그 파일과 같은 파일을 효율적으로 관리하는 데 사용됩니다.

기본 사용법

리눅스 명령어 chattr의 기본적인 사용법은 아래와 같습니다.

chattr [옵션] [파일 혹은 디렉터리]
ShellScript

주의할 점

  • chattr 명령어는 파일 시스템 종류에 따라 일부 옵션이 지원되지 않을 수 있습니다. 주로 ext 계열 파일 시스템에서 사용되며, 다른 파일 시스템에서는 지원 여부를 확인해야 합니다.
  • chattr로 변경한 파일 속성은 ls 명령어로 확인할 수 없으며, lsattr 명령어를 사용해야 확인 가능합니다.

chattr의 주요 옵션

chattr 명령어는 다양한 옵션을 제공합니다. 각 옵션은 파일이나 디렉터리에 특정 속성을 추가하거나 제거하는 역할을 합니다. 주로 사용하는 옵션 몇 가지를 소개하겠습니다.

+i: 변경 금지(Immutable)

파일을 절대 수정하거나 삭제하지 못하도록 보호하는 기능입니다. +i 옵션을 설정한 파일은 root 사용자조차도 변경을 할 수 없으므로, sudo 명령어를 함께 사용해도 수정이나 삭제가 불가능합니다.

sudo chattr +i filename
ShellScript

이 명령어를 사용하면, 해당 파일은 삭제, 수정, 이름 변경 등이 불가능해집니다. 중요한 설정 파일이나 로그 파일을 보호할 때 유용하게 사용할 수 있습니다.

다음과 같이 document.pdf 파일에 immutable 속성을 설정해 주고 나면, lsattr 명령어로 속성을 확인했을 때 i값이 추가된 것을 확인할 수 있습니다. 그리고, sudo rm 명령어로도 파일을 삭제하려고 해도 “rm: cannot remove ‘document.pdf’: Operation not permitted”라고 오류 메시지를 통해 삭제 권한이 없음을 알려줍니다.

그림 1. 리눅스 명령어 chattr: +i 옵션으로 immutable 속성 추가
그림 1. 리눅스 명령어 chattr: +i 옵션으로 immutable 속성 추가

만약 아래 그림과 같이 sudo를 함께 사용하지 않으면 “chattr: Operation not permitted while setting flags on document.pdf”라고 허가받지 않은 작업이라고 알려줍니다. chattr 명령어는 sudo와 함께 사용하기 바랍니다.

그림 2. 리눅스 명령어 chattr: sudo 명령어와 함께 root 권한으로 실행시켜야 함
그림 2. 리눅스 명령어 chattr: sudo 명령어와 함께 root 권한으로 실행시켜야 함

+a: 추가만 가능(Append Only)

파일에 데이터를 추가할 수는 있지만 기존 내용을 수정하거나 삭제할 수 없도록 만드는 속성입니다. 주로 로그 파일과 같은 파일에 사용됩니다.

sudo chattr +a filename
ShellScript

이 옵션을 사용하면, 로그 데이터가 안전하게 저장되며, 파일의 기존 내용을 훼손할 수 없게 됩니다. 로그 파일이 손상되지 않도록 보장하는 데 매우 유용합니다.

다음과 같이 파일을 삭제나 변경은 불가능하지만, 데이터를 추가하는 것은 가능한 옵션입니다.

그림 3. 리눅스 명령어 chattr: +a 옵션으로 추가 속성 설정
그림 3. 리눅스 명령어 chattr: +a 옵션으로 추가 속성 설정

+s: 보안 삭제(Secure Deletion)

파일을 삭제할 때, 실제로 데이터가 물리적 디스크에서 완전히 지워지도록 하는 기능입니다. 보안에 민감한 데이터가 담긴 파일을 삭제할 때 유용하게 사용할 수 있습니다.

sudo chattr +s filename
ShellScript

이 옵션을 사용하면 파일을 삭제할 때 디스크에서 데이터가 덮어쓰여져 복구할 수 없게 됩니다. 단, 파일 시스템에서 지원해야만 사용할 수 있습니다. +s 옵션은 ext2, ext3, ext4에서 지원되지 않습니다.

+d: 백업 시 제외(No Dump)

리눅스 명령어 dump를 사용하여 파일을 백업할 때, 해당 파일이 덤프되지 않도록 설정합니다. 시스템 전체 백업에서 특정 파일을 제외하고자 할 때 사용됩니다.

sudo chattr +d filename
ShellScript

+c: 압축(Compress)

파일이 자동으로 압축되도록 설정합니다. 저장 공간이 부족한 경우 큰 파일을 압축해서 디스크 공간을 절약할 수 있지만, 읽기/쓰기 속도가 조금 느려질 수 있습니다. +s 옵션과 마찬가지로 ext2, ext3, ext4에서 지원되지 않습니다.

sudo chattr +c filename
ShellScript

특정 속성 해제 방법

만약 위에서 설정한 속성을 해제하고 파일을 수정하고자 한다면, -i, -a와 같이 음수 부호(-)를 붙인 옵션을 사용하면 됩니다.

chattr -i filename
ShellScript

lsattr 명령어로 속성 확인

앞서 언급했듯이, chattr로 설정한 파일 속성은 일반적인 ls 명령어로는 확인할 수 없습니다. 대신 lsattr 명령어를 사용하여 파일과 디렉터리의 속성을 확인할 수 있습니다.

lsattr filename
ShellScript

이 명령어를 입력하면, 해당 파일에 설정된 속성들이 나열됩니다. 설정된 옵션은 문자로 표시되며, 이 문자를 통해 어떤 속성이 적용되었는지 알 수 있습니다.

주의사항

  • chattr로 설정한 속성은 root 권한을 통해서만 변경할 수 있으므로, 실수로 파일 속성을 잘못 설정하지 않도록 주의해야 합니다.
  • 속성을 해제하지 않고 파일을 수정하려고 하면 오류가 발생하므로, 파일을 수정해야 할 경우 먼저 해당 속성을 해제해야 합니다.
  • 모든 파일 시스템이 모든 chattr 옵션을 지원하는 것은 아니므로, 사용 중인 파일 시스템에서 지원하는 옵션을 확인하는 것이 중요합니다. man chattr을 통해서 BUGS AND LIMITATIONS 섹션에서 관련된 내용을 자세히 확인할 수 있습니다.

정리

리눅스 명령어 chattr는 파일과 디렉터리의 속성을 제어하여 보안을 강화하거나 파일의 무결성을 보호하는 데 매우 유용한 도구입니다. 앞서 살펴본 내용을 간략히 정리해 보았습니다.

  • 중요 파일 보호: 시스템에서 중요한 설정 파일이나 실행 파일을 보호할 때, chattr +i 옵션을 사용하면 파일을 실수로 삭제하거나 수정하는 것을 방지할 수 있습니다.
  • 로그 파일 관리: 로그 파일에 chattr +a 속성을 부여하면, 로그 데이터를 추가할 수는 있지만, 기존의 로그를 수정하거나 삭제할 수 없게 되어 보안성과 무결성을 확보할 수 있습니다.
  • 파일 복구 방지: 민감한 데이터를 다루는 경우, 파일 삭제 시 chattr +s 옵션을 사용하여 데이터를 완전히 삭제할 수 있습니다. 이는 복구 가능성을 최소화하여 보안을 강화합니다. 단, 특정 파일 시스템에서 작동하지 않을 수 있습니다.
  • 백업 시 제외: 임시 파일과 같은 경우에는 굳이 백업을 할 필요가 없으므로 chattr +d 옵션을 사용하여 덤프 시에 제외시킬 수 있습니다.
  • 디스크 공간 확보: 파일 크기가 너무 큰 경우 커널 수준에서 파일을 압축하고 싶다면 chattr +c 옵션을 사용합니다. 단, 특정 파일 시스템에서 작동하지 않을 수 있습니다.

이처럼 리눅스 명령어 chattr는 단순하지만 강력한 기능을 제공하므로, 필요한 상황에서 적절하게 활용하여 파일 시스템을 안정적으로 운용하시기 바랍니다.

참고자료

관련 포스트

Leave a Comment