맨위로가기

Sudo

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Sudo는 사용자가 자신의 개인 비밀번호를 입력하여 다른 사용자의 권한으로 명령을 실행할 수 있게 해주는 유닉스 및 유닉스 계열 운영 체제의 명령어이다. 1980년대에 개발되었으며, 토드 C. 밀러가 현재까지 유지보수하고 있다. Sudo는 보안 및 감사 기능을 제공하며, `/etc/sudoers` 파일을 통해 세부적인 권한 설정을 지원한다. `su` 명령어와 달리, sudo는 사용자의 비밀번호를 요구하며, 관리자 계정의 비밀번호 노출 없이 권한을 관리할 수 있다는 장점이 있다. 윈도우 운영체제에서는 `runas` 명령어가 유사한 기능을 제공하며, 2024년 2월에 윈도우용 sudo가 출시되었다.

더 읽어볼만한 페이지

  • 유닉스 사용자 관리 및 지원 관련 유틸리티 - 로케일
    로케일은 소프트웨어 국제화 및 지역화에서 사용자 문화적 배경에 맞춰 사용 환경을 조정하는 설정으로, 표시 언어, 숫자/날짜 형식, 문자 분류, 통화 형식 등을 포함한다.
  • 유닉스 사용자 관리 및 지원 관련 유틸리티 - 업타임
    업타임은 시스템이나 장치가 중단 없이 작동한 시간을 나타내는 지표로, 시스템 안정성을 보여주는 중요한 지표이며, 넷크래프트는 웹 호스팅 컴퓨터의 업타임 기록을 관리하고, 다양한 운영체제에서 시스템 가동 시간을 확인하는 방법을 제공한다.
  • 시스템 관리 - 슈퍼유저
    슈퍼유저는 운영 체제에서 모든 권한을 가진 사용자를 지칭하며, 유닉스 계열에서는 root, 윈도우에서는 관리자 계정이 해당 역할을 수행한다.
  • 시스템 관리 - 유닉스 셸
    유닉스 셸은 사용자의 명령을 해석하여 운영 체제에 전달하고 프로그램 실행을 관리하는 명령 줄 인터페이스로서, 톰슨 셸을 시작으로 본 셸, C 셸 등 다양한 셸들이 개발되어 사용자에게 다양한 셸 환경 선택권을 제공한다.
  • 보안 소프트웨어 - 코드 서명
    코드 서명은 코드의 출처와 무결성을 보장하기 위해 공개 키와 개인 키 쌍을 사용하여 코드를 서명하는 기술이며, 소프트웨어 보안 강화 및 출처 확인에 유용하다.
  • 보안 소프트웨어 - 구글 네이티브 클라이언트
    구글 네이티브 클라이언트는 웹 애플리케이션 개발 및 배포를 간소화하고 CPU 종속성 문제 해결을 목표로 개발된 기술로, 다양한 아키텍처 지원, 샌드박싱을 통한 보안 강화, PNaCl을 통한 이식성 향상을 제공했으나 페퍼 API 지원은 2022년 6월에 종료되었다.
Sudo - [IT 관련 정보]에 관한 문서
일반 정보
sudo 로고
sudo 로고
명칭sudo
발음IPA(영어): /súːduː/
개요
용도권한 부여
상세 정보
개발자Todd C. Miller
최초 릴리스1980년경
최신 버전1.9.15p
최신 버전 출시일2023년 12월 30일
저장소https://github.com/microsoft/sudo (Sudo for Windows)
프로그래밍 언어C
지원 운영체제유닉스 계열, Windows 11 24H2 이후 (Sudo for Windows)
라이선스ISC 스타일, MIT License (Sudo for Windows)
웹사이트https://www.sudo.ws/, https://learn.microsoft.com/ja-jp/windows/sudo/
지원 언어
지원 언어 수24개
지원 언어 목록이탈리아어, 우크라이나어, 영어, 에스페란토어, 네덜란드어, 카탈루냐어, 갈리시아어, 크로아티아어, 스웨덴어, 스페인어, 슬로베니아어, 세르비아어, 체코어, 중국어, 덴마크어, 독일어, 터키어, 일본어, 바스크어, 핀란드어, 프랑스어, 베트남어, 폴란드어, 포르투갈어, 러시아어

2. 역사

