컴퓨터에는 다양한 종류의 파일들이 존재한다. 문서, 이미지, 동영상 등 우리가 일상적으로 사용하는 파일들은 모두 각자 고유의 속성을 가지고 있다. 이 속성 정보는 파일의 종류, 크기, 생성 시간 등 다양한 정보를 담고 있어 파일을 관리하는데 중요한 역할을 한다.
여기에서는 터미널에서 사용하는 명령어를 통해 파일 속성을 확인하고 관리하는 방법에 대해 알아본다.
touch: 파일의 타임스탬프를 변경하는 명령어다.
파일이 생성되거나 수정된 시간을 의미하는 타임스탬프를 조작할 수 있다.
chown: 파일의 소유자를 변경한다.
chgrp: 파일의 그룹 소유권을 변경한다.
chmod: 파일의 권한 모드를 변경한다. 읽기, 쓰기, 실행 등의 권한을 설정할 수 있다.
umask: 새로 생성되는 파일이나 디렉토리의 기본 권한 모드를 설정한다.
lsattr: 파일의 확장 속성을 나열한다. 파일 시스템에 따라 다양한 확장 속성을 설정할 수 있다.
chattr: 파일의 확장 속성을 변경한다.
touch 명령어
touch 명령어는 기본적으로 파일의 수정 시간과 접근 시간 두 가지를 현재 시간으로 변경한다.
touch myfile
위 명령어를 실행하면 'myfile'이라는 파일의 수정 시간과 접근 시간이 현재 시간으로 업데이트된다.
시간 직접 설정하기
touch 명령어는 시간 값을 직접 지정하여 파일의 시간 속성을 설정할 수도 있다.
예시:
touch -d "2024년 1월 10일" myfile
위 명령어는 'myfile'의 시간 속성을 2024년 1월 10일로 설정한다.
새로운 파일 만들기
touch 명령어는 파일이 존재하지 않을 경우 새로운 빈 파일을 생성한다.
예를 들어 'myfile'이라는 파일이 없으면 다음 명령어를 실행하면 파일이 생성된다.
touch myfile
유용한 옵션
- -a : 접근 시간만 변경한다.
- -m : 수정 시간만 변경한다.
- -c : 파일이 존재하지 않으면 생성하지 않는다. (기본적으로 touch는 파일이 없으면 생성한다.)
- -d timestamp : 파일의 시간 속성을 직접 설정합니다. 다양한 형식의 시간 값을 사용할 수 있으며, 명령어 실행 시 도움말을 참고할 수 있다. (man touch)
- -t timestamp : 파일의 시간 속성을 정확하게 설정한다. 특정 포맷을 따르며, 년, 월, 일, 시, 분, 초 등을 상세하게 설정할 수 있다.
touch 명령어를 활용하여 파일의 시간 속성을 효과적으로 관리할 수 있다.
chown 명령어
컴퓨터 시스템에서 파일은 사용자와 그룹에 의해 관리된다. chown 명령어는 파일이나 디렉토리의 소유자를 변경하는 데 사용된다. 보통 관리자 권한이 필요하며, 다음과 같은 방법으로 사용할 수 있다.
파일 소유자 변경 방법
sudo chown 사용자 my파일 파일2 내장디렉토리
위 명령어는 'sudo'를 통해 관리자 권한으로 실행되며, 사용자 "사용자"를 파일 'my파일'과 '파일2' 그리고 디렉토리 '내장디렉토리'의 새로운 소유자로 설정한다.
사용자 지정 방법
- 사용자 이름 : 존재하는 사용자 이름을 입력한다. (예: smith)
- 숫자 사용자 ID : 사용자의 숫자 아이디를 입력한다. (예: 1001)
- 사용자:그룹 : 사용자 이름과 그룹 이름을 콜론(:)으로 구분하여 입력한다. (예: smith:party)
- 숫자 사용자 ID:숫자 그룹 ID : 숫자 사용자 아이디와 그룹 아이디를 콜론(:)으로 구분하여 입력한다. (예: 1001:234)
- :그룹 이름 : 그룹 이름 앞에 콜론(:)을 붙여 입력한다. (예: :party)
- --reference=파일 : 다른 파일의 소유자와 그룹정보를 참조하여 설정한다.
유용한 옵션
- --dereference : 심볼릭 링크를 따라 링크가 가리키는 실제 파일의 소유자를 변경한다.
- -R : 디렉토리 트리 전체의 소유자를 재귀적으로 변경한다. (하위 디렉토리와 파일 모두 적용)
chown 명령어는 주의해서 사용해야 한다. 잘못된 사용은 시스템 파일의 소유권을 변경하여 시스템 문제를 야기할 수 있기 때문이다. 관리자 권한이 필요하며, 명령어 사용에 익숙하지 않은 경우에는 파일 소유자 변경에 대한 위험성을 고려하여 신중하게 사용해야 한다.
chgrp 명령어
컴퓨터 시스템에서 파일은 소유자뿐 아니라 그룹에 의해서도 관리된다. chgrp 명령어는 파일이나 디렉토리의 그룹 소유권을 변경하는 데 사용된다.
파일 그룹 소유권 변경 방법
chgrp 그룹 my파일 파일2 내장디렉토리
위 명령어는 '그룹'이라는 그룹을 'my파일', '파일2', 그리고 '내장디렉토리'의 새로운 그룹 소유권으로 설정한다.
그룹 지정 방법
- 그룹 이름 : 존재하는 그룹 이름을 입력한다. (예: users)
- 숫자 그룹 ID : 그룹의 숫자 아이디를 입력한다. (예: 1001)
- --reference=파일 : 다른 파일의 그룹 소유권 정보를 참조하여 설정한다.
유용한 옵션
- --dereference : 심볼릭 링크를 따라 링크가 가리키는 실제 파일의 그룹 소유권을 변경한다.
- -R : 디렉토리 트리 전체의 그룹 소유권을 재귀적으로 변경한다. (하위 디렉토리와 파일 모두 적용)
chgrp 명령어는 주의해서 사용해야 한다. 잘못된 사용은 중요한 시스템 파일의 그룹 소유권을 변경하여 시스템 문제를 야기할 수 있기 때문입이다. 관리자 권한이 필요하며, 명령어 사용에 익숙하지 않은 경우에는 파일 그룹 소유권 변경에 대한 위험성을 고려하여 신중하게 사용해야 한다.
chmod 명령어
chmod 명령어는 컴퓨터 시스템에서 파일과 디렉토리에 대한 접근 권한을 설정하는 데 사용된다. 이 권한 설정을 통해 특정 사용자만 파일을 열람하거나 수정, 실행할 수 있도록 제어할 수 있다. 일반적인 접근 권한으로는 읽기(read), 쓰기(write), 실행(execute) 권한이 있으며, 이 권한은 파일 소유자, 소속 그룹, 그리고 다른 모든 사용자에게 각각 부여할 수 있다.
chmod 명령어 사용 방법
chmod 권한 설정 파일
위와 같은 형식으로 명령어를 사용하며, 권한 설정은 다음과 세 가지 방법으로 지정할 수 있다.
- --reference=파일 : 다른 파일의 권한 설정을 참조하여 현재 파일의 권한을 설정한다.
- 8진수 : 최대 4자리의 8진수 (0~7)를 사용하여 파일의 절대 권한을 비트 단위로 설정한다. (예: 600, 755)
- 맨 앞 자리는 특수 권한 비트이며, 나머지 세 자리는 각각 소유자, 그룹, 다른 사용자의 권한을 나타낸다.
- 문자열: 절대 권한 또는 상대 권한을 문자열로 지정한다. (예: +r, -w)
- 절대 권한은 현재 권한과 상관없이 완전히 새로운 권한을 설정한다. (예: a+r 모든 사용자에게 읽기 권한 추가)
- 상대 권한은 현재 권한에 추가하거나 제거하는 방식으로 권한을 변경한다. (예: -w 쓰기 권한 제거)
일반적인 권한 설정 예시
- chmod 600 myfile: 'myfile'은 소유자만 읽고 쓸 수 있는 개인 파일이다.
- chmod 644 myfile: 'myfile'은 모든 사용자가 읽을 수 있지만, 소유자만 수정할 수 있다.
- chmod 700 mydir: 'mydir'은 소유자만 읽고 쓰고 실행할 수 있는 개인 디렉토리이다.
- chmod 755 mydir: 'mydir'은 모든 사용자가 읽을 수 있지만, 소유자만 수정하고 실행할 수 있다.
주의사항
- chmod 명령어는 중요한 시스템 파일의 권한을 변경할 수도 있기 때문에 주의해서 사용해야 합니다. 잘못된 설정은 시스템 문제를 야기할 수 있다.
- 관리자 권한이 필요하며, 명령어 사용에 익숙하지 않은 경우에는 파일 권한 설정에 대한 위험성을 고려하여 신중하게 사용해야 한다.
umask 명령어
umask 명령어는 컴퓨터 시스템에서 새로 생성되는 파일이나 디렉토리의 기본 권한을 설정하거나 표시하는 데 사용된다. 이 권한은 파일 소유자, 소속 그룹, 그리고 다른 모든 사용자가 해당 파일을 읽기(read), 쓰기(write), 실행(execute) 할 수 있는 권한을 결정한다.
umask 명령어 사용 방법
- umask: 현재 설정된 umask 값을 출력한다. (출력은 8진수 형태)
- umask mask: 새로운 umask 값을 설정한다. (mask는 8진수로 입력)
umask 값 설정 예시
umask 명령어는 좀 복잡한 이진수와 8진수 연산을 사용하기 때문에 처음에는 이해하기 어려울 수 있습니다. 하지만 몇 가지 예시를 통해 기본적인 사용법을 살펴본다.
예시 1: 자신에게 모든 권한, 다른 사용자에게 읽기/실행 권한 설정
umask 0022
touch newfile && mkdir newdir
ls -ldG newfile newdir
위 명령어를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
-rw-r--r-- 1 smith 0 Nov 11 12:25 newfile
drwxr-xr-x 2 smith 4096 Nov 11 12:25 newdir
- 'newfile'과 'newdir'은 모두 소유자인 'smith' 사용자에게만 읽기와 쓰기 권한이 설정된다.
- 다른 사용자에게는 읽기와 실행 권한만 설정된다.
예시 2: 자신과 그룹에게 모든 권한, 다른 사용자에게 읽기/실행 권한 설정
umask 0002
touch newfile2 && mkdir newdir2
ls -ldG newfile2 newdir2
위 명령어를 실행하면 다음과 같은 결과를 얻을 수 있습니다.
-rw-rw-r-- 1 smith 0 Nov 11 12:26 newfile2
drwxrwxr-x 2 smith 4096 Nov 11 12:26 newdir2
- 'newfile2'과 'newdir2'은 소유자인 'smith' 사용자와 'smith'가 속한 그룹에게 읽기, 쓰기, 실행 권한이 모두 설정된다.
- 다른 사용자에게는 읽기와 실행 권한만 설정된다.
예시 3: 자신에게만 모든 권한 설정
umask 0077
touch newfile3 && mkdir newdir3
ls -ldG newfile3 newdir3
위 명령어를 실행하면 다음과 같은 결과를 얻을 수 있다.
-rw------- 1 smith 0 Nov 11 12:27 newfile3
drwx------ 2 smith 4096 Nov 11 12:27 newdir3
- 'newfile3'과 'newdir3'은 소유자인 'smith' 사용자에게만 읽기, 쓰기, 실행 권한이 모두 설정됩니다.
- 다른 모든 사용자는 해당 파일과 디렉토리에 전혀 접근할 수 없습니다.
기술적인 설명
umask 명령어는 이진수 값을 사용하지만 일반적으로는 8진수 형태로 표기한다. umask 값은 기본 보호 모드를 정의하며, 파일의 경우 0666, 디렉토리의 경우 0777이라는 8진수 값과 NOT AND 연산을 수행하여 최종 권한을 결정한다.
예를 들어, umask가 0002일 때 파일의 기본 권한은 0664가 된다.
0666 NOT AND 0002 = 0664
(이진수로)
00110110110 NOT AND 000000000010
(각 비트별 NOT AND 연산 수행)
111111111101 AND 111111111101
(각 비트별 AND 연산 수행)
1111
lsattr 명령어
리눅스 시스템에서 파일은 단순히 읽기, 쓰기, 실행과 같은 권한만 가지고 있는 것이 아니라 더 많은 속성을 가지고 있다. 특히, ext3, ext4와 같은 "ext" 파일 시스템에서 이러한 확장 속성을 확인하고 변경할 수 있다.
lsattr 명령어 사용 방법
- lsattr: 현재 디렉토리의 모든 파일의 확장 속성을 출력한다.
- lsattr 파일: 지정한 파일의 확장 속성을 출력한다.
파일 확장 속성 예시
lsattr 속성파일
-u--i--- 속성파일
위 명령어를 실행하면 '속성파일'의 속성이 다음과 같이 출력된다.
- - : 일반 파일
- u : 삭제 불가 (undeletable)
- -- : 쓰기 권한 없음
- i : 변경 불가 (immutable)
주요 파일 확장 속성
- a : 추가 전용 (append-only) - 파일에 내용을 추가만 할 수 있고, 수정은 불가능하다. (루트 사용자만 설정 가능)
- A : 접근 시간 업데이트 안 함 (accesses not timestamped) - 파일에 접근해도 최근 접근 시간이 업데이트되지 않는다.
- c : 압축됨 (compressed) - 파일 내용이 투명하게 압축되어 저장되며, 읽을 때는 자동으로 압축 해제된다.
- d : 덤프 제외 (don't dump) - 백업 프로그램(dump)이 이 파일을 무시하도록 설정한다.
- i : 변경 불가 (immutable) - 파일을 수정하거나 삭제할 수 없다. (루트 사용자만 설정 가능)
- s : 안전 삭제 (secure deletion) - 파일을 삭제할 때 내용을 0으로 덮어쓰도록 설정한다.
- S : 동기화 업데이트 (synchronous update) - 파일에 대한 변경 사항이 즉시 디스크에 기록된다.
- u : 삭제 불가 (undeletable) - 파일을 삭제할 수 없다.
유용한 옵션
- -R : 디렉토리 안의 모든 파일을 재귀적으로 처리한다.
- -a : 점(.)으로 시작하는 파일 이름을 포함하여 모든 파일을 표시한다.
- -d : 디렉토리를 리스트할 때, 내용물이 아니라 디렉토리 자체만 표시한다.
chattr 명령어
앞서 살펴본 lsattr 명령어는 파일의 확장 속성을 확인하는 데 사용된다. 이번에는 chattr 명령어를 사용하여 파일의 확장 속성을 변경하는 방법에 대해 알아보자.
chattr 명령어 사용 방법
chattr [옵션] [+|−|=] 속성 파일
- 옵션 : 명령어 수행 방법을 설정한다.
- [+|-|=] : 속성을 추가(+) 제거(-) 또는 설정(=) 한다.
- 속성 : 변경할 파일의 속성 이름 (예: i, u, a 등)
- 파일 : 속성을 변경할 파일
chattr 명령어 사용 예시
sudo chattr +i 속성파일 # 속성파일을 삭제 불가능하게 설정 (루트 권한 필요)
sudo rm 속성파일 # 삭제하려고 시도하지만 실패합니다.
sudo chattr -i 속성파일 # 삭제 불가 속성 해제
sudo rm 속성파일 # 이제 파일을 삭제할 수 있습니다.
위 예시에서는 '속성파일'을 삭제 불가능하도록 속성을 변경한 후 다시 해제하는 과정을 보여준다.
주의사항
- 모든 파일 시스템이 모든 속성을 지원하지는 않는다.
- chattr 명령어는 중요한 시스템 파일의 속성을 변경할 수도 있기 때문에 주의해서 사용해야 한다. 잘못된 설정은 시스템 문제를 야기할 수 있다.
유용한 옵션
- -R : 디렉토리 안의 모든 파일을 재귀적으로 처리한다.
문서 참조
https://www.oreilly.com/library/view/linux-pocket-guide/9781098157951
'Linux' 카테고리의 다른 글
Linux 디스크와 파일 시스템 명령어 (0) | 2024.07.22 |
---|---|
Linux 패키지 설치 명령어 (0) | 2024.07.22 |
Linux 사용자 그룹 관리 명령어 (0) | 2024.07.21 |
Linux 프로세스 관련 명령어 (0) | 2024.07.21 |
Linux 파일 검색 명령어 (0) | 2024.07.21 |