Linuxコマンド辞典 sudoコマンド(プロセス管理)
別のユーザーとしてコマンドを実行する「sudo」コマンドの概要と使い方を記載しています。
RHEL Fedora CentOS Vine Deblan Ubuntu Plamo
参考サイト:Man page of INSTALL
概要・使用方法
書式
$ crontab [オプション]
管理者や他のユーザ権限でコマンドを実行します。管理者にスィッチするには、管理者パスワードが必要となり、複数のユーザーが管理者にスィッチできる環境だとパスワード変更するたびに全員に伝える必要があり手間がかかります。また、第三者にパスワードが漏れる危険性もあるため、危険性を防止するためにsudoコマンドの利用があります。
sudoでコマンドを実行するためには、sudoを実行するユーザーのパスワードが必要です。一度パスワード認証が行われると、デフォルト15分間はパスワード無しでもsudoを使えます。これはパスワードキャッシュという仕組みがあるためです。
sudo実行時にユーザーを指定しない場合は、rootユーザでコマンドを実行します。sudoで実行しようとしたコマンドは、syslogに記録されてます。sudoの認証設定や、実行できるコマンドの制限などは/etc/sudoersに設定します。/etc/sudoresの変更を行う場合は、visudoを使用します。visudoは/etc/sudoresの編集を行うための専用コマンドです。設定ファイルの編集と、編集完了時にファイルの文法チェックを行います。
/etc/sudoersには、以下のようなエントリがあります。
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
「wheel」をsudoコマンドの実行を許可するユーザーを含むグループ名称に書き換えて保存することで、グループに属しているユーザーはsudoコマンドを使用することができます。
特定のユーザーだけに許可するのであれば、「%」を付けずにユーザー名だけ記述します。「%」はグループ名であることを示しています。
以下のように指定すると、コマンド実行時にコマンド実行ユーザのパスワード入力が求められなくなります。
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
オプション
-b | 指定したコマンドをバックグラウンドで動作させる |
-k | パスワード保持時間を無効にし、次回起動時にパスワードを問い合わせる |
-l | 許可、拒否されているコマンドをリストする |
-s | 環境変数SHELLが設定されている場合はそのシェルを利用する |
-H | 成り代るユーザの環境変数HOMEを設定する |
-S | 標準入力からパスワードを読み込む |
-i、 –login | 指定したユーザーでログインシェルを起動する |
-s、 –shell | 指定したユーザーでシェルを起動する |
-p プロンプト | 指定したプロンプトを利用する |
-u ユーザー名/ユーザーID、 –user=ユーザー名 | 指定したユーザーで実行する |
rootユーザーとしてログインする
実行結果
[sunarin@localhost ~]$ sudo -i
[sudo] sunarin のパスワード:
[root@localhost ~]#
システムを再起動する
実行結果
[sunarin@localhost ~]$ sudo reboot
sudoで利用できるコマンドを一覧する。認定している実行可能なコマンドなどを確認できる。
実行結果
[sunarin@localhost ~]$ sudo -l
[sudo] sunarin のパスワード:
既定値のエントリと照合中 (ユーザー名 sunarin) (ホスト名 localhost):
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset,
env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR
USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT
LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE",
env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
ユーザー sunarin は localhost 上で コマンドを実行できます
(ALL) ALL
[sunarin@localhost ~]$
ユーザー名を指定して実行する
実行結果
[sunarin@localhost ~]$ sudo -u test cat /home/test/test.txt
test
[sunarin@localhost ~]$
リダイレクトするコマンドを実行する
「sudo du -hs > /root/home-du.txt」は「>」移行がsudoの適用コマンド外になってしまうため、権限がないファイルにリダイレクトで出力できません。この場合はサブシェルを作って実行します。sh -cで、「”」でコマンドをまとめることできます。
実行結果
[sunarin@localhost ~]$ sudo sh -c "cd /home; du -hs > /root/home-du.txt"
[sudo] sunarin のパスワード:
[sunarin@localhost ~]$ sudo ls /root
anaconda-ks.cfg home-du.txt initial-setup-ks.cfg
[sunarin@localhost ~]$