소개
Linux에서는 특정 파일 및 디렉터리 속성에 특정 명령을 사용해야만 액세스하거나 수정할 수 있습니다. 이러한 속성을 사용하면 루트 사용자라도 삭제나 수정을 방지하는 등 파일 작업을 제한할 수 있습니다. 이 기능은 중요한 파일과 디렉터리를 보호하는 데 특히 유용합니다.
이 가이드에서는 두 가지 필수 명령을 다룹니다.
chattr: 파일 속성을 설정하거나 해제하는 데 사용됩니다.lsattr: 파일 속성을 보는 데 사용됩니다.
이러한 명령은 일반적으로 ext2, ext3및 ext4 파일 시스템에서 사용되며 시스템 관리자에게 중요한 도구입니다.
“ chattr ” 명령이란?
“ chattr ” 명령을 사용하면 Linux 파일 시스템에서 파일 속성을 변경할 수 있습니다. 기호 모드를 사용하여 특정 속성을 추가, 제거 또는 설정합니다. 이러한 속성은 파일을 변경 불가능하게 만들거나 추가 전용으로 만드는 등 파일 동작을 제어할 수 있습니다.
“ chattr”의 주요 기능:
- 파일을 실수로 삭제하거나 수정하지 못하도록 보호합니다.
- 루트 사용자에게도 파일 작업을 제한합니다.
- 고급 파일 관리 및 보안을 활성화합니다.
공식 문서: chattr
자세한 내용은 공식 chattr 문서를 참조하세요.
Linux Man Pages – chattr
“ lsattr ” 명령이란?
“ lsattr ” 명령은 ext2, ext3또는 ext4 파일 시스템에 있는 파일과 디렉터리의 속성을 나열합니다. 파일 액세스 문제에 직면했을 때 문제 해결에 특히 유용합니다.
“ lsattr”의 주요 기능:
- 파일 속성을 읽기 쉬운 형식으로 봅니다.
- 파일 속성으로 인한 액세스 및 수정 문제를 해결합니다.
공식 문서: lsattr
자세한 내용은 공식 lsattr 문서를 참조하세요.
Linux Man Pages – lsattr
명령 구문
chattr 명령 구문
chattr [ -RVf ] [ -v version ] [ -p project ] [ + | - | = [attributes] ] files...
설명:
-R: 디렉터리와 그 내용의 속성을 재귀적으로 변경합니다.-V: 자세한 출력과 프로그램 버전을 표시합니다.-f: 대부분의 오류 메시지를 표시하지 않습니다.-v version: 파일의 버전/세대 번호를 설정합니다.-p project: 파일의 프로젝트 번호를 설정합니다.+: 지정된 속성을 추가합니다.-: 지정된 속성을 제거합니다.=: 지정된 대로 정확히 속성을 설정합니다.attributes: 속성 플래그의 조합(예:i,a등).files...: 대상 파일 또는 디렉터리.
예시:
- 변경 불가능 속성 추가:
chattr +i filename - 추가 전용 속성 제거:
chattr -a filename - 속성 정확히 설정(예: 변경 불가능 및 추가 전용):
chattr =ia filename
lsattr 명령 구문
lsattr [ -RVadlpv ] [ files... ]
설명:
-R: 디렉터리와 그 내용의 속성을 재귀적으로 나열합니다.-V: 프로그램 버전을 표시합니다.-a: 숨김 파일을 포함하여 모든 파일을 나열합니다(다음으로 시작하는 파일.).-d: 내용을 나열하는 대신 디렉터리를 일반 파일처럼 나열합니다.-l: 한 글자 약어 대신 긴 이름을 사용하여 옵션을 출력합니다.-p: 파일의 프로젝트 번호를 나열합니다.-v: 파일의 버전/세대 번호를 나열합니다.files...: 대상 파일 또는 디렉터리.
예시:
- 파일의 속성 표시:
lsattr filename - 디렉터리 내 모든 파일의 속성 표시:
lsattr /path/to/directory
일반적인 파일 속성과 그 플래그
아래 표는 가장 일반적인 파일 속성과 그 의미를 요약한 것입니다.
| 속성 | 플래그 | 설명 |
|---|---|---|
| 추가 전용 | a | 파일은 쓰기를 위해 추가 모드로만 열 수 있습니다. |
| 변경 불가능 | i | 파일을 수정, 삭제 또는 이름을 바꿀 수 없습니다. |
| atime 없음 | A | 디스크 I/O를 줄이기 위해 파일 액세스 시간(atime)이 업데이트되지 않습니다. |
| 덤프 없음 | d | 파일은 dump 프로그램을 사용한 백업에서 제외됩니다. |
| 데이터 저널링 | j | 파일 데이터는 파일 자체에 쓰이기 전에 저널에 쓰입니다. |
| 동기식 업데이트 | S | 파일에 대한 업데이트는 디스크에 동기식으로 쓰입니다. |
| 삭제 불가 | u | 파일이 삭제되면 해당 데이터는 복구 가능성을 위해 저장됩니다. |
전체 속성 목록은 다음을 참조하세요. chattr 매뉴얼 페이지:
Linux Man Pages – chattr
다음을 사용한 문제 해결: chattr 및 lsattr
문제: 파일을 수정하거나 삭제할 수 없음
다음과 같은 오류가 발생하면:
E212: Can't open file for writing
다음 단계를 따르세요.
- 파일 권한 확인하기
다음을 사용하여 파일 권한을 확인합니다.ls -l filename - 파일 속성 확인하기
명령lsattr을 사용하여 수정을 제한할 수 있는 속성이 있는지 확인합니다.lsattr filename - 제한적인 속성 제거하기
파일에i속성(변경 불가능) 또는a속성(추가 전용)이 있는 경우 다음chattr명령을 사용하여 제거합니다.chattr -i filename chattr -a filename - 변경 사항 확인하기
명령lsattr을 다시 실행하여 속성이 제거되었는지 확인합니다.lsattr filename
실제 예시: a 속성
시나리오:
수정하거나 이름을 바꿀 수 없는 파일: /etc/ssh/known_hosts입니다.
해결 단계:
- 파일 속성을 확인합니다.
lsattr /etc/ssh/known_hosts - 다음
a속성이 설정되어 있으면 제거합니다.chattr -a /etc/ssh/known_hosts - 속성이 제거되었는지 확인합니다.
lsattr /etc/ssh/known_hosts - 이제 파일을 저장하거나 이름을 바꿀 수 있습니다.
결론
“ chattr 및 lsattr ” 명령은 Linux에서 파일 속성을 관리하는 데 매우 귀중한 도구입니다. 중요한 파일과 디렉터리에 추가 보호 계층을 제공하므로 시스템 관리자에게 필수적입니다. 구성 파일을 보호하든 파일 액세스 문제를 해결하든, 이러한 명령을 익히면 Linux 전문 지식이 향상됩니다.