RUNUSER
Section: User Commands (1)
Updated: July 2014
Index
Return to Main Contents
名前
runuser - 代わりのユーザー ID とグループ ID でコマンドを実行する。
書式
runuser [options] -u
user
[[--] command [argument...]]
runuser [options] [-]
[user [argument...]]
説明
runuser
を使うと、代わりのユーザー ID とグループ ID でコマンドを実行できる。
オプション -u が指定されない場合、
su
互換の動作にフォールバックし、シェルが実行される。
コマンド
runuser
と
su
の違いは、
runuser
が (root ユーザーのみから実行されるため) パスワードを尋ねない点と、
別の PAM 設定を使っている点である。
コマンド
runuser
は set-user-ID 権限でインストールする必要はない。
PAM セッションが必要なければ、推奨される方法は
setpriv(1)
コマンドを使うことである。
引き数なしで呼び出された場合、
runuser
はデフォルトで対話シェルを
root
として実行する。
後方互換のため、
runuser
はデフォルトではカレントディレクトリを変更せず、
環境変数
HOME
と
SHELL
を設定するだけである
(対象の
user
が root でない場合、
USER
と
LOGNAME
も設定する)。
このバージョンの
runuser
はセッション管理に PAM を使う。
オプション
- -c, --command=command
-
command
をシェルに
-c
オプションを付けて渡す。
- -f, --fast
-
-f
をシェルに渡す。
これはシェルによっては、使えたり、使えなかったりする。
- -g, --group=group
-
使用するプライマリーグループ。
このオプションは root ユーザーにのみ許可されている。
- -G, --supp-group=group
-
補助 (supplementary) グループを指定する。
このオプションは root ユーザーにのみ許可されている。
オプション --group が指定されていない場合、補助グループがプライマリグループとして
使われる。
- -, -l, --login
-
シェルをログインシェルとして開始する。環境変数は実際の login と同様である:
-
- o
-
TERM
と --whitelist-environment で指定された環境変数以外の、
全ての環境変数をクリアする。
- o
-
環境変数
HOME,
SHELL,
USER,
LOGNAME,
PATH
を初期化する。
- o
-
対象ユーザーのホームディレクトリに変更する。
- o
-
シェルの argv[0] に
'-'
を設定し、シェルをログインシェルとする。
- -P, --pty
-
セッションに対して擬似端末 (pseudo-terminal) を作成する。
独立した端末を使うことで、ユーザーが元のセッションと端末を
共有しなくなり、より良いセキュリティ環境を提供する。
これにより、端末のファイルディスクリプターに対する、
TIOCSTI ioctl 端末インジェクションやセキュリティアタックを回避できる。
全てのセッションはバックグランドに移すこともできる
(例えば、 "runuser --pty -u username -- command &")。
擬似端末が有効になっている場合、 runuser はセッション間の
プロキシとして動作する (標準入力と標準出力をコピーする)。
この機能は大部分が対話セッションのために設計されている。
標準入力が端末ではなく、例えばパイプの場合
(例、echo "date" | runuser --pty -u user)、
不要な出力を避けるため、擬似端末の ECHO フラグは無効化される。
- -m, -p, --preserve-environment
-
環境変数を保持する。つまり、
HOME,
SHELL,
USER,
LOGNAME
を設定しない。
オプション --login が指定されている場合、このオプションは無視される。
- -s, --shell=shell
-
デフォルトのシェルの代わりに、指定した shell を実行する。
実行するシェルは以下のルールに従って順番に選択される:
-
- o
-
--shell
で指定したシェル
- o
-
--preserve-environment
オプションが使われている場合は、環境変数
SHELL
で指定されたシェル
- o
-
対象ユーザーの passwd エントリにリストされているシェル
- o
-
/bin/sh
-
対象ユーザーが制限されたシェル
(つまり /etc/shells に記載されていないシェル) を使っている場合、
呼び出し元ユーザーが root でない限り、
--shell
オプションと
SHELL
環境変数は無視される。
- --session-command=command
-
-c
と同様であるが、新しいセッションを作成しない。(推奨しない)
- -w, --whitelist-environment=list
-
--login で環境変数をクリアする際に、
カンマ区切りの list に指定された環境変数はリセットしない。
このホワイトリストでは、環境変数
HOME,
SHELL,
USER,
LOGNAME,
PATH
は無視される。
- -V, --version
-
バージョン情報を表示して、終了する。
- -h, --help
-
ヘルプを表示して、終了する。
設定ファイル
runuser
は設定ファイル
/etc/default/runuser
と
/etc/login.defs
を読み込む。
以下の設定項目が
runuser
と関連する:
ENV_PATH
(文字列)
-
一般ユーザーの PATH 環境変数を定義する。
デフォルト値は、
/usr/local/bin::/bin::/usr/bin
である。
ENV_ROOTPATH
(文字列)
ENV_SUPATH
(文字列)
-
root の PATH 環境変数を定義する。
ENV_SUPATH が優先される。
デフォルト値は、
/usr/local/sbin::/usr/local/bin::/sbin::/bin::/usr/sbin::/usr/bin
である。
ALWAYS_SET_PATH
(ブール値)
-
この項目が
yes
に設定されており、--login と --preserve-environment が指定されない場合、
runuser
は
PATH
を初期化する。
/bin と /sbin が /usr の中に統合されているシステムでは、
環境変数 PATH が違うかもしれない。
返り値
通常、
runuser
は実行したコマンドの返り値を返す。
コマンドがシグナルで kill された場合、
runuser
はシグナルの番号 + 128 を返す。
runuser
自身が生成する返り値は、以下の通り:
-
- 1
-
要求されたコマンドを実行する前の一般的なエラー。
- 126
-
要求されたコマンドが実行できなかった。
- 127
-
要求されたコマンドが見つからなかった。
ファイル
- /etc/pam.d/runuser
-
デフォルトの PAM 設定ファイル
- /etc/pam.d/runuser-l
-
--login が指定された場合の PAM 設定ファイル
- /etc/default/runuser
-
runuser 固有の logindef 設定ファイル
- /etc/login.defs
-
グローバルの logindef 設定ファイル
関連項目
setpriv(1),
su(1),
login.defs(5),
shells(5),
pam(8)
履歴
この runuser コマンドは、
David MacKenzie によって実装された coreutils の su と、
Dan Walsh によって実装された Fedora の runuser コマンドから派生している。
入手方法
runuser コマンドは util-linux パッケージの一部であり、
Linux Kernel Archive
から入手できる。
Index
- 名前
-
- 書式
-
- 説明
-
- オプション
-
- 設定ファイル
-
- 返り値
-
- ファイル
-
- 関連項目
-
- 履歴
-
- 入手方法
-
This document was created by
man2html,
using the manual pages.
Time: 12:23:44 GMT, April 12, 2020