개요
리눅스 시스템에서 root 권한으로도 파일을 함부로 수정하거나 삭제하지 못하도록 보호하는 chattr 명령어의 핵심 개념과 실무 활용법을 살펴봅니다. 파일 속성을 확인하는 lsattr과의 연계부터 불변 속성(+i)과 추가 전용 속성(+a) 설정까지 단계별 실습을 통해 안전한 파일 관리 방법을 익힐 수 있습니다.
파일 속성 확인과 기본 상태 점검 (lsattr)
chattr 명령어 실습을 진행할 전용 디렉터리를 생성하고 해당 위치로 이동하기 위해 mkdir -p ~/chattr_demo && cd ~/chattr_demo 명령어를 실행합니다.

확장 파일 속성 점검 및 변경 실습에 사용할 테스트 파일을 생성하기 위해 touch secure_config.conf 명령어를 실행합니다.

lsattr 명령어는 파일이나 디렉터리에 설정된 리눅스 확장 파일 속성을 확인합니다.
실행 결과 출력된 e 속성은 파일의 데이터 블록 매핑에 익스텐트(extent) 방식을 사용하고 있음을 나타내는 기본 상태입니다.
⚙️ [주요 옵션]
-a : 점(.)으로 시작하는 숨김 파일을 포함하여 디렉터리 내의 모든 파일 속성을 출력합니다.-d : 디렉터리 내부 파일 대신 디렉터리 자체의 속성을 출력합니다.-R : 하위 디렉터리와 그 내부 파일들의 속성을 재귀적으로 조회하여 출력합니다.-v : 파일의 버전(generation number) 정보를 함께 출력합니다.

root도 삭제할 수 없는 불변 파일 설정 (+i 옵션)
파일에 불변(immutable) 속성을 부여하기 위해 sudo chattr +i ~/chattr_demo/secure_config.conf 명령어를 실행합니다.+i 속성이 적용되면 root 관리자를 포함한 모든 사용자가 파일의 수정, 삭제, 이름 변경을 할 수 없도록 안전하게 보호됩니다.

파일에 적용된 확장 속성을 확인하기 위해 lsattr ~/chattr_demo/secure_config.conf 명령어를 실행합니다.
출력 결과에서 i 속성이 추가되어 파일이 수정 및 삭제가 불가능한 불변 상태로 설정되었음을 확인할 수 있습니다.

파일 보호 상태를 검증하기 위해 rm -f ~/chattr_demo/secure_config.conf 명령어로 강제 삭제를 시도합니다.
불변(+i) 속성이 적용되어 있어 강제 삭제 옵션(-f)을 사용하더라도 파일이 삭제되지 않고 안전하게 보존됩니다.

불변 속성 해제 및 정상 수정 (-i 옵션)
sudo chattr -i ~/chattr_demo/secure_config.conf 명령어를 실행하여 파일에 설정되어 있던 불변(i) 속성을 해제합니다.-i 옵션을 사용하면 파일 보호가 비활성화되어 파일 내용을 수정하거나 삭제할 수 있는 상태로 복원됩니다.

불변 속성이 정상적으로 해제되었는지 확인하기 위해 lsattr ~/chattr_demo/secure_config.conf 명령어를 실행합니다.
출력 결과에서 기존의 i 표시가 사라져 보호 속성이 안전하게 제거되었음을 확인할 수 있습니다.

파일 수정 작업이 정상적으로 이루어지는지 테스트하기 위해 echo 'server_port=8080' >> ~/chattr_demo/secure_config.conf 명령어를 실행하여 설정값을 추가합니다.

추가한 설정 내용이 파일에 정상적으로 반영되었는지 확인하기 위해 cat ~/chattr_demo/secure_config.conf 명령어를 실행합니다.
출력 결과에 입력한 내용이 정상적으로 표시되어 오류 없이 수정 작업이 완료되었음을 확인할 수 있습니다.

로그 위변조를 방지하는 추가 전용 모드 (+a 옵션)
추가 전용 속성 실습에 사용할 로그 파일을 생성하기 위해 touch ~/chattr_demo/app_audit.log 명령어를 실행합니다.

기존 내용의 삭제나 수정을 막고 새로운 내용의 추가만 허용하도록 sudo chattr +a ~/chattr_demo/app_audit.log 명령어를 실행합니다.+a 속성이 부여되면 파일 덮어쓰기나 삭제가 금지되어 로그 데이터의 위변조를 효과적으로 방지할 수 있습니다.

파일에 설정된 확장 속성을 확인하기 위해 lsattr ~/chattr_demo/app_audit.log 명령어를 실행합니다.
출력 결과에 a 속성이 표시되어 추가 전용(append-only) 보호 모드가 정상적으로 적용되었음을 확인할 수 있습니다.

추가 전용 모드로 보호된 파일에 정상적으로 새로운 로그가 기록되는지 확인하기 위해 echo 'Audit Event: System initialized' >> ~/chattr_demo/app_audit.log 명령어를 실행합니다.>> 연산자를 통한 덧붙이기 작업은 +a 속성 상태에서도 정상적으로 수행됩니다.

로그가 정상적으로 파일 끝에 추가되었는지 확인하기 위해 cat ~/chattr_demo/app_audit.log 명령어를 실행합니다.
출력 결과에 입력한 감사 로그 내용이 정상적으로 표시되어 추가 작업이 성공했음을 확인할 수 있습니다.

디렉터리 및 하위 파일 일괄 재귀 보호 (-R 옵션)
디렉터리 및 하위 파일 일괄 보호 실습을 진행하기 위해 mkdir -p ~/chattr_demo/protected_dir && touch ~/chattr_demo/protected_dir/config1.txt ~/chattr_demo/protected_dir/config2.txt 명령어를 실행하여 실습용 디렉터리와 파일들을 생성합니다.

sudo chattr -R +i ~/chattr_demo/protected_dir 명령어를 실행하여 디렉터리와 그 내부의 모든 하위 파일에 재귀적으로 불변(+i) 속성을 일괄 부여합니다.-R 옵션을 사용하면 하위 항목 전체에 동일한 파일 보호 속성이 한 번에 적용됩니다.

디렉터리 내 파일들에 속성이 정상 반영되었는지 확인하기 위해 lsattr ~/chattr_demo/protected_dir 명령어를 실행합니다.
출력 결과에서 모든 하위 파일에 i 속성이 추가되어 일괄 보호 상태가 성공적으로 적용되었음을 확인할 수 있습니다.

sudo chattr -R -i ~/chattr_demo/protected_dir 명령어를 실행하여 디렉터리와 하위 파일들에 적용되어 있던 불변(i) 속성을 일괄 해제합니다.-R -i 옵션을 함께 사용하면 보호 속성이 한 번에 제거되어 파일 수정이나 디렉터리 정리가 가능한 기본 상태로 복원됩니다.

지금까지 root 권한으로도 삭제나 수정이 불가능하도록 파일을 안전하게 보호하는 리눅스 chattr 명령어의 핵심 속성과 실무 활용법을 간단하게 살펴보았습니다.
중요한 설정 파일이나 로그에 적절히 적용하여 관리자 실수로 인한 삭제나 변조 사고를 효과적으로 예방해보시기 바랍니다.