최근 수정 시각 : 2024-11-29 18:17:57

sudo

파일:sudosandwich.png
xkcd 149화 'Sandwich'[1]
영어 원본 보기
1. 개요2. 상세3. 여담

[clearfix]

1. 개요

Unix 계열 운영체제의 명령어로 Linux 및 그 계열 배포판에서 많이 쓰인다. 발음을 한국어로 표기하면 '수두'가 어원을 고려한 원래의 발음이고 현재는 '수도'도 많이 쓰인다. 드물긴 하지만 간혹 '스도'나 '서도'도 쓰인다. 수도와 수두를 많이 헷갈린다.

Substitute User and do의 줄임말이다. '다른 사용자 권한으로 실행한다'는 뜻이다.[2] Shut Up and DO 라고도 한다. 각종 명령어 맨 앞에 sudo를 붙이면 그 명령어는 root 권한, 즉 최고 관리자 권한으로 실행이 된다. 관리자 계정의 비밀번호로 직접 로그인하는 su와 다르게 sudo를 사용하는 당사자의 비밀번호를 사용한다.

2. 상세

sudo 명령어는 /etc/sudoers 설정 파일에 명시되어 있는 User만 사용 가능하다. 이를 수정하려면 visudo 명령어를 이용하는 것이 정석적이다. 이를 사용하지 않을 시 sudoers 파일에 보안상 문제가 생길 수 있다.[3]

Windows의 '관리자 권한으로 실행'과 비슷한 기능을 한다. 실제로 NT 커널 운영체제에 sudo 명령어가 도입된 후 해당 명령어를 쓰면 사용자 계정 컨트롤 경보가 뜬다. 이러한 경보기능은 보안이 중요해진 이후에 나오는 Linux 주요 배포판에 역수입되어 sudo를 사용하면 Windows의 UAC처럼 권한 상승 안내문이 나온다.

만약 chown -R 명령어를 잘못 사용해서 sudo 관련 폴더 소유자가 root가 아닌 일반 계정으로 바뀌면 재설치하기 전에는 다시는 root의 권한이 필요한 작업을 할 수 없다. 물론 root로 로그인할 수 있다면 su를 쓰거나 root로 로그인해서 다시 복구하면 되지만 보통 sudo를 사용하겠다는 것은 우분투의 경우와 같이 root 계정을 아예 막겠다는 이야기라는 것이 문제다.

이처럼 사실 sudo는 상당히 조심해서 써야 하는 명령어이다. 이를테면 sudo rm -rf ./*를 잘못 쳐서 sudo rm -rf /*을 치는 순간 돌아올 수 없는 길을 건넌 것이다. 중요한 명령을 sudo로 실행할 때는 제대로 입력했는지 확인하는 습관을 가지자. 실제로 sudo를 사용할 때 명령어를 잘못 입력하여 사고가 일어난 사례가 심심찮게 나온다.[4]

주요 Linux 배포판[5]에서 sudo 명령을 처음 실행하면 아래와 같은 명언(?)이 나온다.
로컬 시스템 관리자에게 일반적인 지침을 받았으리라 믿습니다.
보통 세 가지로 요약합니다:


1) 타인의 사생활을 존중하십시오.
2) 입력하기 전에 한번 더 생각하십시오.
3) 막강한 힘에는 상당한 책임이 뒤따릅니다.

3. 여담

  • 백괴사전의 sudo 문서는 이 명령어를 이용한 드립으로 가득 차 있다.
  • OpenBSD의 doas를 사용하는 유저도 존재한다. sudo에 비해 가볍고, 문법이 쉽고 직관적이기 때문에 특히나 Linux에서 점차 받아들여지고 있다. 반면에 수십에서 수백의 유저를 일괄적으로 관리해야 하고 기존의 익숙한 방식을 지향하는 Linux 서버 등에서는 대부분 sudo를 사용한다.
  • UNIX 계열 운영체제에만 있으므로 Windows에서는 사용할 수 없었는데 Windows 11 프리뷰 빌드 26052부터 공식적으로 sudo 명령어가 추가되었다. 다만 설정에서 직접 켜줘야 한다.[6] #


파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 문서의 r88에서 가져왔습니다. 이전 역사 보러 가기
파일:CC-white.svg 이 문서의 내용 중 전체 또는 일부는 다른 문서에서 가져왔습니다.
[ 펼치기 · 접기 ]
문서의 r88 (이전 역사)
문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

문서의 r (이전 역사)

[1] 여기서 더 진화된 짤방으로, 'You are not in the sudoers file. This incident will be reported.', 즉 '당신은 sudoers에 없습니다. 이 사고는 보고됩니다.'라고 대답하는 버전도 있다.[2] 사실 sudo는 그 이전에 있었던, 다른 유저의 셸로 로그인하는 명령어인 su의 기능을 한 개 명령어로 축소한 것이다. su는 substitute user의 약자이기 이전에는 superuser의 준말이었으므로, 결국 역사적 맥락을 고려하면 superuser do라고도 할 수 있다.[3] visudo가 별 특별한 에디터는 아니고 편집기 자체는 그냥 vim과 똑같지만, /etc/sudoers 파일에 문법적 오류 등이 있는 경우 파일을 쓰는 것을 방지한다. 예를 들어 sudoers파일을 편집하다가 ALL로 써야 하는 걸 AL;로 써버린 후 오타를 알아차리지 못한 채 저장하고 나면 sudo는 파일을 읽지 못하고 오류를 내게 된다. 심지어는 root 계정이 아닌 이상 이걸 되돌릴 수도 없는데, 이는 /etc/sudoers를 편집하는 일 자체가 슈퍼유저 권한이 필요하기 때문이다. visudo를 사용하면 실제로 파일을 덮어쓰기 전에 문법 오류가 있는지 검사하고 덮어쓰기를 방지해 이런 실수를 미연에 방지한다. "What Now?"가 나오고 e를 누르면 다시 편집, x를 누르면 저장하지 않고 나가기, Q를 누르면 저장하고 나간다. Q를 누르는 순간 되돌릴 수 없는 강을 건너게 된다.[4] https://gall.dcinside.com/board/view/?id=programming&no=1592491[5] Ubuntu 등 일부 배포판에서는 이 메시지가 빠져있다.[6] 설정 앱을 실행하고 시스템 > 개발자용에서 'sudo 사용'이라는 항목을 찾아서 활성화시키면 된다.