8.3. 권한이 없는 사용자가 특정 명령을 실행하도록 활성화
관리자는 /etc/sudoers.d/ 디렉터리에 정책을 구성하여 권한이 없는 사용자가 특정 워크스테이션에서 특정 명령을 실행하도록 허용할 수 있습니다. 이는 사용자에게 전체 sudo 액세스 권한을 부여하거나 다음과 같은 이유로 사용자에게 root 암호를 제공하는 것보다 더 안전합니다.
- 권한 있는 작업을 보다 세밀하게 제어합니다. 사용자가 전체 관리 액세스 권한을 부여하는 대신 특정 호스트에서 특정 작업을 수행하도록 허용할 수 있습니다.
-
더 나은 로깅. 사용자가
sudo를 통해 작업을 수행하면 root뿐만 아니라 사용자 이름으로 작업이 기록됩니다. -
투명한 제어. 사용자가
sudo권한을 사용하려고 할 때마다 이메일 알림을 설정할 수 있습니다.
사전 요구 사항
- 시스템에 대한 root 액세스 권한이 있습니다.
절차
/etc/sudoers.d디렉토리에 새 파일을 만듭니다.visudo -f /etc/sudoers.d/<filename>
# visudo -f /etc/sudoers.d/<filename>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 파일이 편집기에서 자동으로 열립니다.
/etc/sudoers.d/ <filename> 파일에 다음 행을 추가합니다.<username> <hostname.example.com> = (<run_as_user>:<run_as_group>) <path/to/command>
<username> <hostname.example.com> = (<run_as_user>:<run_as_group>) <path/to/command>Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
&
lt;username>을 사용자 이름으로 바꿉니다. -
&
lt;hostname.example.com>을 호스트의 URL로 바꿉니다. -
(<run_as_user > : <run_as_group> )명령을 실행할 수 있는 사용자 또는 그룹으로 바꿉니다. 이 섹션을 생략하면 <username>에서 root로 명령을 실행할 수 있습니다. -
&
lt;path/to/command>를 명령의 전체 절대 경로로 바꿉니다. 명령 경로 뒤에 해당 옵션을 추가하여 특정 옵션 및 인수가 있는 명령만 실행하도록 사용자를 제한할 수도 있습니다. 옵션을 지정하지 않으면 사용자는 모든 옵션과 함께 명령을 사용할 수 있습니다. - 한 줄에 동일한 호스트에서 두 개 이상의 명령을 허용하려면 쉼표로 구분한 뒤에 공백으로 구분하여 나열할 수 있습니다.
-
&
예를 들어 user1 이 dnf 를 실행하고 host1.example.com 에서 reboot 명령을 재부팅하도록 허용하려면 다음을 입력합니다.
user1 host1.example.com = /bin/dnf, /sbin/reboot
user1 host1.example.com = /bin/dnf, /sbin/reboot
선택 사항: 사용자가
sudo권한을 사용하려고 할 때마다 이메일 알림을 받으려면 파일에 다음 행을 추가합니다.Defaults mail_always Defaults mailto="<email@example.com>"
Defaults mail_always Defaults mailto="<email@example.com>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 변경 사항을 저장하고 편집기를 종료합니다.
검증
사용자가
sudo권한으로 명령을 실행할 수 있는지 확인하려면 계정을 전환합니다.su <username> -
# su <username> -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자로
sudo명령을 사용하여 명령을 입력합니다.sudo whoami [sudo] password for <username>:
$ sudo whoami [sudo] password for <username>:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 사용자의
sudo암호를 입력합니다.권한이 올바르게 구성된 경우 sudo는 구성된 사용자로 명령을 실행합니다. 예를 들어
dnf명령을 사용하면 다음 출력이 표시됩니다.... usage: dnf [options] COMMAND ...
... usage: dnf [options] COMMAND ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 시스템에서 다음 오류 메시지를 반환하는 경우 sudo를 사용하여 명령을 실행할 수 없습니다.
<username> is not in the sudoers file. This incident will be reported.
<username> is not in the sudoers file. This incident will be reported.
+ 시스템에서 다음 오류 메시지를 반환하는 경우 구성이 올바르게 완료되지 않았습니다.
<username> is not allowed to run sudo on <host.example.com>.
<username> is not allowed to run sudo on <host.example.com>.
+ 시스템에서 다음 오류 메시지를 반환하는 경우 명령은 사용자의 규칙에 올바르게 정의되지 않습니다.
`Sorry, user _<username>_ is not allowed to execute '_<path/to/command>_' as root on _<host.example.com>_.`
`Sorry, user _<username>_ is not allowed to execute '_<path/to/command>_' as root on _<host.example.com>_.`