11.3. 非特権ユーザーが特定のコマンドを実行できるようにする


管理者は、/etc/sudoers.d/ ディレクトリーにポリシーを設定することで、非特権ユーザーが特定のワークステーションに特定のコマンドを入力できるようにすることができます。これを行うと、ユーザーに完全な sudo アクセス権を付与したり、ユーザーに root パスワードを付与したりするよりも、セキュリティーが向上します。その理由は次のとおりです。

  • 特権を必要とする操作のより細かい制御。ユーザーに完全な管理アクセス権を付与せずに、特定のホストで特定の操作を実行することを許可できます。
  • ロギングの改善。ユーザーが sudo を通じて操作を実行したときに、その操作が root だけでなくユーザー名とともにログに記録されます。
  • 透明性のある制御。ユーザーが sudo 権限の使用を試みるたびにメール通知を送信するように設定できます。

前提条件

  • システムへの root アクセス権があります。

手順

  1. /etc/sudoers.d ディレクトリーに新規ファイルを作成します。

    Copy to Clipboard Toggle word wrap
    # visudo -f /etc/sudoers.d/<filename>

    ファイルがエディターで自動的に開きます。

  2. 次の行を /etc/sudoers.d/<filename> ファイルに追加します。

    Copy to Clipboard Toggle word wrap
    <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 行で許可するには、コンマで区切り、コンマの後にスペースを付けることができます。

たとえば、user1dnf コマンドと reboot コマンドを host1.example.com で実行できるようにするには、次のように入力します。

Copy to Clipboard Toggle word wrap
user1 host1.example.com = /bin/dnf, /sbin/reboot
  1. オプション: ユーザーが sudo 権限を使用しようとするたびにメール通知を受け取るには、ファイルに次の行を追加します。

    Copy to Clipboard Toggle word wrap
    Defaults    mail_always
    Defaults    mailto="<email@example.com>"
  2. 変更を保存し、エディターを終了します。

検証

  1. ユーザーが sudo 特権でコマンドを実行できるかどうかを確認するには、アカウントを切り替えます。

    Copy to Clipboard Toggle word wrap
    # su <username> -
  2. ユーザーとして、sudo コマンドを使用してコマンドを入力します。

    Copy to Clipboard Toggle word wrap
    $ sudo whoami
    [sudo] password for <username>:

    ユーザーの sudo パスワードを入力します。

  3. 権限が正しく設定されている場合、sudo は設定されたユーザーとしてコマンドを実行します。たとえば、dnf コマンドを使用すると、次の出力が表示されます。

    Copy to Clipboard Toggle word wrap
    ...
    usage: dnf [options] COMMAND
    ...

    システムから次のエラーメッセージが返された場合、sudo を使用してコマンドを実行することがユーザーに許可されていません。

Copy to Clipboard Toggle word wrap
<username> is not in the sudoers file. This incident will be reported.

+ システムから次のエラーメッセージが返された場合、設定が正しく完了していません。

Copy to Clipboard Toggle word wrap
<username> is not allowed to run sudo on <host.example.com>.

+ システムから次のエラーメッセージが返された場合、ユーザーのルールでコマンドが正しく定義されていません。

Copy to Clipboard Toggle word wrap
`Sorry, user _<username>_ is not allowed to execute '_<path/to/command>_' as root on _<host.example.com>_.`

関連情報

  • visudo(8) および sudoers(5) man ページ
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat, Inc.