본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.

허가된 사용자가 다른 사용자(기본값은 root)의 권한으로 명령을 실행한다.

  • su와 달리 대상 사용자의 비밀번호가 아니라 자신의 비밀번호로 인증한다.
  • 누가 어떤 명령을 실행할 수 있는지는 /etc/sudoers 파일과 /etc/sudoers.d/ 디렉터리의 설정으로 정한다.
  • RHEL/Rocky Linux에서는 wheel 그룹, Ubuntu에서는 sudo 그룹 구성원에게 기본적으로 전체 권한이 허용된다.
  • 한 번 인증하면 기본 5분 동안 비밀번호를 다시 묻지 않는다.
  • 실행 기록은 RHEL/Rocky Linux에서 /var/log/secure에 남는다.
  • 경로 : /usr/bin/sudo
$ sudo [옵션] 명령
  • -u, --user 사용자 : root 대신 지정한 사용자의 권한으로 명령을 실행한다.
  • -g, --group 그룹 : 지정한 그룹을 기본 그룹으로 하여 명령을 실행한다.
  • -l, --list : 현재 사용자가 실행할 수 있는 명령 목록을 출력한다.
  • -i, --login : 대상 사용자의 로그인 셸을 실행한다. (로그인 환경을 읽어 들임)
  • -s, --shell : 대상 사용자 권한으로 셸을 실행한다.
  • -e, --edit : 파일을 대상 사용자 권한으로 편집한다. (sudoedit와 같음)
  • -E, --preserve-env : 현재 사용자의 환경 변수를 유지한 채 실행한다.
  • -b, --background : 명령을 백그라운드에서 실행한다.
  • -v, --validate : 명령을 실행하지 않고 인증 유효 시간만 연장한다.
  • -k, --reset-timestamp : 저장된 인증 정보를 무효화하여 다음 실행 시 다시 비밀번호를 묻게 한다.
  • -K, --remove-timestamp : 저장된 인증 정보를 완전히 삭제한다.

/etc/sudoers 형식

편집 원본 편집

/etc/sudoers는 문법 오류가 있으면 sudo를 사용할 수 없게 되므로 반드시 visudo 명령으로 편집한다. visudo는 저장할 때 문법을 검사한다.

# 사용자  호스트=(실행사용자:실행그룹)  명령
root      ALL=(ALL)       ALL
%wheel    ALL=(ALL)       ALL
user1     ALL=(ALL)       NOPASSWD: /usr/bin/systemctl restart httpd
  • 첫 번째 필드는 사용자이며, %로 시작하면 그룹을 뜻한다.
  • NOPASSWD: 태그를 붙이면 비밀번호를 묻지 않고 실행한다.
  • 명령은 전체 경로로 적는다.
# root 권한으로 패키지를 설치한다.
$ sudo dnf install httpd

# 자신에게 허용된 sudo 명령 목록을 확인한다.
$ sudo -l

# apache 사용자 권한으로 명령을 실행한다.
$ sudo -u apache whoami

# root의 로그인 셸로 전환한다.
$ sudo -i

# user1을 wheel 그룹에 추가하여 sudo 권한을 준다. (RHEL/Rocky Linux)
# usermod -aG wheel user1

# sudoers 파일을 안전하게 편집한다.
# visudo
  • sudo 권한 설정 파일(/etc/sudoers)과 이를 편집하는 명령(visudo)을 묻는 문제가 자주 출제된다.
  • sudoers의 형식(사용자 호스트=(실행사용자) 명령)과 그룹 지정 시 앞에 붙는 %, NOPASSWD 태그를 이해해야 한다.
  • RHEL/Rocky Linux에서 sudo 권한을 주는 기본 그룹은 wheel이다.
  • su는 대상 사용자의 비밀번호를, sudo는 자신의 비밀번호를 사용한다는 차이가 비교 문제로 나온다.