EN JA
SU(1)
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, HOMESHELL を除いて、修正されません。 HOMESHELL は、ターゲットログインのデフォルト値に設定されます。 USER は、ターゲットログインに 0 のユーザ ID がないなら、ターゲットログインに設定され、0 のユーザ ID の場合に、それは、修正されません。呼び出されるシェルは、ターゲットログインに属するシェルです。これは、 su の伝統的な振る舞いです。また、オリジナルのユーザのログインクラス ( login.conf(5) を参照) に適用可能なリソースの制限とセッションの優先度は、ターゲットログインが 0 のユーザ ID でないなら、通常、保持されます。

オプションは、次の通りです:

-c class
指定されたログインクラスの設定を使用します。ログインクラスは、 login.conf(5) で定義されなければなりません。スーパユーザに対してのみ許可されます。
-f
シェルとして csh(1) が実行される場合、“ .cshrc”ファイルを読み込みません。
-l
完全なログインをシミュレートします。環境変数は、 HOME, SHELL, PATH, TERMUSER を除いて破棄されます。 HOMESHELL は、上記のように修正されます。 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