9.1 権限
Linux Essentials Online Text | 2021/07/27

Linuxシステムが管理する資源を利用するには利用権限が必要です。権限には大きく2種類あり、一つは利用者に対する権限です。つまり「誰が」利用を許可されているか、を決めます。利用者の権限には、「ユーザ」とユーザを束ねた「グループ」、「管理者」の3種類が定義されています。

もう一つの権限はアクセス権です。ファイルやディレクトリを読み取る権限、修正を行うことができる権限、プログラムを実行する権限の3種類を組み合わせて対象となるファイルどのように扱うことができるか、を決めます。

システムは、この利用者とアクセス権を組み合わせることで管理されています。

root権限の取得

root権限を取得するには、2つの方法があります。1つは、最初からrootというユーザでログインする方法、もう1つは一般のユーザからrootユーザに移行する方法です。

一般ユーザからrootユーザに移行するコマンドはsu コマンドです。

書式:

su [ユーザ名]

rootユーザに移行するには、suコマンドを用います。suコマンドはユーザを変更するためのコマンドで、suの後にユーザ名を指定すれば、そのユーザに変更できます。「rootユーザに移行したい場合は、「su」のみを入力するか、「su -」とユーザ名の代わりに「-(ハイフン)」を入力します。

なお、ユーザに移行する場合は、そのユーザ名に設定されたパスワードが必要ですが、rootユーザから他のユーザに移行する場合、パスワードを入力する必要がありません。

<実習: root権限の取得>

一般ユーザの状態から、root権限を取得して、一般ユーザでは開けないファイルを開いてみます。

$ su -
パスワード: ← rootパスワードを入力する(表示されません)
# 					← 「#」になっていればrootが取得出来てます。
# cat /var/log/messages

root権限を放棄し、一般ユーザに戻ります。

# exit
$ 					← 「$」になっていれば一般ユーザです。
$ cat /var/log/messages
cat: /var/log/messages: 許可がありません

<「su」と「su -」の違い>

-(ハイフン)の有無は、環境変数を引き継ぐかどうかに影響します。付けなければ継承、付ければ継承されません。つまり、suのみでもrootユーザになれますが、ユーザの環境設定が継承されてしまいます。この場合、root用の環境変数ではなくなるため、コマンドが正常に実行出来ないことがあります。
一方、-(ハイフン) を付けると、rootで再ログインし直す事と同意なので、rootのホームディレクトリ(/root)に移動し、管理用コマンドもパスが通った状態となり、場所を指定せずに使えるようになります。状況に応じて使い分けてください。

sudo コマンド

Linuxにおいてrootユーザは強力な権限を持つユーザであり、一度root権限が奪取されてしまえば、そのシステムが完全に乗っ取られてしまう危険性を持っています。そのため、root権限の取得出来るユーザを限定したり、全てのユーザにroot権限を与えないようにするなどの設定を行い、rootのパスワードはごく限られたメンバのみで厳重に管理されなければなりません。

しかし、Linuxシステムを運用する上で、一般ユーザでもroot権限における処理が必要となる場合があります。この様な場合、全てのユーザにroot権限を与えるわけにはいきません。だからと言って、rootユーザが一般ユーザの要望をいちいち聞き続けるわけにもいきません。

このような場合はsudoコマンドを使います。sudoコマンドを使うと、一般ユーザがrootユーザにならずに、rootコマンドが実行できます。

書式:

sudo コマンド

※設定により、上記コマンド入力後にパスワードを入れなければならない場合があります。

<実習: sudoコマンドを利用可能なユーザを作る>

/etc/groupファイルのwheelグループにsudoを利用できるユーザを追記します。

$ su -
# vi /etc/group
wheel:x:10:root
   ↓
wheel:x:10:root,lpic-user 			← sudoを使用させるユーザを追記します。

sudoコマンドが使える様に、visudoコマンドで/etc/sudoersファイルを変更します。

# visudo
------------
%wheel ALL=(ALL) ALL
# %wheel ALL=(ALL) NOPASSWD: ALL
↓
# %wheel ALL=(ALL) ALL			← 行頭に「#」を付与してコメントにします。
%wheel ALL=(ALL) NOPASSWD: ALL		← 行頭の「#」を削除してコメントアウトします。

設定したユーザに移行して、root権限が無いと実施できないコマンドを実行する

# su lpic-user
パスワード:
$ visudo
visudo: /etc/sudoers: 許可がありません
$ sudo visudo

今回はlpic-userに対し、sudoをコマンドの前に付ければどんなコマンドでも実行できるようにしました。細かく設定することでどのユーザにどのコマンド実行を許可するか等、細かく設定することが可能です。

PAGE TOP