접근 권한의 기초: chmod
, chown
, umask
1. 접근 권한의 개념
Linux에서 파일이나 디렉토리를 다룰 때, 그들에 대한 접근을 관리해야 할 필요가 생겨. 양말을 어디든 놔둔다고 생각해봐, 그러면 집안의 누구든지 사용할 수 있겠지! Linux의 접근 권한은 "무단 양말 사용"(혹은 더 중요한 것들, 예를 들어 스크립트 같은 것들)을 방지할 수 있어. 이제 시작해 보자.
Linux의 모든 파일(그리고 디렉토리)은 읽기, 쓰기 또는 실행할 수 있는 권한을 정의하는 세트의 접근 권한이 있어:
- 읽기 (r): 파일 내용을 보거나 디렉토리 내 파일 목록을 볼 수 있어.
- 쓰기 (w): 파일 내용을 수정하거나 디렉토리에 파일을 추가/삭제할 수 있어.
- 실행 (x): 파일을 프로그램으로 실행(혹은 디렉토리로 접근)할 수 있어.
3단계 모델
각 권한은 3개의 사용자 그룹에 적용돼:
- 소유자 (owner): 파일을 생성한 사용자.
- 그룹 (group): 파일에 할당된 사용자 그룹.
- 기타 (others): 시스템의 나머지 사용자들.
파일의 접근 권한 예:
-rwxr-xr--
분석해 보자:
- 첫 번째 문자
-
는 이것이 파일임을 나타내(디렉토리라면d
가 있어). - 처음 세 문자
rwx
— 소유자의 권한(읽기, 쓰기, 실행). - 다음 세 문자
r-x
— 그룹의 권한(읽기, 실행). - 마지막 세 문자
r--
— 기타 사용자들의 권한(읽기만).
2. chmod
명령어: 접근 권한 관리
기호 형식
chmod
명령어는 파일 및 디렉토리의 접근 권한을 변경합니다. 기호 형식은 다음과 같습니다:
chmod [누구][동작][권한] 파일_이름
- 누구:
u
(소유자),g
(그룹),o
(기타),a
(모두). - 동작:
+
(권한 추가),-
(권한 제거),=
(권한 정확히 설정). - 권한:
r
(읽기),w
(쓰기),x
(실행).
예제:
# 모든 사용자에게 실행 권한을 설정합니다
chmod a+x script.sh
# 그룹에만 쓰기 권한을 추가합니다
chmod g+w file.txt
# 기타 사용자로부터 읽기 권한을 제거합니다
chmod o-r document.txt
8진수 형식
8진수 형식(또는 숫자 형식)은 더 간결하지만 "숫자의 마법"을 이해해야 합니다. 이 형식에서는 각 권한 조합이 숫자로 나타납니다:
r = 4
w = 2
x = 1
권한은 더합니다:
rwx = 7
(4 + 2 + 1)rw- = 6
(4 + 2)r-- = 4
기록 형식:
chmod [숫자][숫자][숫자] 파일_이름
예제:
# 소유자에게 rwx 권한, 그룹에 r-x 권한, 기타 사용자에 r-- 권한을 설정합니다
chmod 754 file.sh
3. 파일 소유자 변경: chown
명령어
파일을 다른 사용자(또는 그룹)에게 넘겨야 할 때는 chown
명령어를 사용할 수 있어.
형식:
chown [사용자]:[그룹] 파일_이름
예제:
# 소유권을 사용자 user1로 변경
chown user1 myfile.txt
# 소유자와 그룹을 모두 변경
chown user1:group1 myfile.txt
# 그룹만 변경
chown :group2 myfile.txt
4. 기본 마스크: umask
파일을 생성할 때, 해당 파일의 접근 권한은 시스템에 의해 결정돼. 예를 들어, 권한이 rw-r--r--
일 수 있어. 근데 이 권한은 어디에서 오는 걸까? 답은 umask
명령어에서 나와.
umask
란?
umask
는 새로운 파일에 대해 설정되지 않을 권한을 정의해.
예를 들어:
- 파일의 기본 권한 세트:
666
(실행 권한 없음). - 마스크:
022
. - 최종 권한:
644
(666 - 022
).
명령어들:
- 현재 마스크 보기:
umask
- 새 마스크 설정:
umask 0022
예시:
# 새 파일이 rw-rw-r-- 권한을 가지도록 마스크 설정
umask 0002
5. 관리자 권한과 sudo
sudo
란?
sudo
(강조된 "superuser do")는 Linux 및 Unix 계열 시스템에서 사용자가 슈퍼유저(root) 또는 다른 높은 권한을 가진 사용자로 명령을 실행할 수 있게 하는 명령어야.
sudo
시스템은 root 계정을 항상 사용하지 않고도 일시적으로 관리자 권한에 접근할 수 있게 해주는 도구로, 시스템을 실수로 또는 악의적으로 변경할 위험을 줄여줘.
간단히 말하자면, sudo는 관리자 권한으로 실행하려는 명령어 앞에 추가하는 거야.
sudo
는 어떻게 작동해?
명령어 실행:
만약 sudo
로 명령어를 입력하면, 시스템은 현재 사용자가 높은 권한으로 명령어를 실행할 수 있는 권한이 있는지 확인해.
예를 들면:
sudo apt update
인증:
현재 세션에서 처음 sudo
를 사용할 때, 시스템은 현재 사용자(루트 아님)에 대한 비밀번호를 물어봐.
비밀번호를 성공적으로 입력하면, 시스템은 짧은 시간(보통 5-15분) 동안 인증을 저장해서 각 명령어마다 비밀번호를 다시 묻지 않아.
명령어 실행:
사용자가 sudo
설정에 명시된 권한을 가지고 있다면, 명령어는 슈퍼유저 권한으로 실행될 거야.
sudo
의 주요 기능과 명령어
권한을 가진 명령어 실행:
sudo <명령어>
예를 들면:
sudo apt install nginx
다른 사용자의 이름으로 명령어 실행: -u
옵션을 사용해:
sudo -u <사용자_이름> <명령어>
예를 들면:
sudo -u user1 ls /home/user1
관리 터미널 획득: root 권한으로 쉘을 실행해:
sudo -i
또는:
sudo su
sudo
설정 보기:
sudo -l
현재 사용자가 실행할 수 있는 명령어를 보여줘.
sudo
설정 편집:
sudo visudo
이 명령어는 /etc/sudoers
파일을 안전하게 편집할 수 있게 열어줘.
6. 예제
우리의 지식을 실습에 적용해 보자.
과제 1: chmod
로 권한 관리하기
파일을 만들어 봐:
touch myfile.txt
소유자에게 읽기, 쓰기, 실행 권한을 부여해:
chmod u+rwx myfile.txt
다른 사람들에게 읽기 권한만 추가해:
chmod o+r myfile.txt
권한을 확인해 봐:
ls -l myfile.txt
과제 2: chown
으로 소유자 변경
파일을 만들어 봐:
touch ownedfile.txt
user1
사용자로 소유자를 변경해 봐 (관리자 권한 필요):sudo chown user1 ownedfile.txt
변경 사항을 확인해 봐:
ls -l ownedfile.txt
과제 3: umask
실험하기
현재 마스크를 확인해 봐:
umask
마스크를
027
로 설정해:umask 027
새로운 파일을 만들어 봐:
touch newfile.txt
생성된 파일의 권한을 확인해 봐:
ls -l newfile.txt
7. 일반적인 실수와 특징
- 소유자 변경 시
sudo
를 빼먹음: 파일 소유자는 관리자만 변경할 수 있어. "Operation not permitted" 오류가 뜬다면sudo
를 추가해봐. chmod
명령어에서 잘못된 순서: 권한을 다른 객체에 변경했을 수도 있어. 원하는 파일이나 디렉토리를 선택했는지 확인해.umask
는 신규 파일에만 적용됨: 기존 파일의 권한을umask
로 바꾸려고 하면 작동하지 않아.chmod
를 써야 해.
Linux의 접근 권한이 얼마나 유연한지 알아? 온 세상에서 한 사람만 "볼 수 있는" 파일을 만들 수 있을 정도야! 큰 권한에는 큰 책임이 따른다고 하지. 이제 chmod
, chown
, umask
를 마스터했으니, 너의 Linux 시스템을 편리하면서도 안전하게 만들 준비가 됐어.
GO TO FULL VERSION