{{위키데이터 속성 추적}}
{{소문자}}
{{소프트웨어 정보
| 이름                         = sudo
| 개발자                       = Todd C. Miller
| 화면                         = Sudo on Ubuntu.png
| 설명                         = 터미널에서의 sudo
| 최근 버전                    = 1.8.22
| 최근 버전 출시일             = {{시작 날짜와 나이|2018|1|16}}
| 최근 미리보기 버전           =
| 최근 미리보기 버전 출시일    =
| 운영체제                     = [[유닉스 계열]]
| 종류                         = 권한 부여
| 라이선스                     = [[ISC 라이선스|ISC]]-style<ref>{{웹 인용 |url=http://www.sudo.ws/sudo/license.html |제목=Sudo License |확인날짜=2010-05-22 |보존url=https://web.archive.org/web/20150731135949/http://www.sudo.ws/sudo/license.html |보존날짜=2015-07-31 |url-status=dead }}</ref>
| 웹사이트                     = [http://www.sudo.ws/ www.sudo.ws]
}}
'''sudo''' 명령어는 [[유닉스]] 및 [[유닉스 계열]] [[운영 체제]]에서, 다른 사용자의 보안 권한, 보통 [[슈퍼유저]]로서 프로그램을 구동할 수 있도록 하는 [[프로그램]]이다. 명칭은 본래 슈퍼유저로서의 실행에 사용되던 것에서 “superuser do”에서 유래하였으나, 후에 프로그램의 기능이 확장되며 “substitute user do”(다른 사용자의 권한으로 실행)의 줄임말로 해석되게 되었다. 기본적으로 sudo는 사용자 비밀번호를 요구하지만 루트 비밀번호(root password)가 필요할 수도 있고, 한 터미널에 한번만 입력하고 그 다음부터는 비밀번호가 필요 없다.<ref>{{웹 인용 |url=http://www.gratisoft.us/sudo/man/sudo.html |제목=Manpage for sudo |accessdate=2007-11-04 |보존url=https://web.archive.org/web/20070612220545/http://www.gratisoft.us/sudo/man/sudo.html |보존날짜=2007-06-12 |url-status=dead }}</ref> Sudo는 각 명령줄에 사용할 수 있으며 일부 상황에서는 관리자 권한을 위한 슈퍼유저 로그인(superuser login)을 완벽히 대신하며, 주로 [[우분투]], [[리눅스]]와 [[애플]]의 [[OS X]]에서 볼 수 있다.<ref>[https://help.ubuntu.com/community/RootSudo RootSudo - Community Ubuntu Documentation]</ref><ref>[http://www.macdevcenter.com/pub/a/mac/2002/10/22/macforunix.html MacDevCenter.com - Top Ten Mac OS X Tips for Unix Geeks]</ref>

== 역사 ==
Robert Coggeshall과 Cliff Spencer는 1980년 즈음 [[버펄로 대학교|SUNY/버펄로]]의 컴퓨터 과학부에서 오리지널 하위 시스템을 작성했다.<ref name="grati9">{{웹 인용|url=http://www.gratisoft.us/sudo/history.html|title=A Brief History of Sudo|author=Miller, Todd C|accessdate=2007-03-05}}</ref> Robert Coggeshall은 sudo를 [[콜로라도 볼더 대학교]]로 가져왔다. 1986년부터 1993년까지 코드와 기능은 콜로라도 볼더 대학교 컴퓨터 과학부, College of Engineering and Applied Science의 IT 직원들(Todd C. Miller 등)에 의해 실질적으로 수정되었다.<ref name="grati9" /> 현재 버전은 1994년 이후로 [[OpenBSD]]의 개발자 Todd C. Miller가 공개적으로 유지보수하고 있으며,<ref name="grati9"/> 1999년 이후로 [[ISC 라이선스|SC-스타일]] 라이선스로 배포되고 있다.<ref name="grati9"/>

2009년에 [[마이크로소프트|MS]]가 sudo 명령어를 특허로 등록했다는 것이 밝혀져 큰 파장을 일으켰으나<ref>{{웹 인용|url=http://www.maximumpc.com/article/news/microsoft_has_patented_sudo_yes_command|제목=Microsoft has Patented "sudo." Yes, the Command|author=Lilly, Paul|accessdate=2009-11-13|보존url=https://web.archive.org/web/20091116112028/http://www.maximumpc.com/article/news/microsoft_has_patented_sudo_yes_command|보존날짜=2009-11-16|url-status=dead}}</ref>, 그 청구항들은 sudo의 개념이라기보다는 특정한 [[그래픽 사용자 인터페이스|GUI]]에 대해 좁게 고안된 것이었다<ref>{{웹 인용 |url=http://blog.seattlepi.com/microsoft/2009/11/12/did-microsoft-just-sneakily-patent-an-open-source-tool/ |제목=보관된 사본 |확인날짜=2012-12-15 |archive-date=2011-10-10 |archive-url=https://web.archive.org/web/20111010024707/http://blog.seattlepi.com/microsoft/2009/11/12/did-microsoft-just-sneakily-patent-an-open-source-tool/ |url-status= }}</ref>.

== 예제 ==
sudo 명령어를 실행하기 전에, 사용자들은 비밀번호를 입력한다. 한 번 승인되고 만약 /etc/sudoers 설정 파일이 그 유저를 승인한다면 명령은 실행된다. kdesu, kdesudo, gksu, gksudo와 같이 GUI 환경에서 사용할 수 있는 몇몇 명령어 들이 있다.<ref>{{웹 인용 |url=http://developer.apple.com/mac/library/documentation/Security/Conceptual/authorization_concepts/01introduction/introduction.html |제목=Introduction to Authorization Services Programming Guide |확인날짜=2010-05-22 |archive-date=2010-03-05 |archive-url=https://web.archive.org/web/20100305133707/http://developer.apple.com/Mac/library/documentation/Security/Conceptual/authorization_concepts/01introduction/introduction.html |url-status=dead }}</ref> 다음은 접근이 거부된 예이다.

<syntaxhighlight lang="console">
snorri@rimu:~$ sudo emacs /etc/resolv.conf

We assume you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

1) Respect the privacy of others.
2) Think before you type.
3) With great power comes great responsibility.

Password:
snorri is not in the sudoers file. This incident will be reported.
</syntaxhighlight>

아래의 로그는 실패한 시도와, snorri를 /etc/sudoers에 추가한 뒤에 성공한 시도이다.

<syntaxhighlight lang="console">
snorri@rimu:~$ sudo tail /var/log/auth.log
Aug 5 06:00:28 localhost sudo: snorri : user NOT in sudoers ; TTY=pts/1 ; PWD =/home/snorri ; USER=root ; COMMAND=/usr/bin/emacs /etc/resolv.conf
Aug 5 06:01:15 localhost su[15573]: (pam_unix) session opened for user root by snorri(uid=1000)
Aug 5 06:02:09 localhost sudo: snorri : TTY=pts/1 ; PWD=/home/snorri ; USER=root ; COMMAND=/usr/bin/emacs /etc/resolv.conf
Aug 5 06:02:49 localhost sudo: snorri : TTY=pts/1 ; PWD=/home/snorri ; USER=root ; COMMAND=/usr/bin/tail /var/log/auth.log
</syntaxhighlight>

== runas, su, 그리고 sudo ==
윈도는 [[runas]]라고 불리는 명령어를 가지고 있다. 이것의 기능은 비슷하나 runas도 아니고 [[사용자 계정 컨트롤]](UAC)도 아닌 것이 sudo이다. - 그들은 권한을 추가하기 보다는 다른 사용자를 가장한다.

runas와 su:

* 권한이 부여된 유저가 그들 고유의 글을 이용하여 높은 권한의 프로세스를 실행하는 것을 허락치 않는다.
* 사용자의 프로파일과 객체의 소유권을 보존하지 않는다.

runas명령어는 sudo가 아니라 유닉스의 su와 더 동등하다. sudo가 su에 비해 더 우수한 이유는 su는 사용자의 고유 신분에 기반해 권한 이동을 엑세스하고, 가장 중요한 것은 sudo는 비밀번호 공유가 필요 없기 때문이다. runas나 su를 특권 계정을 엑세스하기 위해 사용하는 것은 관리자-가능 계정의 비밀번호를 유포하는 것이 필요하기 때문에 sudo에는 없는 보안상의 약점을 가지고 있다.

== RBAC ==
{{본문|역할 기반 접근 제어}}
[[SELinux]]와 함께 사용하면, sudo는 [[역할 기반 접근 제어]](RBC)의 역할 전환을 위해 사용할 수 있다.<ref>{{웹 인용|title=SELinux Lockdown Part Five: SELinux RBAC|url=http://selinux-mac.blogspot.com.au/2009/06/selinux-lockdown-part-five-selinux-rbac.html|accessdate=2012-11-17}}</ref>

== 도구 및 유사 프로그램 ==
* visudo - <code>/etc/sudoers</code>파일을 수정하여 사용하는 vi 기반 프로그램.

== 같이 보기 ==
* [[Chroot]]
== 각주 ==
{{각주}}

== 외부 링크 ==
* {{언어링크|en}} [http://www.sudo.ws/ 공식 홈페이지]
* {{언어링크|en}} [http://sourceforge.net/projects/rootsh rootsh] 와 [http://sourceforge.net/projects/sudosh/ sudosh]
* {{언어링크|en}} [http://rixstep.com/2/20070201,00.shtml ''Sudo Fun''] - OS X에서 sudo를 사용하는 법에 대한 가이드
*(한글) [https://swiftcoding.org/remind-of-cli-commands 리눅스 root와 sudo 명령어 접두사 개념과 사용법]

{{유닉스 명령어}}

[[분류:보안 소프트웨어]]
[[분류:유닉스 사용자 관리 및 지원 관련 유틸리티]]
[[분류:시스템 관리]]