2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

0.本稿について

  • 対象:サーバ用Linuxについて学習している初学者。
  • 目標:AlmaLinuxでsudoができるようになる。sudoの基本概念を理解する。
  • 想定:ユーザ、グループの概念について理解している人を想定。

正確さの省略について

本稿では概念をわかりやすくするために、簡略化した表現を使用し、一部専門的な詳細を省略している事があります。

御託はいいからAlmaLinuxでsudoできるようにしたいという人はrootユーザで

usermod -aG wheel ユーザ名

を実行してください。

debian系(ubuntuとか)の場合はこっちです。

usermod -aG sudo ユーザ名

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コマンドは、オプションを指定しなければ、デフォルトではrootユーザとして実行します。-uオプションを付けると別のユーザとして実行できますが、今回はその説明は割愛します。

sudoの使い方

sudoは、

$sudo dnf update

のように実行したいコマンドの先頭にsudoとつけるだけです。

sudoを付けたけどなんか色々出てきて実行できないんだけど!というあなた。話はまだ終わってません。
sudoをつけて実行したら今度は次のように表示されたはずです。

[yoyo@AL ~]$ sudo dnf 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の設定)をしなければなりません。

sudoersの設定

sudoの設定をするにはrootユーザで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です。

グループの設定

先ほどの書き方は、特定ユーザについて設定する方法でした。
下のほうの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

なおdebian系ディストリビューションの場合はwheelグループに値するものとしてsudoが存在します。debian系の場合はwheelの代わりにsudoに変えて実行すると同じ事になります。

ならwheelに登録するのがいいんじゃないの?

と思うのですが、確かに手軽に迅速にsudo権限を与えるならばそれが一番です。

しかし、利用するユーザが多くなってきたり、いろんな権限を与えるようになってくると、このユーザはこのコマンドだけ実行できるように制限したいなとなってきます。

そういった場合はsudoersに登録する手法の方が良いです。

このように、どちらの手法を利用すべきかは利用・提供する環境によって変わってくるので、TPOにあわせて選択して設定を行いましょう。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?