検索

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

download PDF

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

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

前提条件

  • システムへの 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 ページ
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.