su와 sudo
쉽게 말하면
관리자(root)만 할 수 있는 일을 해야 할 때 쓰는 두 방법이에요. su는 관리자 계정으로 아예 갈아타기(관리자 비밀번호 필요), sudo는 내 계정 그대로 명령 하나만 관리자 권한으로 실행하기(내 비밀번호 필요, 허락된 사람만)예요.
시험용 정의
su(substitute user)는 다른 사용자(기본 root)로 전환하며 그 사용자의 비밀번호가 필요하다. sudo는 허락받은 명령을 root 권한으로 하나씩 실행하며 내 비밀번호로 확인한다. 누가 무엇을 할 수 있는지는 /etc/sudoers에 적는다.
비유로 이해하기
su는 관리자 사원증을 빌려 관리자 행세를 하는 것(관리자 비밀번호 필요), sudo는 내 사원증으로 "이 서류만 관리자 도장" 받아 가는 것(허가 목록에 있어야 함, 기록도 남음)이다.
자세히
먼저 알아 둘 말
| 말 | 뜻 |
|---|---|
| root (슈퍼유저) | UID 0인 관리자 계정. 권한 검사를 받지 않아 모든 파일을 읽고 고치고 지울 수 있다. 실수 한 번이 시스템 전체를 망가뜨릴 수 있어서, 평소엔 일반 계정으로 일하고 필요할 때만 root 권한을 빌린다 |
| 로그인 환경 | 로그인할 때 셸이 읽는 설정 파일(/etc/profile, ~/.bash_profile)이 만들어 주는 환경. 홈 디렉터리, PATH 같은 환경 변수가 그 사용자에 맞게 정해진다. su -는 이것까지 새로 읽고, 그냥 su는 원래 사용자의 환경을 그대로 가지고 간다 |
| wheel 그룹 | 관리자 권한을 쓸 수 있는 사용자를 모아 두는 전통적인 그룹 이름(레드햇 계열). Ubuntu는 sudo 그룹 |
| /etc/sudoers | sudo 허가 목록 파일. 누가, 어느 호스트에서, 누구의 권한으로, 어떤 명령을 쓸 수 있는지 적는다. sudo 사용 기록은 로그(/var/log/secure 또는 auth.log)에 남는다 |
su
| 명령 | 뜻 |
|---|---|
| su | root로 전환 (현재 환경 유지) |
| su - (su -l) | root로 로그인 환경까지 전환 |
| su - kim | kim으로 로그인 전환 |
| su -c '명령' 사용자 | 그 사용자로 명령 하나만 실행 |
| exit | 원래 사용자로 돌아옴 |
sudo
| 명령 | 뜻 |
|---|---|
| sudo 명령 | root 권한으로 명령 실행 (내 비밀번호, 일정 시간 기억) |
| sudo -u kim 명령 | kim 권한으로 실행 |
| sudo -i | root 로그인 셸 (su -와 비슷) |
| sudo -s | root 셸 (환경 유지) |
| sudo -l | 내가 쓸 수 있는 sudo 권한 목록 |
| sudo -k | 기억된 인증 지우기 |
| visudo | /etc/sudoers를 문법 검사하며 안전하게 편집 |
/etc/sudoers 읽기
kim ALL=(ALL) ALL → 사용자 kim은 모든 호스트에서, 모든 사용자로, 모든 명령을 실행 가능. %wheel ALL=(ALL) ALL → wheel 그룹(%) 전체에 허용 (RHEL 계열). Ubuntu는 sudo 그룹. NOPASSWD:를 붙이면 비밀번호를 묻지 않는다. 직접 편집하지 말고 visudo를 쓴다(문법 오류로 sudo가 막히는 것을 방지).
시험에 이렇게 나와요
- su - 사용자(로그인 셸로 전환), sudo 명령(설정은 /etc/sudoers, visudo로 편집)
- wheel 그룹과 sudo 권한
1차 출제기준 · 공개 기출 없음
확인 문제
Q1. kim이 su root로 root가 됐는데 root의 PATH나 홈이 아니라 kim의 환경이 그대로 남아 있다. root의 로그인 환경까지 가져오려면?
- su root -p
- su -c
- su -
- sudo -l
정답 보기
3번 su -
su -(또는 su -l, su --login)는 대상 사용자로 새로 로그인한 것처럼 그 사용자의 환경 설정 파일을 읽고 홈으로 이동한다. 대시 없는 su는 사용자만 바꾸고 현재 환경을 유지한다.
Q2. /etc/sudoers 파일을 안전하게 편집하는 명령은?
- visudo
- vi /etc/sudoers
- sudo -e
- sudoedit
정답 보기
1번 visudo
visudo (저장 전 문법 검사).
Q3. sudo를 쓸 때 입력하는 비밀번호는?
- 비밀번호 없음
- sudoers에 적힌 비밀번호
- root의 비밀번호
- 자기 자신의 비밀번호
정답 보기
4번 자기 자신의 비밀번호
기본은 자기 비밀번호. su는 대상 사용자 비밀번호.
Q4. 현재 사용자가 쓸 수 있는 sudo 권한을 확인하는 명령은?
- sudo -v
- sudo -l
- sudo -k
- sudo -i
정답 보기
2번 sudo -l
sudo -l이다. l(list)은 내가 sudo로 실행할 수 있는 명령 목록을 보여 준다. sudo -i는 root 셸로 들어간다.
헷갈리기 쉬운 O·X
su만 입력하면 root 사용자로 전환된다.
정답 보기
O 사용자를 생략하면 root.
/etc/sudoers에서 %wheel은 wheel이라는 사용자를 뜻한다.
정답 보기
X %는 그룹. wheel 그룹 전체.
su -는 대상 사용자의 로그인 환경 설정 파일을 읽는다.
정답 보기
O 맞는 설명이다.