御託はいいからAlmaLinuxでsudoできるようにしたいという人はrootユーザで
usermod -aG wheel ユーザ名
を実行してください。
sudoしたいユーザで再ログインするとsudoできるようになります。
1.一般ユーザで特定のコマンドが実行できない
Linuxを触り始めると、rootユーザだと実行できるのに一般ユーザだと以下のようなメッセージが出てきてコマンド実行ができない事があります。
$ dnf update
Error: This command has to be run with superuser privileges (under the root user on most systems).
日本語の場合
エラー: このコマンドはスーパーユーザー特権(大概のシステムではrootユーザー)で実行しなければいけません。
これはコマンドを実行した一般ユーザが、管理者権限を持っていないためです。
2.コマンド実行権限
Linuxには、システムの設定を簡単に変更できないように、ユーザが実行する特定コマンドには相応の権限を付与し、その権限に応じて初めてコマンドをできるようにする仕組みがあります。
rootユーザの場合は実行できるが、一般ユーザだと実行できないのはこの仕組みのためです。
rootユーザは管理者権限を持っているためすべてのコマンドを実行する権限を持ち、一般ユーザは管理者が付与しない限り一部コマンドを実行できません。
これは一般ユーザの理解不足・typoによる誤操作や、侵入者による破壊行為によるシステム設定変更を防ぐためにあります。
しかし一般ユーザにもこの権限を一時的に付与し、すべてのコマンド実行を可能にする事ができます。
それがsudoです。
3.sudo
sudoは別のユーザとしてコマンドを実行するコマンドです。
sudoの使い方
sudoは、
$sudo dng update
のように実行したいコマンドの先頭にsudo
とつけるだけです。
sudo
を付けたけどなんか色々出てきて実行できないんだけど!というあなた。話はまだ終わってません。
sudo
をつけて実行したら今度は次のように表示されたはずです。
[yoyo@AL ~]$ sudo dng update
nbvc[\/l,ik8jn b fd
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
[sudo] password for yoyo:
これはsudoを実行(=管理者権限でコマンド実行)するにあたっての注意点と、あなたが使用しているユーザのパスワード入力を求められています。 大いなる力には大いなる責任が伴う
と書いてありますね。
そしてパスワードを入力すると次のように表示されます。
yoyo is not in the sudoers file. This incident will be reported.
#「yoyo(ユーザ)はsudoersファイルにないよ。これは報告しますからね!」という意味。
このメッセージにあるように、sudoを実行できるようにするにはユーザの情報をsudoersファイルに登録(sudoの設定)をしなければなりません。
sudoの設定
sudoの設定をするにはsudoersファイルを編集します。
sudoersファイルは/etc/sudoers
にあります。これを編集すればいいのですが、このファイルを編集する場合はvisudo
コマンドで編集します。vi /etc/sudoers
などで直接編集するのは推奨されません。
記載ルール
次のようなルールで記載することで設定できます。
user host=(runas_user) command
値 | 意味 |
---|---|
user | 権限を与えるユーザー名 |
host | 許可するホスト名。特定のホスト名やALLを指定 |
runas_user | sudoを実行する際に指定するユーザー。省略可能で、通常はALLまたはroot |
command | 実行を許可するコマンド。複数のコマンドをカンマで区切って指定可能。ALLとすると全てのコマンドを許可 |
visudo
でsudoersを開き、100行目付近を見てみると、次のように記載されています。
95 ## user MACHINE=COMMANDS
96 ##
97 ## The COMMANDS section may have other options added to it.
98 ##
99 ## Allow root to run any commands anywhere
100 root ALL=(ALL) ALL
101
これはrootユーザがすべてのホストで、すべてのユーザですべてのコマンドを実行できるという意味です。
例えばyoyo
ユーザに同様の権限を与えたい場合は
yoyo ALL=(ALL) ALL
のように記載します。この1行を100行目の下に追加挿入すればOKです。
wheelグループへの追加
先ほどの書き方は、特定ユーザについて設定する方法でした。
下のほうの106
,107
行目に以下のような記載があります。
106 ## Allows people in group wheel to run all commands
107 %wheel ALL=(ALL) ALL
これはwheelグループにrootと同じ権限を指定している記述になります。
グループを指定したい場合は、グループ名の先頭に%
記号をつけて記載します。
手軽にsudoできるようにしたい
AlmaLinuxでsudo実行できるように管理者権限を与えるには、wheelグループに追加するのが一番簡単です。冒頭で記載したのはこの方法になります。rootユーザでログインして以下コマンドを実行し、bash再読み込みで反映されます。bash再読み込みをさせるには再ログインが一番簡単です。
wheelグループへユーザ追加
usermod -aG wheel ユーザ名
実行例
usermod -aG wheel yoyo