前: nohup invocation, 上: Modified command invocation


22.5 su: 適切なユーザとグループidを用いてコマンドを実行

suは,あるユーザが一時的に他のユーザになることを可能にします. それは実際の実効ユーザidと,与えられたuserの追加グループでコマン ドを(しばしば対話的シェルで)実行します.概要です.

     su [option]... [user [arg]...]

userが与えられない場合,デフォルトはrootのスーパーユーザ です.使用するシェルは,userpasswdの項目から得られたも の,または,そこで指定されていない場合は/bin/shを使用します. userにパスワードがある場合,実行ユーザidがゼロ(スーパーユーザ) の実行でなければ,suはパスワードの入力を促します.

デフォルトで,suはカレントディレクトリを変更しません.それは 環境変数HOMESHELLuserのパスワード項目から設定し, userがスーパーユーザでない場合,USERLOGNAMEuserに設定します.デフォルトでシェルはログインシェルではありませ ん.

追加のargは,シェルへの追加の引数として与えられます.

GNU suは,/bin/shや他の特殊なものを扱いません(例えば, argv[0]-suに設定する,-cを特定のシェルに渡 す等です).

suは,suの試みに対する失敗と,追加で成功を報告する ために,syslogを使用するようにコンパイルすることが可能です.(シ ステムがsyslogをサポートしている場合です.)しかし,GNU suは,ユーザがwheelグループのメンバーかどうか調査しま せん.以下を参照してください.

プログラムは,以下のオプションを受け入れます.Common optionsも参 照してください.

`-c command'
`--command=command'
単一のコマンドラインで実行するcommandを,対話的シェルを開始する 代わりに,-cオプションを用いて渡します.
`-f'
`--fast'
シェルに-fオプションを渡します.これはおそらく,シェルの実行 がcshtcshの場合にのみ意味があり,それらに対する -fオプションは,スタートアップファイル(.cshrc)の読み込 みを妨げます.Bourneのようなシェルを用いた場合,-fオプション はファイル名のパターン拡張(glob)を利用不可能にし,それは役に立つとは思 えません.
`-'
`-l'
`--login'
シェルをログインシェルにします.これは以下のことを意味します. TERMHOME,そしてSHELL(上記で記述されるように設定さ れている),そしてUSERLOGNAME(スーパーユーザでも,上記で 記述されるように設定されている)以外の,すべての環境変数をアンセットし, PATHを組み込まれているデフォルト値に設定します.userのホー ムディレクトリに変更します.ログインスタートアップファイルを読み込ませ るために,`-'をシェルの名前の前に前置してください.
`-m'
`-p'
`--preserve-environment'
環境変数HOMEUSERLOGNAME,またはSHELLを変更 しません.suを実行しているユーザがスーパーユーザで, userのシェルが制限されていない場合は,userのパスワード項目 から得られるシェルの代わりに,環境変数SHELLで与えられたシェルを 実行します.制限されているシェル(restricted shell)とは,ファイル /etc/shellsや,そのファイルが存在しない場合は組み込みリストにリ ストアップされていないものです.このオプションが行うことの一部は, --login--shellで優先することが可能です.
`-s shell'
`--shell=shell'
suを実行しているユーザがスーパーユーザで,userのシェル が限定されていない(真上の-mを参照してください)場合は, userのパスワード項目から得られるシェルの代わりに,shellを 実行します.

終了ステータスです.

     
     
     
     
     1   su自身が失敗した場合.
     126 サブシェルは見つかったが,呼出しできない場合.
     127 サブシェルが見つからない場合.
     それ以外では,サブシェルの終了ステータスになります.

22.5.1 GNU suが`wheel'グループをサポートしない理由

(このセクションは,Richard Stallmanが作成しました.)

数人のユーザが,残り全員以上の総合的な権力を持ちたいと思うときもありま す.例えば,1984年に,MIT AI labの数人のユーザが,Twenexシステムのオペ レータパスワードを変更し,他の全員に秘密にし続けることで,権力を占有し ようとしました.(私は,このクーデターを妨害し,カーネルにパッチを行い ユーザに力を取り戻させようとしましたが,Unixでそうする方法を知りません でした.)

しかし,支配者がだれかに告げることもあります.通常のsuメカニ ズムでは,一旦,普通のユーザに同情する誰かが,ルートのパスワードを知る と,彼または彼女は残りを伝えることができます.“wheel group”の特徴は, これを不可能にし,そのため支配者の権力は固まります.

私は多数の味方で支配者の味方ではありません.ボスとシスアドのあらゆる作 業をサポートすることに慣れている場合,最初にこの考えが奇妙だと分かるこ とでしょう.