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_proxy
、https_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
ディレクトリに追加します。たとえば、ユーザーalice
のsudo
権限を設定するには、次のようにします。
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
を追加するには、次のようにします。
-
visudo
コマンドを使用して、/etc/sudoers.d/example
ファイルを作成します。sudo visudo /etc/sudoers.d/example
-
システム・サービスおよびソフトウェア・パッケージを管理するための
example
グループ権限を付与します。%example ALL= SERVICES, SOFTWARE
-
alice
ユーザーをexample
グループに追加します。sudo usermod -aG example alice
または、/etc/sudoers
ファイルでグループ権限を直接設定することもできます。たとえば、すべてのホストに対する完全なsudo
アクセス権をユーザーbob
に付与するには、既存のグループwheel
を有効にしてから、ユーザーbob
をそのグループに追加します。
-
visudo
コマンドを使用して/etc/sudoers
ファイルを開きます。sudo visudo
-
/etc/sudoers
ファイルの次の行の先頭からコメント#
記号を削除します。%wheel ALL=(ALL) ALL
-
bob
ユーザーをwheel
グループに追加して、すべてのホストに対する完全なsudo
アクセス権を付与します。sudo usermod -aG wheel bob