SUNY/버팔로와 콜로라도 볼더 대학교에서 초기 개발된 sudo는 1994년부터 OpenBSD 개발자인 토드 C. 밀러가 관리하고 있으며, 1999년부터 ISC 라이선스로 배포되고 있다.[41]

2009년 마이크로소프트가 sudo 명령어를 특허로 등록해 논란이 있었으나, 이는 sudo 개념 자체가 아닌 특정 GUI에 한정된 것이었다.[42][43]

로고는 xkcd 스트립을 참조한다.[9][10]

2. 1. 초기 개발

로버트 코게셜(Robert Coggeshall)과 클리프 스펜서(Cliff Spencer)는 1980년 즈음 SUNY/버펄로의 컴퓨터 과학부에서 오리지널 하위 시스템을 작성했다.[41] 로버트 코게셜은 sudo를 콜로라도 볼더 대학교로 가져왔다. 1986년부터 1993년까지 코드와 기능은 콜로라도 볼더 대학교 컴퓨터 과학부와 공과대학 IT 직원들(토드 C. 밀러(Todd C. Miller) 등)에 의해 실질적으로 수정되었다.[41] 현재 버전은 1994년 이후로 OpenBSD의 개발자 토드 C. 밀러가 공개적으로 유지보수하고 있으며,[41] 1999년 이후로 ISC-스타일 라이선스로 배포되고 있다.[41]

2. 2. 발전과 유지보수

SUNY/버팔로의 컴퓨터 과학부에서 Robert Coggeshall과 Cliff Spencer가 1980년 즈음 오리지널 하위 시스템을 작성했다.[41] Robert Coggeshall은 sudo를 콜로라도 볼더 대학교로 가져왔다. 1986년부터 1993년까지 코드와 기능은 콜로라도 볼더 대학교 컴퓨터 과학부, College of Engineering and Applied Science의 IT 직원들(Todd C. Miller 등)에 의해 실질적으로 수정되었다.[41] 현재 버전은 1994년 이후로 OpenBSD의 개발자 Todd C. Miller가 공개적으로 유지보수하고 있으며,[41] 1999년 이후로 ISC-스타일 라이선스로 배포되고 있다.[41]

2. 3. 마이크로소프트의 특허 등록 논란

2009년 MS가 sudo 명령어를 특허로 등록했다는 사실이 밝혀져 큰 파장을 일으켰으나[42], 그 청구항은 sudo 개념 자체가 아닌 특정 GUI에 좁게 한정된 것이었다.[43]

3. 설계

`sudo`는 su와 달리 사용자가 자신의 비밀번호를 제공하여 인증하고, `/etc/sudoers` 설정 파일에 명시된 권한을 부여받는 방식으로 작동하도록 설계되었다.[11][12] 이를 통해 권한 있는 사용자는 다른 계정의 비밀번호를 알 필요 없이 특정 그룹 (일반적으로 wheel 그룹 또는 sudo 그룹)에 속함으로써 권한을 변경하여 명령을 실행할 수 있다.[13] 또한 `sudo`는 각 명령 실행을 기록하도록 구성할 수 있어 시스템 보안 및 감사 기능을 강화한다.[15]

3. 1. 기본 작동 방식

su 명령어와 달리, 사용자는 슈퍼유저 또는 다른 계정의 비밀번호가 아닌, 자신의 개인 비밀번호를 sudo에 제공한다.[11] 이를 통해 권한이 있는 사용자는 다른 계정의 비밀번호를 노출하지 않고도 변경된 권한을 사용할 수 있다.[12] 사용자는 sudo 명령어를 사용하기 위해 특정 그룹에 속해야 하며, 일반적으로 wheel 그룹 또는 sudo 그룹이다.[13] 인증 후, 설정 파일이 사용자 접근을 허용하는 경우, 시스템은 요청된 명령을 실행한다. ''sudo''는 가상 터미널당 유예 기간(일반적으로 5분) 동안 사용자의 호출 권한을 유지하므로, 사용자는 다시 비밀번호를 제공하지 않고도 요청된 사용자로 여러 개의 연속적인 명령을 실행할 수 있다.[14]

