5 ユーザーへのsudoアクセス権の付与

Oracle Linuxでは、システムに対して特権タスクを実行できるのは管理者のみです。

ユーザーに追加の権限を付与するために、管理者はvisudoコマンドを使用して、/etc/sudoers.dディレクトリに新しい構成ファイルを作成するか、/etc/sudoersファイルを変更できます。

管理者が/etc/sudoers.dディレクトリの構成ファイルを使用して割り当てる権限は、システムのアップグレード間で保持され、無効な場合はsudoコマンドによって自動的にスキップされます。管理者は、構成ファイルごとにファイルの所有権と権限を変更することもできます。詳細は、「sudoers.dディレクトリへのユーザー認可の追加」を参照してください。

または、管理者はvisudoコマンドを使用して、/etc/sudoersファイルで権限を直接割り当てることができます。詳細は、「sudoersファイルへのユーザー認可の追加」を参照してください。

Oracle Linuxでの管理アクセスについて

デフォルトでは、どのユーザーもsuコマンドを実行してrootシェルに昇格し、rootユーザー・パスワードを指定できます。

su
Password:

どのユーザーも同じシェルで1つの管理タスクを実行できますが、そのユーザーがrootユーザー・パスワードを指定するまで、これらのコマンドは実行できません。

su -c "whoami"
Password:
root

suコマンドを使用したrootシェルへの昇格は、単一ユーザー環境およびワークステーションで機能します。これは、システムを管理してrootユーザー・パスワードを知っている必要があるのは1人のユーザーのみであるためです。ただし、この方法は、様々なレベルのアクセスを必要とする複数のユーザーおよび管理者との共有システムでは不適切です。

rootユーザー・パスワードを他のユーザーと共有したり、リモート・ユーザーにrootユーザーとしてサインインさせたりしないでください。これらのアクションはどちらも、低リスクかつ高リスクのセキュリティ・プラクティスとなります。

sudoコマンドは、共有システムに適しています。これは、どのユーザーもrootシェルに昇格したときに独自の資格証明を提供できるためです。

sudo -s

ユーザーは、suコマンドを使用して直接昇格し、rootユーザー・パスワードを指定した場合と同じ方法で、rootシェルを終了できます。

exit

さらに、ユーザーはsudoコマンドを実行して、昇格された権限で単一の管理タスクを実行できます。

sudo whoami
root

詳細は、su(1)sudo(8)およびsudoers(5)の各マニュアル・ページを参照してください。

ノート:

必要に応じて、Oracle Linuxのインストール・プロセス中にrootユーザーを無効にし、最初のユーザーにsudo管理者権限を付与できます。

詳細は、Oracle Linux 9: Oracle Linuxのインストールを参照してください。

sudoコマンドの使用

ユーザーにsudoアクセス権が付与されている場合は、昇格された権限で管理コマンドを実行できます。

sudo command

sudoer構成によっては、ユーザーにパスワードの入力を求めるプロンプトが表示される場合もあります。

状況によっては、昇格されたコマンドの実行中に再利用または保持する環境変数をユーザーが設定している場合があり、-Eオプションを使用しても設定できます。

たとえば、Oracle Linuxシステムがエンタープライズ・イントラネットまたは仮想プライベート・ネットワーク(VPN)に接続されている場合、プロキシ設定を適用してアウトバウンド・インターネット・アクセスを取得できます。

端末コマンドがプロキシ・アクセスに依存する環境変数は、http_proxyhttps_proxyおよびno_proxyで、~/.bashrc構成ファイルで設定できます。

export http_proxy=http://proxy.example.com:8080
export https_proxy=https://proxy.example.com:8080
export no_proxy=localhost,127.0.0.1

sourceコマンドを実行して、サインアウトせずにセッション環境変数をリフレッシュします。

source ~/.bashrc

sudoコマンドは、ユーザーのセッション内で環境変数として構成したプロキシ設定を使用できます。たとえば、管理権限でcurlコマンドを実行するには、次のようにします。

sudo -E curl https://www.example.com

ノート:

オプションで、管理者は、システム全体のプロキシ環境変数をシェル・スクリプトで構成し、そのファイルを/etc/profile.d/ディレクトリに保存することによって設定できます。

sudoアクセスを使用して、昇格されたrootシェルを起動することもできます。-sオプションは、ユーザーをrootユーザーとしてrootシェルに昇格させます。-iオプションは、ユーザー・プロファイルとシェル構成の両方を保持しながら、ユーザーをrootシェルに昇格させます。

sudo -i

管理コマンドの実行が終了したら、rootシェルを終了し、exitコマンドを使用して標準のユーザー権限レベルに戻ります。

ネットワーク設定の構成の詳細は、Oracle Linux 9: ネットワークの設定を参照してください。

visudoコマンドの使用

システム上で他のユーザーによる変更が競合するリスクを避けながらviテキスト・エディタで/etc/sudoersファイルを編集するには、visudoコマンドを使用します。

