Linux管理・運用の基本
システム管理者のための実践ガイド
システム管理者のための実践ガイド
sudoコマンドの基本的な役割visudoコマンドを使ったユーザーへのsudo権限付与方法sudoグループ(またはwheelグループ)の利用についてsudo権限の確認方法sudoとは?なぜ特定のユーザーに権限を与えるのかsudo(superuser do)コマンドは、一般ユーザーが一時的にrootユーザー(管理者)の権限でコマンドを実行するためのものです。通常、Linuxシステムではセキュリティのためにrootユーザーでの直接ログインは推奨されません。しかし、システムの管理作業を行う際には管理者権限が必要になります。このとき、特定の信頼できるユーザーにのみsudo権限を与えることで、セキュリティを保ちつつ必要な作業を行えるようにします。
visudoを使ったsudo権限の付与sudo権限を付与する最も安全で推奨される方法は、visudoコマンドを使用することです。visudoは、sudoの設定ファイルである/etc/sudoersを編集するための専用ツールです。このコマンドを使うことで、文法チェックが行われ、誤った設定によるシステムロックアウトを防ぐことができます。
多くのLinuxディストリビューションでは、特定のグループに所属するユーザーにsudo権限が与えられるように設定されています。この方法が最も一般的で推奨されます。ディストリビューションによってグループ名が異なり、Ubuntu系ではsudo、CentOSやRed
Hat系ではwheelグループが主に利用されます。
コマンド例
特定のユーザー(例: your_username)をsudoグループに追加するには、以下のコマンドを実行します。
sudo usermod -aG sudo your_username
CentOSやRed Hat系のLinuxでは、wheelグループを利用します。
sudo usermod -aG wheel your_username
| コマンド | 意味 |
|---|---|
sudo |
root権限でコマンドを実行します。 |
usermod |
ユーザーアカウントの情報を変更するコマンドです。 |
-aG |
-aは既存のグループから削除せずに新しいグループに追加し、-Gはユーザーが所属する追加のグループを指定します。 |
sudoまたはwheel |
追加するグループ名です。お使いのシステムに合わせて選択してください。 |
your_username |
権限を付与したいユーザー名に置き換えてください。 |
このコマンド実行後、ユーザーは一度ログアウトし、再度ログインし直す必要があります。これにより、新しいグループメンバーシップが適用されます。
自分のシステムでどのグループがsudo権限を持つか分からない場合は、以下のコマンドで/etc/sudoersファイルの内容から調べられます。
grep -E '^%.*ALL' /etc/sudoers
このコマンドは、パーミッションが付与されているグループ(%で始まる行)を抽出します。
/etc/sudoersを直接編集する場合(非推奨:緊急時のみ)上記の方法が何らかの理由で使えない場合、visudoを使って/etc/sudoersファイルを直接編集することも可能です。しかし、これは慎重に行う必要があります。
コマンド例
sudo visudo
visudoを実行すると、通常はviエディタで設定ファイルが開きます。ファイル内で以下の行を探し、編集します。
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
もし、特定のユーザーにのみ権限を与えたい場合は、この行の下などに以下の形式で追記します。
your_username ALL=(ALL:ALL) ALL
| 項目 | 意味 |
|---|---|
your_username |
権限を付与したいユーザー名です。 |
ALL |
どのホストからでもコマンド実行を許可します。 |
(ALL:ALL) |
どのユーザー、どのグループの権限でコマンド実行を許可するかを指定します。最初のALLは対象ユーザー、2番目のALLは対象グループです。 |
ALL |
どのコマンドでも実行を許可します。特定のコマンドのみ許可する場合はここにコマンドパスを記述します。 |
設定ファイルの例(your_usernameに全権限を付与する場合)
# This file MUST be edited with the 'visudo' command.
#
# See the sudoers man page for the details on how to write a sudoers file.
#
Defaults env_reset
Defaults mail_badpass
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL:ALL) ALL
# Allow members of group sudo to execute any command
%sudo ALL=(ALL:ALL) ALL
# Specific user access (Example)
your_username ALL=(ALL:ALL) ALL
注意点: /etc/sudoersを直接編集する際は、必ずvisudoコマンドを使用してください。通常のテキストエディタで編集すると、構文エラーがあった場合にsudoコマンドが一切使えなくなり、システムにログインできなくなる可能性があります。
ユーザーがsudo権限を持っているかどうかは、ログインし直した後で以下のコマンドを実行することで確認できます。
sudo whoami
実行結果が root になれば、権限付与は成功です。
現在のユーザーに許可されているsudoコマンドの一覧や、より詳細な権限設定を確認するには、以下のコマンドが便利です。
sudo -l
このコマンドは、ユーザーがパスワードなしで実行できるコマンドや、特定のユーザー・グループとして実行できるコマンドなど、細かな設定を表示します。
sudoが使えなくなった!sudo権限を持つユーザーを誤って削除してしまったり、/etc/sudoersファイルを誤って編集してしまったりした場合、sudoコマンドが使えなくなることがあります。
対処法
init=/bin/bashなどを追加して起動します。これにより、root権限でシェルにアクセスできます。/etc/sudoersを修正する: シングルユーザーモードでログイン後、/etc/sudoersファイルを直接編集して問題を修正します。この際も慎重に作業してください。sudo権限の付与は、Linuxシステム管理において非常に重要な作業です。セキュリティを確保するためにも、以下の点を守るようにしましょう。
visudoコマンドを常に使用するsudoグループ(またはwheelグループ)に追加する方法を用いるsudo権限を与えないこれらの基本を守ることで、安全かつ効率的なLinuxシステム運用が可能になります。
この記事が、皆さまの日々のLinux管理やシステム運用の一助となれば幸いです。
ご覧いただきありがとうございました。