SU(1) | FreeBSD General Commands Manual | SU(1) |
名称
su — 一時的に他のユーザになりかわる書式
su | [ -][ -c class][ -flms][ login [ args]] |
解説
su ユーティリティは、PAM を通して適切なユーザ証明書を要求し、そのユーザ ID (デフォルトユーザは、スーパユーザです) に切り替えます。次に、シェルが実行されます。 PAM は、 su(1) が使用するポリシを設定するために使用されます。特に、デフォルトでは、“ wheel
”グループのユーザのみが UID 0 (“ root
”) に切り替えることができます。このグループの要件は、 /etc/pam.d/su の“ pam_group
”セクションを修正することによって変更することができます。この設定をどのように修正するかに関する詳細については、 pam_group(8) を参照してください。
デフォルトで、環境変数は、 USER, HOME と SHELL を除いて、修正されません。 HOME と SHELL は、ターゲットログインのデフォルト値に設定されます。 USER は、ターゲットログインに 0 のユーザ ID がないなら、ターゲットログインに設定され、0 のユーザ ID の場合に、それは、修正されません。呼び出されるシェルは、ターゲットログインに属するシェルです。これは、 su の伝統的な振る舞いです。また、オリジナルのユーザのログインクラス ( login.conf(5) を参照) に適用可能なリソースの制限とセッションの優先度は、ターゲットログインが 0 のユーザ ID でないなら、通常、保持されます。
オプションは、次の通りです:
- -c class
- 指定されたログインクラスの設定を使用します。ログインクラスは、 login.conf(5) で定義されなければなりません。スーパユーザに対してのみ許可されます。
- -f
- シェルとして csh(1) が実行される場合、“ .cshrc”ファイルを読み込みません。
- -l
- 完全なログインをシミュレートします。環境変数は、 HOME, SHELL, PATH, TERM と USER を除いて破棄されます。 HOME と SHELL は、上記のように修正されます。 USER は、ターゲットログインに設定されます。 PATH は、“ /bin:/usr/bin”に設定されます。 TERM は、利用者の現在の環境変数から取り入れられます。環境変数は、ターゲットログインのクラスに従って、ログインクラスケーパビリティデータベースにより、設定または上書きされます。実行されるシェルは、ターゲットログインのログインシェルになり、 su は、ターゲットログインのホームディレクトリに移動します。資源制約とセッション優先度は、ターゲットアカウントのログインクラスのものに変更されます。
- -
- (文字無し) -l と同じです。
- -m
- 環境変数は、変化しません。実行されるシェルは、自分のログインシェルで、ディレクトリの移動も行われません。セキュリティの用心として、もしターゲットユーザのシェルが非標準シェル ( getusershell(3) で定義される) であり、かつ、呼出側の実ユーザ ID が 0 でなければ、 su は、失敗します。
- -s
- ユーザの資格の設定の一環として、 MAC ラベルをユーザのデフォルトラベルへ設定します。起動したプロセスの MAC ラベルが、ユーザのデフォルト MAC ラベルへ遷移するには不十分である場合、 MAC ラベルの設定は、失敗するかもしれません。ラベルの設定ができない場合、 su は、失敗します。
-l (または -) と -m は、同時に指定することはできません。最後に指定したものが優先されます。
オプションの args がコマンドラインに指定されると、それらは、ターゲットログインのログインシェルに引き渡されます。ターゲットログイン名より前のコマンドライン引数は、すべて su 自身によって処理され、ターゲットログイン名より後のコマンドライン引数は、すべてログインシェルに渡されることに注意してください。
デフォルトでは、(設定がされていなければ) スーパユーザのプロンプトは、“ #”に設定されます。
環境変数
su で利用される環境変数は、次の通りです:- HOME
- 上記で示した書き換えがない限り、実ユーザ ID のデフォルトのホームディレクトリです。
- PATH
- 上記で示した書き換えがない限り、実ユーザ ID のデフォルトのサーチパスです。
- TERM
- なり代わる人が所有している端末のターミナルタイプです。
- USER
- ユーザ ID が 0 (root) 以外の場合は、ユーザ ID は、常に su 後の実効 (effective) ID (ターゲットユーザ ID) です。
関連ファイル
- /etc/pam.d/su
- su の PAM 設定ファイル
使用例
-
su -m man -c catman
-
ユーザ
man
としてシェルを起動し、コマンドcatman
を実行します。利用者の実 UID が 0 でない場合は、man のパスワードを尋ねられます。ユーザ“man”には、デフォルトで有効なシェルがないので -m オプションが必要であることに注意してください。この例において、 -c は、ユーザ“man”のシェルに渡され、 su には引数として解釈されません。 -
su -m man -c 'catman /usr/share/man /usr/local/man'
- 上と同様ですが、コマンドが複数の語から構成されています。 -c オプションをシェルに渡すためにクォートしています (ほとんどのシェルでは、 -c への引数が単一語であると期待します)。
-
su -m -c staff man -c 'catman /usr/share/man /usr/local/man'
- 上と同様ですが、ログインクラス“staff”の資源制限にてターゲットコマンドを実行します。注: この例では、最初の -c オプションは、 su に適用され、2 番目のものは起動されるシェルの引数となります。
-
su -l foo
- ユーザ foo のログインをシミュレートします。
-
su - foo
- 上と同じです。
-
su -
- rootのログインをシミュレートします。
歴史
su コマンドは、 Version 1 AT&T UNIX で登場しました。August 11, 2013 | FreeBSD |