Linux入門コース4/8
root権限の使い方
sudoコマンドについて
こちらの記事では、root権限を扱えるsudoコマンドについて解説します。
root権限とはLinuxにおける管理者権限のことで、この権限を持つことで一般ユーザではできないような作業を行うこと可能になります。
Linuxではよく使うコマンドになりますので、しっかりと内容を覚えて使いこなせるようになりましょう。
スーパーユーザー(root ユーザ)
Linuxには大きく分けて一般ユーザーとスーパー(root)ユーザーという2種類のユーザーが存在します。rootユーザーは、いわば「Linuxシステムの管理者」です。一般ユーザーよりも強力な権限をもち、より重要度の高い操作が可能となりますので、細心の注意が必要となります。
rootユーザーのUIDとGIDには、デフォルトで0が割り振られています。また、FHS(標準的なディレクトリ構成を定めた標準仕様)に基づいたルートユーザーのホームディレクトリとして/root
が用意されています。
suコマンドとは
一般ユーザーではアクセス権限がなく、rootユーザーとしてコマンドを実行しないといけないという場面があります。その際にはsu
コマンド、もしくは後述するsudo
コマンドを使用して一時的にrootユーザー権限を使用することができます。
コマンドを実行すると、rootユーザーのパスワードを聞かれます。パスワードを入力するとrootユーザーに切り替わり、プロンプトの記号が $
から#
になります。rootユーザーのパスワードはシステム管理者のみが知るものです。厳重に管理しましょう。
su
Password:
[root@envader:~]#
rootユーザーを抜けて一般ユーザーに戻るには、exit
コマンド(もしくはCtrl + D)を実行します。su
コマンドでrootユーザーにログインすると、ホームディレクトリはルートユーザーのホームディレクトリ(/root
)になります。ただし、カレントディレクトリはsu
コマンドを実行したディレクトリのままです。
sudoコマンドとは
sudo
は一時的にrootユーザー権限でコマンドを実行するためのコマンドです。
sudo
コマンドはsu
コマンドとは違い、コマンド実行時のみ一時的にrootユーザーの権限を使うだけなので、コマンド実行後も一般ユーザーのままです(rootユーザーの権限を一瞬だけ借りて、一度使ったらすぐ返すイメージです)。
su
コマンドと同じように実行時にはパスワードを聞かれますが、こちらは一般ユーザーのパスワードを入力します。認証に成功すると、後続のコマンドがroot権限で実行されます。また、sudo -V
を実行することで、sudoに関するさまざまな設定が表示されます。
基本的な使い方
それでは、sudo
の基本的な使い方を紹介します。
# スーパーユーザー(root)権限でコマンドを実行します。
sudo [オプション] コマンド
主なオプション
オプション | 説明 |
---|---|
-n | パスワードを要求するプロンプトを表示しない(パスワードが必要なコマンドはエラーとなり、実行を終了する) |
-S | 端末を使わず、プロンプトを標準エラーに書き出し、パスワードを標準出力から読み込む(パスワードの末尾には改行が必要) |
-b | 指定したコマンドをバックグラウンドで実行する |
-l | 起動ユーザーに対し許可(および禁止)されたコマンドの一覧を表示する |
-u | userを設定(user名またはuser ID [#を前につけた数値] )して、コマンドを実行する |
-g | groupを設定(group名またはgroup ID [#を前につけた数値] )して、コマンドを実行する |
-k | 保存されている認証情報を無効にする(次回のsudo実行時にはパスワードが必要) |
-K | 保存されている認証情報を完全に消去する |
-v | 保存されている認証情報を更新する |
使用例
こちらでは、実用例を紹介します。
# コマンドを実行するユーザーを指定します。
sudo -u ユーザー名 コマンド
# hogeというユーザーでコマンドを実行します。
sudo -u hoge cat /etc/passwd
パッケージのインストールでもsudo
を使います。
# Ubuntuの場合
sudo apt install bind9
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages were automatically installed and are no longer required:
linux-aws-5.4-headers-5.4.0-1056 linux-aws-5.4-headers-5.4.0-1057 linux-aws-5.4-headers-5.4.0-1058
Use 'sudo apt autoremove' to remove them.
(以下省略)
/etc/sudoers
/etc
には、sudoers
というファイルがあります。これは「デフォルト設定を引き継ぐか否か」や「誰が誰としてどんなことができるか」ということを記述しているsudo
コマンド(権限)の設定ファイルです。権限に関する設定ですので、一般ユーザーにはアクセス権限はありません。su
コマンド、もしくは、sudo
コマンドを使用する必要があります。
例えば、以下のような記述があります。
root ALL = (ALL) ALL
これは、「rootユーザーは、rootユーザーでどこでもどんなことでもできる」ということを表しています。書式は、誰が どこで = (誰として) どんなことを
となっています。/etc/sudoers
を編集するには、rootユーザーとしてsudo visudo
というコマンドを使用します。
TMOUT
一定時間ターミナル操作がなかった場合、自動的にログアウトするという設定ができます。
自動ログアウトを有効にするには、TMOUT(time out)という環境変数を設定します。
値には、時間(秒)を代入します。
# こちらでは、zshでの使用例を紹介します。
# ~/.zshrcを開きます。
# 15分でタイムアウトになるように以下の設定を記述します。
===================
export TMOUT=900
===================
# 保存したらsourceコマンドで~/.zshrcを再読み込みします。
source ~/.zshrc
# 15分後... ...
zsh: timeout
Saving session...completed.
Deleting expired sessions...none found.
無事、15分でタイムアウトし、自動ログアウトしました。
まとめ
今回はsudo
について学習しました。冒頭でも述べたようにrootユーザーは何でもできてしまうので、権限の設定が重要になってきます。自分はどの権限が許可されているのか、もしくは管理者としてLinuxの環境を扱っているのであれば、適切な権限を設定できているかをしっかりと確認することが大切です。sudo
の扱いが理解できるよう、何度も練習して覚えていきましょう。
問題を解くためには、十分な画面サイズのPC環境をご利用下さい。