10.3. 권한이 없는 사용자가 특정 명령을 실행하도록 활성화

관리자는 /etc/sudoers.d/ 디렉터리에 정책을 구성하여 권한이 없는 사용자가 특정 워크스테이션에서 특정 명령을 실행하도록 허용할 수 있습니다.

사전 요구 사항

  • 시스템에 대한 root 액세스 권한이 있습니다.

절차

  1. root 로서 /etc/: 아래에 새 sudoers.d 디렉토리를 만듭니다.

    # mkdir -p /etc/sudoers.d/
  2. /etc/sudoers.d 디렉토리에 새 파일을 만듭니다.

    # visudo -f /etc/sudoers.d/<filename>

    파일이 자동으로 열립니다.

  3. /etc/sudoers.d/ <filename > 파일에 다음 행을 추가합니다.

    <username> <hostname.example.com> = (<run_as_user>:<run_as_group>) <path/to/command>
    • & lt;username >을 사용자 이름으로 바꿉니다.
    • & lt;hostname.example.com& gt;을 호스트의 URL로 바꿉니다.
    • (<run_as_user > : <run_as_group> ) 명령을 실행할 수 있는 사용자 또는 그룹으로 바꿉니다. 이 섹션을 생략하면 < username> 에서 root로 명령을 실행할 수 있습니다.
    • & lt;path/to/command& gt;를 명령의 전체 절대 경로로 바꿉니다. 명령 경로 뒤에 해당 옵션을 추가하여 특정 옵션 및 인수가 있는 명령만 실행하도록 사용자를 제한할 수도 있습니다. 옵션을 지정하지 않으면 사용자는 모든 옵션과 함께 명령을 사용할 수 있습니다.
    • 한 줄에 동일한 호스트에서 두 개 이상의 명령을 허용하려면 쉼표로 구분한 뒤에 공백으로 구분하여 나열할 수 있습니다.

      예를 들어 user1dnf 를 실행하고 host1.example.com 에서 reboot 명령을 실행할 수 있도록 하려면 user1 host1.example.com = /bin/dnf, /sbin/reboot 를 입력합니다.

  4. 선택 사항: 사용자가 sudo 권한을 사용하려고 할 때마다 이메일 알림을 받으려면 파일에 다음 행을 추가합니다.

    Defaults    mail_always
    Defaults    mailto="<email@example.com>"
  5. 변경 사항을 저장하고 편집기를 종료합니다.

검증

  1. 사용자가 sudo 권한으로 명령을 실행할 수 있는지 확인하려면 계정을 전환합니다.

    # su <username> -
  2. 사용자로 sudo 명령을 사용하여 명령을 입력합니다.

    $ sudo <command>
    [sudo] password for <username>:

    사용자의 sudo 암호를 입력합니다.

  3. 권한이 올바르게 구성된 경우 시스템은 명령 및 옵션 목록을 표시합니다. 예를 들어 dnf 명령을 사용하면 다음 출력이 표시됩니다.

    ...
    usage: dnf [options] COMMAND
    ...

    시스템이 오류 메시지 <username&gt;이 sudoers 파일에 없는 경우. 이 문제는 /etc/sudoers.d/ 의 < username >에 대한 파일인 것으로 보고됩니다.

    시스템이 < username > 오류 메시지를 반환하는 경우 < host.example.com>에서 sudo를 실행할 수 없는 경우 구성이 올바르게 완료되지 않았습니다. root로 로그인하고 구성이 올바르게 수행되었는지 확인합니다.

    시스템이 오류 메시지 Sorry를 반환하는 경우 user < username >은 <path/to/command> ' ' <path/to/command>'를 < host.example.com >에서 root로 실행할 수 없습니다.. 에서는 사용자의 규칙에 명령이 올바르게 정의되지 않습니다.

추가 리소스

  • sudo(8), visudo(8), sudoers(5) 매뉴얼 페이지