Lesson 7 of 20
권한 — 누가 무엇을 할 수 있는가
rwx 아홉 글자와 sudo 의 무게
지난 강 마지막에 /etc 안에 파일을 만들려다 거절당했습니다.
허가 거부(Permission denied). 왜일까요?
서버는 여러 사람이 함께 씁니다. 학교 사물함을 떠올려 보세요. 내 사물함은 내가 열 수 있고, 남의 사물함은 못 엽니다. 선생님(root)은 마스터키로 다 열 수 있고요. 리눅스는 이 규칙을 모든 파일 하나하나에 붙여 놓았습니다.
이 한 줄에 권한의 모든 정보가 들어 있습니다
bash
Runs on my virtual Ubuntu server
맨 앞의 -rw-r--r-- 이 바로 권한입니다. 열 글자를 네 덩어리로 잘라 읽습니다.
-종류- 파일 · d 폴더 · l 링크rw-주인(user)읽기·쓰기 가능, 실행 불가r--그룹(group)읽기만r--남들(other)읽기만r읽기 (read)내용을 볼 수 있다 = 4w쓰기 (write)고치고 지울 수 있다 = 2x실행 (execute)프로그램으로 돌릴 수 있다 = 1그리고 jit jit 두 낱말은 이 파일의 주인과 그룹입니다.
🎮 권한 계산기
체크박스를 눌러 보면서 rwx 와 숫자가 어떻게 대응하는지 몸으로 익혀 보세요. 아래쪽에서는 "이 사람이 이 파일로 무엇을 할 수 있나"를 판정해 줍니다.
chmod — 권한 바꾸기
두 가지 방법이 있습니다. 숫자로 통째로, 또는 기호로 조금씩.
실행 권한이 없어서 거절당합니다
bash
Runs on my virtual Ubuntu server
+x 로 실행 권한을 주면 돌아갑니다
bash
Runs on my virtual Ubuntu server
숫자 방식도 해 봅시다. 자주 쓰는 세 가지 조합만 알면 대부분 해결됩니다.
644보통 파일주인만 고칠 수 있고, 남은 읽기만755실행 파일 · 폴더주인은 다 되고, 남은 읽고 실행만600비밀 파일주인만 읽고 쓰기. 남은 아무것도 못 함600 과 644 를 오가며 아홉 글자가 어떻게 변하는지 보세요
bash
Runs on my virtual Ubuntu server
chown — 주인 바꾸기
주인을 바꾸는 것은 root 만 할 수 있습니다. 내 파일을 남에게 줘 버리는 건 되지만, 남의 파일을 내 것으로 뺏어 오는 건 안 되니까요.
웹서버가 쓰는 폴더는 웹서버 사용자(www-data)의 것이어야 합니다
bash
Runs on my virtual Ubuntu server
sudo — 잠깐만 관리자 되기
sudo 는 superuser do, "관리자 자격으로 실행해 줘"입니다.
매번 root 로 로그인하지 않고 필요한 순간에만 힘을 빌리는 것이 핵심이에요.
sudo 를 붙인 그 명령 하나만 root 로 실행됩니다
bash
Runs on my virtual Ubuntu server
🤔 Check yourself
-rwxr-xr-- 를 숫자로 나타내면?Answer 주인 rwx=4+2+1=7, 그룹 r-x=4+1=5, 남들 r--=4 → 754 입니다.
🤔 Check yourself
chmod 600 secret.txt 를 한 뒤, 같은 서버의 다른 사용자가 이 파일을 열면?Answer 600 = rw------- 이므로 주인만 읽고 쓸 수 있습니다. 다만 파일이 있다는 사실과 이름은 폴더 권한만 있으면
ls 로 보입니다. 내용만 막히는 것이지 존재가 숨겨지지는 않아요.🤔 Check yourself
서버 작업을 항상 root 로 하지 않고 필요할 때만 sudo 를 쓰는 이유는?
Answer 최소 권한의 원칙입니다. 평소에는 힘을 내려놓고 있다가 필요한 순간에만 빌립니다. 게다가
sudo 로 한 일은 /var/log/auth.log 에 기록으로 남아 나중에 추적할 수 있습니다.