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>
    • <username> は、ユーザー名に置き換えます。
    • <hostname.example.com> は、ホストの URL に置き換えます。
    • (<run_as_user>:<run_as_group>) は、コマンドを実行できるユーザーまたはグループに置き換えます。このセクションを省略すると、<username> は root としてコマンドを実行できます。
    • <path/to/command>は、コマンドへの完全な絶対パスに置き換えます。また、コマンドパスの後にオプションを追加することにより、特定のオプションおよび引数を指定したコマンドのみを実行するようにユーザーを制限することもできます。オプションを指定しないと、すべてのオプションが有効な状態でコマンドを使用できます。
    • 同じホストで 2 つ以上のコマンドを 1 行で許可するには、コンマで区切り、コンマの後にスペースを付けることができます。

      たとえば、user1host1.example.comdnf および 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> is not in the sudoers file. This incident will be reported というエラーメッセージを返した場合、/etc/sudoers.d/<username> のファイルが存在しません。

    システムが <username> is not allowed to run sudo on <host.example.com> というエラーメッセージを返した場合、設定が正しく完了していません。root としてログインしていること、および設定が正しく実行されていることを確認してください。

    システムが Sorry, user <username> is not allowed to execute '<path/to/command>' as root on <host.example.com>. というエラーメッセージを返した場合、コマンドがユーザーのルールで正しく定義されていません。

関連情報

  • sudo(8)visudo(8)、および sudoers(5) の man ページ