리눅스 기초 · 권한과 사용자 · 실습
권한·사용자·그룹 다루기
목표
사용자와 그룹을 만들고, 공유 디렉터리에 필요한 특수 비트를 걸고, 권한이 기대대로인지 스스로 점검하는 스크립트까지 만듭니다.
왜 중요한가
권한 사고의 대부분은 "파일 권한"만 보고 "디렉터리 권한"을 잊어서 생깁니다. 파일을 지우는 데 필요한 것은 그 파일에 대한 쓰기 권한이 아니라 그 파일이 들어 있는 디렉터리에 대한 쓰기 권한입니다. 그래서 읽기 전용 파일도 남이 지울 수 있고, 유닉스는 그 구멍을 막으려고 sticky 비트를 따로 뒀습니다. 같은 이유로 여러 사람이 쓰는 디렉터리에는 setgid 가 필요합니다 - 안 걸면 각자 자기 기본 그룹으로 파일을 만들어 서로 못 읽는 상황이 반복됩니다.
단계
1. /root/secret.txt 를 만들고 권한을 600 으로 맞추세요.
2. student1 사용자를 만드세요.
3. devs 그룹을 만들고 student1 을 그 그룹에 넣으세요(기존 그룹은 유지).
4. /root/shared/report.txt 를 만들고 소유자:그룹을 student1:devs 로 바꾸세요.
5. /root/shared 디렉터리의 그룹을 devs 로 하고 권한을 2770 으로 맞추세요.
6. /root/shared/incoming 디렉터리를 만들고 권한을 1777 로 맞추세요.
7. /root/shared/run.sh 를 만들고 권한을 750 으로 맞추세요.
8. /root/shared/checkmode.sh <파일경로> <기대권한> 을 만드세요. 실행 권한이 있어야 하고, 권한이 일치하면 종료 코드 0, 다르면 0이 아닌 코드로 끝나면서 현재 권한을 출력해야 합니다. 파일이 없을 때도 0이 아닌 코드여야 합니다.
참고
stat -c %a 파일은 8진수 권한만 출력합니다. 특수 비트가 있으면 네 자리로 나옵니다.id -nG student1로 사용자가 속한 그룹 목록을 볼 수 있습니다.- 흔한 실수 1: 3번에서
usermod -G devs student1처럼-a를 빼면 기존 보조 그룹이 전부 사라집니다. - 흔한 실수 2: 5번에서
chmod 770만 하면 앞자리 setgid 가 빠집니다. 네 자리로 지정하세요.
단계 8개
- 비밀 파일 권한 잠그기
- 사용자 만들기
- 그룹 만들고 사용자 넣기
- 소유자와 그룹 바꾸기
- 공유 디렉터리에 setgid 걸기
- 업로드 디렉터리에 sticky 걸기
- 실행 스크립트 권한 정리
- 권한 점검 스크립트 만들기