sudo로 명령을 실행하기 전에 사용자는 일반적으로 자신의 비밀번호를 입력한다. 해당 비밀번호가 정확하고, `/etc/sudoers`라는 설정 파일에 해당 사용자의 접근 권한이 기술되어 있다면, 명령이 실행된다. GUI 환경에서 사용하기 위한 그래픽 프론트 엔드도 있으며, '''kdesu''', '''kdesudo'''([https://launchpad.net/kdesudo]), '''gksudo''' 등이 잘 알려져 있다. GUI 프론트 엔드로서의 "gksudo"는 메뉴 화면 등에 등록된 관리용 아이템이 클릭될 경우에 사용된다. 기본적으로 사용자가 입력한 비밀번호는 일정 기간 동안 유지되며, 그 동안의 sudo 명령 실행에서는 비밀번호 입력을 요구하지 않는다.

3. 2. 보안 및 감사

`sudo`는 실행되는 각 명령을 기록하도록 구성할 수 있어 시스템 보안 및 감사 기능을 강화한다.[15] 사용자가 `/etc/sudoers` 설정 파일에 나열되지 않았는데 `sudo`를 호출하려고 시도하면, 시도가 기록되었다는 예외 표시가 사용자에게 나타난다. 구성된 경우 루트 사용자는 메일을 통해 알림을 받으며, 기본적으로 시스템에 해당 항목이 기록된다.[15]

다음은 사용자가 접근을 거부당한 예시이다.



snorri@rimu:~$ sudo vi /etc/resolv.conf

We trust 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.

snorri@rimu:~$



다음은 이 실패가 발생했을 때의 로그와 ''snorri''를 `/etc/sudoers`에 추가하고 `sudo` 실행이 성공했을 때의 로그이다.



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/vi /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/vi /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


4. 설정

`sudo`의 설정은 `sudoers` 파일을 통해 이루어지며, 이 파일은 어떤 사용자가 어떤 명령을 실행할 수 있는지를 정의한다. `sudoers` 파일은 `visudo` 명령어를 사용하여 편집하는 것이 좋다. `visudo`는 편집기를 실행하여 `sudoers` 파일을 열고, 편집이 완료되면 구문 오류를 검사한다. `sudoers` 파일에는 사용자 권한, 명령 실행 옵션, 암호 관련 설정 등 다양한 내용을 지정할 수 있으며,[16] 파일의 문법은 매뉴얼에 EBNF를 사용하여 자세히 설명되어 있다.[29]

4. 1. `/etc/sudoers` 파일

`/etc/sudoers` 파일은 루트 사용자 또는 다른 지정된 사용자의 권한을 가지고 명령의 하위 집합을 실행할 수 있는 사용자 또는 사용자 그룹 목록을 포함한다. 이 파일은 `sudo visudo` 명령을 사용하여 편집하는 것이 권장된다.[16] Sudo는 암호 없이 sudo로 명령을 실행하도록 허용, sudo를 사용할 수 있는 사용자를 변경, 잘못된 암호를 입력했을 때 표시되는 메시지 변경 등 여러 구성 옵션을 포함한다.[16] Sudo는 구성 파일에서 활성화할 수 있는 이스터 에그를 특징으로 하며, 잘못된 암호가 입력될 때마다 모욕적인 메시지를 표시한다.[17]

설정은 sudoers라는 설정 파일에 접근 제어 구문을 기술하여 수행한다. sudoers의 편집에는 visudo 명령어를 사용한다. visudo는 에디터를 기동시켜 설정 파일 sudoers를 읽어 들여 파일 sudoers.tmp를 잠근다. 에디터가 종료되는 시점에서 관리자에 의해 sudoers에 기술된 구문이 올바른지 간략하게 검사한다.

sudoers는 매뉴얼에 따르면 "어떤 사용자가 무엇을 실행할 수 있는지의 목록"을 기술해 두는 설정 파일이다. 매뉴얼에서는 EBNF를 사용한 제어 기술 방법에 대한 설명이 이루어진다.[29]

4. 2. 구성 옵션

`sudo`는 암호 없이 명령을 실행하도록 허용하거나, `sudo`를 사용할 수 있는 사용자를 변경하거나, 잘못된 암호를 입력했을 때 표시되는 메시지를 변경하는 등 여러 구성 옵션을 포함한다.[16] 구성 파일에서 이스터 에그를 활성화하면 잘못된 암호가 입력될 때마다 모욕적인 메시지를 표시할 수 있다.[17]

설정은 `sudoers`라는 설정 파일에 접근 제어 구문을 기술하여 수행한다. `sudoers` 편집에는 `visudo` 명령어를 사용한다.

`visudo`는 에디터를 기동시켜 설정 파일 `sudoers`를 읽어 들여 `sudoers.tmp` 파일을 잠근다. 에디터가 종료되는 시점에서 관리자에 의해 `sudoers`에 기술된 구문이 올바른지 간략하게 검사한다.

`sudoers`는 매뉴얼에 따르면 "어떤 사용자가 무엇을 실행할 수 있는지의 목록"을 기술해 두는 설정 파일이다. 매뉴얼에서는 EBNF를 사용한 제어 기술 방법에 대한 설명이 이루어진다.[29]

5. 이점

su를 사용하지 않고 sudo를 권장하는 운영 체제에서는 다음과 같은 이점이 있다.[32]


  • 운영 체제 설치 시 설정 항목을 줄일 수 있다.
  • 사용자가 불필요한 암호를 기억하지 않아도 된다.
  • 큰 변경을 할 때 암호 입력을 요구함으로써 사용자가 무엇을 하려고 하는지 재인식할 수 있다.
  • sudo 명령 실행 로그가 남아, 문제가 발생했을 때 어떤 명령을 실행했는지 확인할 수 있어 시스템 감시에 유용하다.
  • root 계정으로의 로그인을 비활성화했을 경우, 암호 무작위 대입 등 강제적인 수법으로 시스템 침입을 시도하는 크래커가 root 계정으로 침입할 수 없다.
  • 사용자를 관리자 그룹에 추가, 삭제함으로써 관리자 권한을 가질 수 있는 사용자를 제한할 수 있다.
  • sudo는 su에 비해 더 세부적인 보안 정책을 설정할 수 있다.
  • 관리자 권한을 시간 경과에 따라 자동으로 폐기하도록 설정할 수 있다.

5. 1. 시스템 관리

su 명령어와 달리, sudo는 사용자의 개인 비밀번호를 요구한다.[11] 이를 통해 권한이 있는 사용자는 다른 계정의 비밀번호를 알 필요 없이 권한을 변경하여 사용할 수 있다.[12] sudo 명령어를 사용하려면 특정 그룹 (일반적으로 wheel 그룹 또는 sudo 그룹)에 속해야 한다.[13] 인증 후 설정 파일에서 사용자 접근을 허용하면 시스템은 요청된 명령을 실행한다. sudo는 가상 터미널당 유예 기간(보통 5분) 동안 사용자 호출 권한을 유지하므로, 비밀번호를 다시 입력하지 않고도 여러 명령을 실행할 수 있다.[14]

보안 및 감사 기능으로 sudo는 실행되는 각 명령을 기록할 수 있다. 사용자가 설정 파일에 없는데 sudo를 호출하면, 시도가 기록되었다는 알림이 표시된다. 구성에 따라 루트 사용자는 메일로 알림을 받을 수 있다. 기본적으로 시스템에 기록된다.[15] 일부 시스템 배포판, 특히 리눅스 배포판과 macOS에서는 관리 작업을 위해 sudo가 별도의 슈퍼유저 로그인 방식을 대체하기도 한다. 이는 관리 명령에 대한 안전한 로깅을 가능하게 하고 악용을 방지한다.

su 대신 sudo를 사용하면 다음과 같은 이점이 있다.[32]

  • 운영 체제 설치 시 설정 항목을 줄일 수 있다.
  • 불필요한 암호를 기억하지 않아도 된다.
  • 암호 입력을 통해 수행하려는 작업을 재인식할 수 있다.
  • sudo 명령 실행 로그를 통해 문제 발생 시 실행된 명령을 확인할 수 있어 시스템 감시에 유용하다.
  • root 계정 로그인을 비활성화하면 암호 무작위 대입 등의 방법으로 크래커가 root 계정에 침입하는 것을 막을 수 있다.
  • 관리자 그룹에 사용자를 추가/삭제하여 관리자 권한을 가진 사용자를 제한할 수 있다.
  • su보다 세부적인 보안 정책 설정이 가능하다.
  • 시간 경과에 따라 관리자 권한을 자동으로 폐기하도록 설정할 수 있다.

5. 2. 보안 강화

''sudo''는 실행되는 각 명령을 기록하도록 구성할 수 있다. 사용자가 설정 파일에 나열되지 않고 sudo를 호출하려고 시도하면, 시도가 기록되었음을 나타내는 예외 표시가 사용자에게 표시된다. 구성된 경우, 루트 사용자는 메일을 통해 알림을 받는다. 기본적으로 시스템에 항목이 기록된다.[15]

su를 사용하지 않고 sudo를 권장하는 운영 체제에서는 다음과 같은 이점이 있다.[32]

  • sudo 명령 실행 로그가 남아, 문제가 발생했을 때 어떤 명령을 실행했는지 확인할 수 있다. 시스템 감시의 의미에서도 유용하다.
  • root 계정으로의 로그인을 비활성화했을 경우, 암호 무작위 대입 등 강제적인 수법으로 시스템 침입을 시도하는 크래커가 root 계정으로 침입할 수 없다.
  • 사용자를 관리자 그룹에 추가, 삭제함으로써 관리자 권한을 가질 수 있는 사용자를 제한할 수 있다.
  • sudo는 su에 비해 더 세부적인 보안 정책을 설정할 수 있다.
  • 관리자 권한을 시간 경과에 따라 자동으로 폐기하도록 설정할 수 있다.

6. 예제

`sudo` 명령어를 실행하기 전에 사용자는 비밀번호를 입력한다. 해당 비밀번호가 정확하고, `/etc/sudoers` 설정 파일에 해당 사용자의 접근 권한이 있으면 명령이 실행된다. GUI 환경에서 사용할 수 있는 `kdesu`, [https://launchpad.net/kdesudo kdesudo], `gksudo` 등의 그래픽 프론트 엔드도 있다.[44] 기본적으로 사용자가 입력한 비밀번호는 일정 기간 동안 유지되며, 그 동안은 `sudo` 명령을 실행할 때 비밀번호를 다시 입력할 필요가 없다.

`snorri`라는 사용자가 `sudo` 사용을 시도했다가 실패하고, `/etc/sudoers`에 추가된 후 성공한 예시와 관련 로그는 하위 섹션에서 확인할 수 있다.

6. 1. 접근 거부 예시

`snorri`라는 사용자가 `/etc/sudoers` 파일에 없어 접근이 거부된 예시는 다음과 같다.[44]

```text

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.

```

위는 `snorri`가 `sudo`를 사용하여 `/etc/resolv.conf` 파일을 `emacs` 편집기로 열려고 시도했지만, `/etc/sudoers` 파일에 등록되지 않아 접근이 거부된 상황이다. 시스템 관리자의 경고 메시지("다른 사람의 개인 정보를 존중하십시오.", "입력하기 전에 생각하십시오.", "큰 힘에는 큰 책임이 따릅니다.")와 함께, `snorri`가 `sudoers` 파일에 없으며 이 사건이 보고될 것이라는 메시지가 출력된다.

다음은 이 실패가 발생했을 때의 로그와, `snorri`를 `/etc/sudoers`에 추가한 후 `sudo` 실행이 성공했을 때의 로그이다.

```text

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

```

로그를 보면, 처음에는 `snorri`가 `sudoers`에 없어 `/usr/bin/emacs /etc/resolv.conf` 명령이 실패했다. 이후 `snorri`가 `/etc/sudoers`에 추가되자 동일한 명령과 `/var/log/auth.log` 파일 확인 명령이 성공적으로 실행되었음을 확인할 수 있다.

6. 2. 로그 기록 예시

다음은 `snorri`가 `/etc/sudoers`에 추가되기 전후, sudo 명령어 실행 실패 및 성공 시의 로그를 비교한 것이다.[44]

```

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/vi /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/vi /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

7. runas, su, 그리고 sudo

`sudo`는 su와 달리 사용자 자신의 비밀번호를 사용하며, 다른 계정의 비밀번호를 알 필요가 없어 보안성이 높다.[11][12] `sudo`를 사용하려면 특정 그룹 (wheel 그룹 또는 sudo 그룹)에 속해야 한다.[13] 인증 후 설정 파일에 따라 시스템은 명령을 실행한다. `sudo`는 가상 터미널당 일정 시간(보통 5분) 동안 사용자 권한을 유지하여, 비밀번호 재입력 없이 여러 명령을 실행할 수 있게 한다.[14]

`sudo`는 보안 및 감사 목적으로 각 명령 실행을 기록할 수 있다. 사용자가 설정 파일에 없는데 `sudo`를 호출하면, 시도가 기록되었다는 알림을 받는다. 루트 사용자는 메일로 알림을 받을 수 있고, 기본적으로 시스템에 기록이 남는다.[15]

7. 1. `runas`와 `su`의 한계

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

`runas`와 `su`는 다음과 같은 한계점을 갖는다.

  • 권한이 부여된 사용자가 자신의 권한으로 높은 권한의 프로세스를 실행하는 것을 허락하지 않는다.
  • 사용자의 프로파일과 객체의 소유권을 보존하지 않는다.


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

7. 2. `sudo`의 장점

`sudo`는 사용자의 고유 신분을 기반으로 권한 이동을 허용하고, 비밀번호 공유가 필요 없다는 장점이 있다.[11] `runas`나 `su`와 달리 관리자 계정 비밀번호를 유포할 필요가 없으므로 보안상 취약점이 없다.[11]

`su` 명령어와 달리, 사용자는 슈퍼유저 또는 다른 계정의 비밀번호가 아닌, 필요에 따라 자신의 개인 비밀번호를 `sudo`에 제공한다.[11] 이를 통해 권한이 있는 사용자는 다른 계정의 비밀번호를 노출하지 않고도 변경된 권한을 사용할 수 있다.[12] 사용자는 `sudo` 명령어를 사용하기 위해 특정 그룹에 속해야 하며, 일반적으로 wheel 그룹 또는 sudo 그룹이다.[13] 인증 후, 설정 파일이 사용자 접근을 허용하는 경우, 시스템은 요청된 명령을 실행한다.

`sudo`는 가상 터미널당 유예 기간(일반적으로 5분) 동안 사용자의 호출 권한을 유지하므로, 사용자는 다시 비밀번호를 제공하지 않고도 요청된 사용자로 여러 개의 연속적인 명령을 실행할 수 있다.[14]

보안 및 감사 기능으로, `sudo`는 실행되는 각 명령을 기록하도록 구성할 수 있다. 사용자가 설정 파일에 나열되지 않고 `sudo`를 호출하려고 시도하면, 시도가 기록되었음을 나타내는 예외 표시가 사용자에게 표시된다. 구성된 경우, 루트 사용자는 메일을 통해 알림을 받는다. 기본적으로 시스템에 항목이 기록된다.[15]

8. RBAC (역할 기반 접근 제어)

SELinux와 함께 sudo는 역할 기반 접근 제어(RBAC)에서 역할 전환을 위해 사용될 수 있다.[45][18]

9. 도구 및 유사 프로그램


  • `visudo`는 `/etc/sudoers` 파일을 수정하여 사용하는 vi 기반 프로그램이다.
  • 마이크로소프트는 2024년 2월에 윈도우용 자체 ''sudo'' 버전을 출시했다.[21]
  • 해밀턴 C 셸은 윈도우용 ''su''와 ''sudo''를 포함하며, 자식 프로세스를 권한 상승된 상태 또는 다른 사용자로 시작할 수 있도록 해당 상태 정보를 모두 전달한다.[22][23]
  • OpenBSD 5.8 (2015년 10월)부터 사용할 수 있는 doas는 OpenBSD 기본 시스템에서 ''sudo''를 대체하기 위해 작성되었으며, ''sudo''는 포트로 계속 제공된다.[26]
  • gosu는 컨테이너화된 환경 등에서 sudo를 실행하는 데 바람직하지 않은 영향이 있을 때 널리 사용되는 sudo와 유사한 도구이다.[27]

9. 1. `visudo`

''visudo''는 sudo 설정 파일(`/etc/sudoers`)을 안전하게 편집할 수 있게 해주는 명령줄 유틸리티이다. 잠금을 사용하여 동시 편집을 방지하고 유효성 및 구문 검사를 수행한다.[19]

9. 2. `sudoedit`

Sudoedit는 sudo 바이너리에 심볼릭 링크를 생성하는 프로그램이다.[19] sudo가 sudoedit 별칭을 통해 실행될 때, sudo는 -e 플래그가 전달된 것처럼 작동하며, 추가 권한이 필요한 파일에 사용자가 쓸 수 있도록 허용한다.[20]

9. 3. 윈도우용 `sudo`

마이크로소프트는 2024년 2월에 윈도우용 자체 ''sudo'' 버전을 출시했다.[21] 이 버전은 권한이 없는 콘솔 세션에서 권한이 상승된 명령을 실행할 수 있도록 함으로써 유닉스 버전에 유사한 기능을 제공한다.[21] runas 프로그램은 윈도우에서 유사한 기능을 제공하지만, 현재 디렉토리, 환경 변수 또는 긴 명령줄을 자식 프로세스에 전달할 수 없다. 또한 다른 사용자로 자식 프로세스를 실행하는 것은 지원하지만, 단순한 권한 상승은 지원하지 않는다.[22]

Sudo for Windows는[33] 마이크로소프트가 개발했으며, Windows 11 24H2 (빌드 26052) 이상에서 설정으로 활성화하여 사용할 수 있다.[34][35]

Gerardo Grignoli가 2019년부터 gsudo (sudo for windows)를 공개하고 있다.[36]

9. 4. `gksudo` (더 이상 사용되지 않음)

''gksudo''는 sudo용 그래픽 사용자 인터페이스였으나, 데비안우분투에서는 더 이상 사용되지 않으며, 우분투에도 포함되어 있지 않다.[24][25]

9. 5. 기타 유사 프로그램

마이크로소프트는 2024년 2월 윈도우용 ''sudo'' 버전을 출시했다. 이 버전은 권한이 없는 콘솔 세션에서 권한이 상승된 명령을 실행할 수 있도록 하여 유닉스 버전과 유사한 기능을 제공한다.[21] 윈도우에서 runas 프로그램은 유사한 기능을 제공하지만, 현재 디렉터리, 환경 변수 또는 긴 명령줄을 자식 프로세스에 전달할 수 없다. 또한 다른 사용자로 자식 프로세스를 실행하는 것은 지원하지만, 단순한 권한 상승은 지원하지 않는다. 해밀턴 C 셸은 해당 상태 정보를 모두 전달하고, 자식 프로세스를 권한 상승된 상태 또는 다른 사용자로 (혹은 둘 다) 시작할 수 있는 윈도우용 ''su''와 ''sudo''를 포함한다.[22][23]

sudo용 그래픽 사용자 인터페이스가 존재하며, 특히 ''gksudo''가 있지만, 데비안에서는 더 이상 사용되지 않으며, 우분투에도 포함되어 있지 않다.[24][25] 다른 사용자 인터페이스는 sudo를 직접 기반으로 하지 않지만, 유닉스 계열 운영 체제의 pkexec, 마이크로소프트 윈도우사용자 계정 컨트롤, macOS의 인증 서비스와 같이 관리 목적으로 유사한 임시 권한 상승을 제공한다.

OpenBSD 5.8 (2015년 10월)부터 사용할 수 있는 doas는 OpenBSD 기본 시스템에서 ''sudo''를 대체하기 위해 작성되었으며, 후자는 포트로 계속 제공된다.[26]

gosu는 터미널이 완전히 작동하지 않거나 컨테이너화된 환경에서 sudo를 실행하는 데 바람직하지 않은 영향이 있는 컨테이너에서 널리 사용되는 sudo와 유사한 도구이다.[27]

참조

[1] 웹사이트 A Brief History of Sudo https://www.sudo.ws/[...] 2018-11-15
[2] 웹사이트 Sudo News https://www.sudo.ws/[...] 2023-04-12
[3] 웹사이트 Interview: Inventing The Unix "sudo" Command https://hackaday.com[...] 2022-01-10
[4] 웹사이트 Aaron Toponce : The Meaning of 'su' https://pthree.org/2[...] 2015-08-18
[5] 웹사이트 What is Sudo https://www.sudo.ws/ 2022-06-07
[6] 웹사이트 su(1) Linux manual page https://man7.org/lin[...] 2022-06-08
[7] 웹사이트 Sudo - ArchWiki https://wiki.archlin[...] 2015-11-09
[8] 서적 LPI Linux Certification in a Nutshell O'Reilly Media 2010
[9] 웹사이트 Sandwich https://xkcd.com/149[...] 2022-04-11
[10] 웹사이트 Sudo Logo https://www.sudo.ws/[...] 2022-04-11
[11] 웹사이트 About Unix sudo and su commands https://kb.iu.edu/d/[...] 2019-06-18
[12] 웹사이트 Linux security: What is sudo and why is it so important? https://www.zdnet.co[...] 2024-01-23
[13] 웹사이트 Linux Sudo Command, How to Use With Examples https://phoenixnap.c[...] 2024-01-23
[14] 웹사이트 What is the sudo (su 'do') command-line utility? – TechTarget Definition https://www.techtarg[...] 2024-01-23
[15] 웹사이트 Where are sudo Incidents Reported? https://www.baeldung[...] 2023-04-10
[16] 웹사이트 Linux 101: Introduction to sudo https://www.linux.co[...] 2024-01-23
[17] 웹사이트 Let Sudo Insult You When You Enter Incorrect Password https://www.tecmint.[...] 2024-01-23
[18] 웹사이트 SELinux Lockdown Part Five: SELinux RBAC http://selinux-mac.b[...] 2012-11-17
[19] 웹사이트 This Week In Security: Sudo, Database Breaches, And Ransomware https://hackaday.com[...] 2021-05-24
[20] 웹사이트 sudoedit(8) - Linux manual page https://man7.org/lin[...] 2021-05-24
[21] 웹사이트 Introducing Sudo for Windows! https://devblogs.mic[...] 2024-02-08
[22] 웹사이트 su http://hamiltonlabs.[...] Hamilton Laboratories 2015-08-17
[23] 웹사이트 Predefined aliases: sudo http://hamiltonlabs.[...] Hamilton Laboratories 2015-08-17
[24] 웹사이트 Remove gksu from Ubuntu https://bugs.launchp[...] "[[Canonical (company)|Canonical]], which owns [[Launchpad (website)|Launchpad]]" 2020-01-10
[25] 웹사이트 Software Packages in "bionic" https://packages.ubu[...] "[[Canonical (company)|Canonical]]" 2020-01-10
[26] 웹사이트 sudo-1.8.26 – execute a command as another user http://ports.su/secu[...] 2019-02-26
[27] 웹사이트 gosu https://github.com/t[...]
[28] 웹사이트 Sudo Main Page https://www.sudo.ws/ 2021-07-29
[29] 웹사이트 Manpage for sudo http://www.gratisoft[...] 2007-11-04
[30] 문서 RootSudo - Community Ubuntu Documentation https://help.ubuntu.[...]
[31] 웹사이트 A Brief History of Sudo http://www.sudo.ws/s[...] 2014-03-17
[32] 웹사이트 suとsudoについて - Ubuntu Japanese Wiki https://wiki.ubuntul[...] 2010-10-18
[33] 문서 microsoft/sudo: It's sudo, for Windows - GitHub https://github.com/m[...]
[34] 웹사이트 Introducing Sudo for Windows! https://devblogs.mic[...] 2024-02-09
[35] 웹사이트 Announcing Windows 11 Insider Preview Build 26052 (Canary and Dev Channels) https://blogs.window[...] 2024-02-09
[36] 웹사이트 Home {{!}} gsudo (sudo for windows) https://gerardog.git[...] 2024-02-09
[37] 웹인용 Sudo License https://web.archive.[...] 2010-05-22
[38] 웹인용 Manpage for sudo https://web.archive.[...] 2007-11-04
[39] Ubuntu Documentation RootSudo - Community Ubuntu Documentation https://help.ubuntu.[...]
[40] MacDevCenter MacDevCenter.com - Top Ten Mac OS X Tips for Unix Geeks http://www.macdevcen[...]
[41] 웹인용 A Brief History of Sudo http://www.gratisoft[...] 2007-03-05
[42] 웹인용 Microsoft has Patented "sudo." Yes, the Command https://web.archive.[...] 2009-11-13
[43] 웹인용 보관된 사본 http://blog.seattlep[...] 2012-12-15
[44] 웹인용 Introduction to Authorization Services Programming Guide https://web.archive.[...] 2010-05-22
[45] 웹인용 SELinux Lockdown Part Five: SELinux RBAC http://selinux-mac.b[...] 2012-11-17



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com