一時的に他のユーザーになる

First Edition 2001.6.26
Last Modified 2003.9.24

一時的に他のユーザーになりたい時があります。大抵は一時的にルートになるために使うこ とになると思います。しかし管理者以外ルートのパスワードを知っているべきではありません。

目次

 1 一時的に他のユーザーになる(対象Ver:全て)(2003.9.24)
 2 ルートになるときに注意すること(対象Ver:全て)(2003.9.24)
 3 スーパーユーザーになるのを制限する(対象Ver:全て)(2003.9.24)


一時的に他のユーザーになる

suコマンドを使い、ユーザー名とパスワードを入力します。
$ su milky
Password:
こうすることにより、milkyというユーザーに移行することが出来ます。この場合、パスなどのユーザー環境は、 ユーザーを変更する前のものになります。

ユーザーを移行したときに、移行したユーザーの環境にも移行したいときは、 以下のように"-(ハイフン)"を付けてsuコマンドを実行します。
$ su - milky
Password:
一般ユーザーに移行する以外に、ルートに移行することもできます。以下のようにします。
$ su -
ここで、最後のハイフン(-)をつけることにより、最初からルートでログインしたのと同じ環 境変数が設定されます。ハイフンを付けないと、たとえば/sbinディレクトリなどにパスが通らず、 command not foundと出てしまい、あれ?と思ってしまうことがあります。
ハイフンを付けないでルートになると、カレントディレクトリはそのままでルートになれます。

ルートになるときに注意すること

ルートになるときは特別注意しなければなりません。ルートで作業するとちょっとした操作ミスにより取り返しのつかないことになりかねません。 ルートになるときは以下の項目に注意しましょう。
  • 作業はなるべく短い時間で行う
  • 特定のコマンドのみを使うようにする
  • 何はともあれ、慎重に!
作業は素早く確実に、一つの作業のみ行いましょう。
suでルートになって作業する場合、使用するコマンドが決まっているなら以下のようにするとコマンド終了後に 元のユーザーに戻るますので、少しは安全になります。
$ su -c "/sbin/fdisk /dev/hda"
という風に、-cオプションにより、コマンドを直接指定します。上記の例ではfdiskコマンドを終了すると元のユーザーに戻ります。

スーパーユーザーになるのを制限する

スーパーユーザーになるのは、パスワードを知っていれば誰でもできてしまいます。
これをユーザーによって制限する方法があります。
複数のユーザーが登録されているシステムでは必要なアカウント以外はスーパーユーザーになれないようにしておいた方が 良いです。
ルート(スーパーユーザー)になって、/etc/groupファイルを編集します。
root:x:0:root
bin:x:1:root,bin,daemon
daemon:x:2:root,bin,daemon
sys:x:3:root,bin,adm
adm:x:4:root,adm,daemon
tty:x:5:
disk:x:6:root
lp:x:7:daemon,lp
mem:x:8:
kmem:x:9:
wheel:x:10:root,lucky ←カンマで区切ってユーザーを列挙していきます
mail:x:12:mail
wheelグループにカンマで区切ってユーザーを列挙していきます。次に/etc/pam.d/suファイルを編集します。

auth required /lib/security/pam_wheel.so use_uid

という行がコメントアウトされていますので、コメントアウトを外します。(行の先頭の#マークを削除する) /etc/pam.d/su
#%PAM-1.0
auth       sufficient   /lib/security/pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth       sufficient   /lib/security/pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
auth       required     /lib/security/pam_wheel.so use_uid ←コメントアウトされているのを外す
auth       required     /lib/security/pam_stack.so service=system-auth
account    required     /lib/security/pam_stack.so service=system-auth
password   required     /lib/security/pam_stack.so service=system-auth
session    required     /lib/security/pam_stack.so service=system-auth
session    optional     /lib/security/pam_xauth.so
このようにすれば、luckyユーザーしかsuコマンドでルートになることはできなくなります。
[HOME]
since 2001.4.22