sudo visudo

/etc/sudoersファイルの構成方法の詳細は、sudoersファイルへのユーザー認可の追加およびvisudo(8)マニュアル・ページを参照してください。

管理者は、visudoコマンドを使用して、/etc/sudoers.d/ディレクトリ内の個々のユーザーの権限ファイルを管理することもできます。詳細は、「sudoers.dディレクトリへのユーザー認可の追加」を参照してください。

sudoers.dディレクトリへのユーザー認可の追加

特定のユーザーの権限を設定するには、そのユーザーのファイルを/etc/sudoers.dディレクトリに追加します。たとえば、ユーザーalicesudo権限を設定するには、次のようにします。

sudo visudo -f /etc/sudoers.d/alice

次の形式で/etc/sudoers.d/aliceに権限を追加できます。

username        hostname=command

usernameはユーザーの名前で、hostnameは権限を定義するホストの名前で、commandは完全な実行可能パスとオプションを含む許可されたコマンドです。オプションを指定しない場合、ユーザーはすべてのオプションを指定してコマンドを実行できます。

たとえば、すべてのホストでsudo dnfコマンドを使用してパッケージをインストールする権限をユーザーaliceに付与するには、次のようにします。

alice           ALL = /usr/bin/dnf

同じ行にカンマ区切りの複数のコマンドを追加することもできます。ユーザーaliceがすべてのホストでsudo dnfコマンドとsudo yumコマンドの両方を実行できるようにするには、次のようにします。

alice           ALL = /usr/bin/dnf, /usr/bin/yum

aliceユーザーは、特権コマンドの実行時にsudoを使用する必要があります。

sudo dnf install package

sudoersファイルへのユーザー認可の追加

/etc/sudoersファイルでユーザー権限を直接設定するには、ファイルの場所を指定せずにvisudoコマンドを実行します。

sudo visudo

/etc/sudoersファイルに対する権限は、/etc/sudoers.d/ディレクトリ内のユーザー・ファイルにこれらの権限を追加する場合と同じ形式で追加できます。

どちらの場合も、各コマンドを個別に指定するのではなく、別名を使用してより広範な権限カテゴリを許可できます。ALL別名はすべての権限のワイルドカードとして機能するため、ユーザーbobにすべてのホストでのすべてのコマンドに対するsudo権限を設定します。

bob             ALL=(ALL)       ALL

その他の別名カテゴリは、/etc/sudoersファイルおよびsudoers(5)マニュアル・ページにリストされています。次の形式で独自の別名を作成できます。

Cmnd_Alias ALIAS = command

また、同じ行にカンマ区切りの複数の別名を追加することもできます。たとえば、システム・サービスおよびソフトウェア・パッケージを管理する権限をユーザーaliceに付与するには、次のようにします。

Cmnd_Alias SOFTWARE = /bin/rpm, /usr/bin/up2date, /usr/bin/yum
Cmnd_Alias SERVICES = /sbin/service, /sbin/chkconfig, /usr/bin/systemctl start, /usr/bin/systemctl stop, /usr/bin/systemctl reload, /usr/bin/systemctl restart, /usr/bin/systemctl status, /usr/bin/systemctl enable, /usr/bin/systemctl disable
alice           ALL= SERVICES, SOFTWARE

どちらのユーザーも、特権コマンドの実行時にsudoを使用する必要があります。

sudo systemctl restart service

グループを使用したユーザー許可の管理

個々のユーザーごとに異なるレベルのsudoアクセス権を指定するかわりに、オプションで、グループ名に%記号を追加することで、グループ・レベルでsudoアクセス権を管理できます。

たとえば、/etc/sudoers.d/ディレクトリ内のexampleという既存のグループの権限を定義し、そのグループにユーザーaliceを追加するには、次のようにします。

  1. visudoコマンドを使用して、/etc/sudoers.d/exampleファイルを作成します。

    sudo visudo /etc/sudoers.d/example
  2. システム・サービスおよびソフトウェア・パッケージを管理するためのexampleグループ権限を付与します。

    %example        ALL= SERVICES, SOFTWARE
  3. aliceユーザーをexampleグループに追加します。

    sudo usermod -aG example alice

または、/etc/sudoersファイルでグループ権限を直接設定することもできます。たとえば、すべてのホストに対する完全なsudoアクセス権をユーザーbobに付与するには、既存のグループwheelを有効にしてから、ユーザーbobをそのグループに追加します。

  1. visudoコマンドを使用して/etc/sudoersファイルを開きます。

    sudo visudo
  2. /etc/sudoersファイルの次の行の先頭からコメント#記号を削除します。

    %wheel          ALL=(ALL)       ALL
  3. bobユーザーをwheelグループに追加して、すべてのホストに対する完全なsudoアクセス権を付与します。

    sudo usermod -aG wheel bob