su

ユーザ ID とグループ ID を変更してシェルを起動する

su - ユーザ ID とグループ ID を変更してシェルを起動する
su [-flmp] [-c command] [-s shell] [--login] [--fast] [--preserve-environment] [--command=command] [--shell=shell] [-] [--help] [--version] [user [arg...]]
この文書はもうメンテナンスされていないので、不正確・不完全 な可能性がある。現在は texinfo 文書が正式な情報となっている。 このマニュアルページは GNU 版 su について記述したものである。 su はあるユーザーが一時的に他のユーザになるために用いられる。 suuser の実ユーザー ID、実効ユーザー ID、グループ ID、および所属グループ の権限を与えてシェルを起動する。もし user が与えられなかった場合、デフォルトは root、すなわちスーパーユーザーで ある。実行されるシェルは user のパスワードエントリから選択される。ここに何も書かれていない場合は /bin/sh が実行される。 user にパスワードがある場合には、 su はパスワードを要求するプロンプトを表示する。ただし su を実行したのが実ユーザー ID 0 (スーパーユーザー)の場合にはパスワード 認証は行われない。 su はデフォルトではカレントディレクトリを変更しない。また su は 環境変数 `HOME' および `SHELL' を user のパスワードエントリの値にセットする。また user が スーパーユーザー以外の場合には、環境変数 `USER' と `LOGNAME' を user にセットする。デフォルトでは、起動されるシェルはログ インシェルにはならない。 ひとつ以上の引き数 arg が与えられた場合には、これらはシェルに渡され、 引き数としてシェルに付加される。 su は /bin/sh あるいはそれ以外のいかなるシェルも特別には扱わない (argv[0] に -su を設定したり、あるシェルにだけ -c を渡したり、といっ たことはしない)。 syslog に対応しているシステムでは、 su が失敗したとき syslog にレポートするようにコンパイルすること ができる(成功をレポートするようにもできる)。 このプログラムは wheel group の機能( su によってスーパーユーザーアカウントになれるユーザを制限する機能)をサポー トしない。これは専制的なシステム管理者が他のユーザーに不当な権力を振る えないようにするためである。

OPTIONS

-c COMMAND, --command=COMMAND
対話的なシェルを起動するのではなく、シェルに -c オプションとともに COMMAND (実行されるコマンドライン一行)を渡す。
-f, --fast
シェルに -f オプションを渡す。これは(おそらく) cshtcsh のみで意味を持つ。これらのシェルでは -f オプションを指定すると、スタートアップファイル(.cshrc)を読み込まない。 Bourne 系のシェルでは -f オプションはファイル名パターンの展開を抑制する。これは大抵の場合は望ま しい動作ではないだろう。
--help
使い方に関するメッセージを標準出力に表示し、実行成功を返して終了する。
-, -l, --login
シェルをログインシェルにする。すなわち以下のような取り扱いをする: すべての環境変数を解除する。その上で `TERM'、 `HOME'、 `SHELL' を前述 のように設定し、 `USER'、 `LOGNAME' (スーパーユーザーであっても)を同 じく前述のように設定する。続いて `PATH' をコンパイル時のデフォルト値に 設定する。ディレクトリを user のホームディレクトリに変更する。シェル名の前に `-' を付加し、シェルに ログイン時のスタートアップファイルを読ませる。
-m, -p, --preserve-environment
`HOME'、 `USER'、 `LOGNAME' および `SHELL' 環境変数を変更しない。 /etc/passwd で指定されている user のシェルではなく、現在の環境変数 `SHELL' で指定されているシェルを実行 する。ただし su を実行するユーザーがスーパーユーザではなく、 user によるシェルの実行が制限されている場合はこの限りではない。実行が制限さ れているシェルとは、 /etc/shells にリストされていないシェル、あるいは /etc/shells が無い場合はコンパイル時の指定リストに存在しないシェルのこ とである。このオプションが実行する作業の一部は --login または --shell によってオーバーライドされる。
-s, --shell shell
/etc/passwd に記述された user のシェルの代わりに shell を実行する。
--version
バージョン情報を標準出力に表示し、実行成功を返して終了する。
ときおり、少数のユーザーによって、他のユーザーに対する全権を掌握しよう とする試みがなされることがある。例えば 1984 年、 MIT AI ラボの少数のユー ザーは Twenex システムのオペレーターパスワードの変更権限を強奪し、これ を他のユーザーから秘匿することに決定した(この際には私はこのクーデター の裏をかき、カーネルにパッチを当てて権限を取り返すことに成功した。しか しこれが Unix であったら、私にはどうすればよいかわからなかっただろう)。 しかしながら、時には専制者も秘密を漏らすものである。通常の su のメカニ ズムでは、一般ユーザーの側に立つ者が root のパスワードを知れば、これを 他のユーザーにも知らせることができる。しかし wheel group 機能はこれ を不可能にし、結果として専制者達の権限を強固たるものにしてしまう。 私は大衆の側に立つものであり、専制的な立場には反対する。あなたはボスや システム管理者のやり口に従うことに慣れているかも知れないが、その場合は まずそのこと自身を不思議に思うべきではないだろうか。