공든탑앱 열기

su와 sudo

리눅스마스터 2급 · 기본 명령어 · 약 9분

쉽게 말하면

관리자(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/sudoerssudo 허가 목록 파일. 누가, 어느 호스트에서, 누구의 권한으로, 어떤 명령을 쓸 수 있는지 적는다. sudo 사용 기록은 로그(/var/log/secure 또는 auth.log)에 남는다

su

명령뜻
suroot로 전환 (현재 환경 유지)
su - (su -l)root로 로그인 환경까지 전환
su - kimkim으로 로그인 전환
su -c '명령' 사용자그 사용자로 명령 하나만 실행
exit원래 사용자로 돌아옴

sudo

명령뜻
sudo 명령root 권한으로 명령 실행 (내 비밀번호, 일정 시간 기억)
sudo -u kim 명령kim 권한으로 실행
sudo -iroot 로그인 셸 (su -와 비슷)
sudo -sroot 셸 (환경 유지)
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가 막히는 것을 방지).

시험에 이렇게 나와요

1차 출제기준 · 공개 기출 없음

확인 문제

Q1. kim이 su root로 root가 됐는데 root의 PATH나 홈이 아니라 kim의 환경이 그대로 남아 있다. root의 로그인 환경까지 가져오려면?

  1. su root -p
  2. su -c
  3. su -
  4. sudo -l
정답 보기

3번 su -

su -(또는 su -l, su --login)는 대상 사용자로 새로 로그인한 것처럼 그 사용자의 환경 설정 파일을 읽고 홈으로 이동한다. 대시 없는 su는 사용자만 바꾸고 현재 환경을 유지한다.

Q2. /etc/sudoers 파일을 안전하게 편집하는 명령은?

  1. visudo
  2. vi /etc/sudoers
  3. sudo -e
  4. sudoedit
정답 보기

1번 visudo

visudo (저장 전 문법 검사).

Q3. sudo를 쓸 때 입력하는 비밀번호는?

  1. 비밀번호 없음
  2. sudoers에 적힌 비밀번호
  3. root의 비밀번호
  4. 자기 자신의 비밀번호
정답 보기

4번 자기 자신의 비밀번호

기본은 자기 비밀번호. su는 대상 사용자 비밀번호.

Q4. 현재 사용자가 쓸 수 있는 sudo 권한을 확인하는 명령은?

  1. sudo -v
  2. sudo -l
  3. sudo -k
  4. 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 맞는 설명이다.

함께 보면 좋은 개념