- Published on
2025.09.20
[모두의 리눅스] - 09. 퍼미션과 슈퍼 사용자
9.1. 파일의 소유자와 소유 그룹
리눅스의 모든 파일에는 소유자가 있으며, 소유자는 접근 권한을 설정할 수 있음.
ls에 -l 옵션을 지정하면 소유자를 확인할 수 있다.
$ ls -l /bin/cat
명령어를 쳤을 때 출력되는 내용을 확인하면 세 번째와 네 번째 항목에서 파일의 소유자와 소유 그룹을 확인할 수 있음.
그룹
그룹이란 사용자들을 묶은 그룹으로, 여러 사용자를 그룹에 소속시켜 권한을 관리할 수 있음.
한 사용자가 여러 그룹에 소속될 수 있고, 처음 사용자 생성 시 그룹을 지정하지 않으면 사용자 이름과 동일한 그룹에 소속됨.
groups명령어를 통해 자신의 그룹을 확인할 수 있음
9.2. 파일의 퍼미션
퍼미션
사용자별 권한
파일의 퍼미션을 확인할 때는 ls명령어에 -l 옵션을 지정.
$ ls -l /bin/cat
-rwxr-xr-x 1 User 197121 38719 10월 22 2024 /bin/cat*
첫 번째 글자는 파일의 타입으로, -는 일반 파일, d는 디렉터리, l은 심볼릭 링크를 의미.
파일 타입 다음 9자 rwxr-xr-x는 파일 모드로, 파일의 퍼미션을 의미.
9글자는 3글자씩 각각 소유자, 소유 그룹, 기타 사용자의 퍼미션을 표시.
| 기호 | 의미 |
|---|---|
| r | 읽기 (read) |
| w | 쓰기 (write) |
| x | 실행 (execute) |
위의 /bin/cat 권한은 다음과 같다.
| 사용자 종류 | 읽기 | 쓰기 | 실행 |
|---|---|---|---|
| 소유자 | 허가 | 허가 | 허가 |
| root 그룹에 소속된 사용자 | 허가 | 금지 | 허가 |
| 기타 사용자 | 허가 | 금지 | 허가 |
디렉터리도 퍼미션을 설정할 수 있으며, ls명령어에 -l옵션과 함께 -d옵션을 지정한다.
ls -ld dir1
디렉터리 퍼미션 기호의 의미는 파일과 조금 다름.
| 기호 | 의미 |
|---|---|
| r | 읽기: 디렉터리의 파일 목록 확인 가능 |
| w | 쓰기: 디렉터리 내 파일 및 디렉터리 작성/삭제 가능 |
| x | 실행: 디렉터리로 이동 가능 |
chmod 명령어: 파일 모드 변경
파일이나 디렉터리의 퍼미션을 설정하려면 chmod명령어를 사용한다. 퍼미션 설정 방법은 기호 모드와 수치 모드 두 가지가 있다.
- 기호 모드
chmod [ugoa] [+-=] [rwx] 파일 이름
기호 모드는 상대적으로 퍼미션을 지정
ugoa는 사용자를, +-=는 퍼미션 허용 여부를, rwx는 읽기, 쓰기, 실행의 퍼미션을 의미함.
| 기호 | 의미 |
|---|---|
| u | 소유자 |
| g | 소유 그룹 |
| o | 기타 사용자 |
| a | ugo 모두 |
| + | 퍼미션 추가 |
| - | 퍼미션 금지 |
| = | 지정한 퍼미션과 같게 함 |
- 수치 모드
chmod 8진수수치 파일 이름
수치 모드는 기존 퍼미션을 새로운 퍼미션으로 덮어씀. 퍼미션에 해당하는 숫자를 더해서 퍼미션을 지정함.
| 의미 | 숫자 |
|---|---|
| 읽기 (r) | 4 |
| 쓰기 (w) | 2 |
| 실행 (x) | 1 |
예로, rwxr-xr-x라는 권한은 755가 되는데,
rwx(421)의 합 7 / r-x(4_1)의 합 5 / r-x(4_1)의 합 5인 식이다.
chmod 755 file.txt
9.3. 슈퍼 사용자
슈퍼 사용자는 관리자 권한으로, 루트 사용자라고도 불림.
su 명령어: 사용자 전환
su명령어로 일시적으로 다른 사용자로 전환 가능한데, 주로 슈퍼 사용자로 전환하기 위해 사용.
su명령어에 아무 인자도 주지 않으면 슈퍼 사용자로 전환하는 것을 의미하고, 프롬프트가 $에서 #으로 바뀜. 작업이 완료되었으면 exit명령어로 일반 사용자로 돌아갈 수 있음.
슈퍼 사용자로 전환 시, 환경 변수나 디렉터리는 일반 사용자의 상태가 유지되므로, 슈퍼 사용자용 환경으로 초기화를 위해 su -로 하이픈을 추가해서 실행하는 것이 좋다.
sudo 명령어: 명령어를 다른 사용자가 되어 실행
sudo명령어를 사용하면 다른 사용자가 되어 명령어를 실행할 수 있음. 사용자를 지정하지 않으면 슈퍼 사용자로 명령어를 실행.
sudo 명령어
sudo명령어를 사용할 수 있는 사용자는 /etc/sudoers 파일을 통해 관리된다. 해당 파일을 텍스트 에디터로 편집하는 것은 위험하므로 visudo라는 특별한 명령어가 존재한다. visudo는 슈퍼 사용자 권한이 필요하며 Vim을 사용해 편집하게 된다.