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 互換の動作にフォールバックし、シェルが実行される。 コマンド runusersu の違いは、 runuser が (root ユーザーのみから実行されるため) パスワードを尋ねない点と、 別の PAM 設定を使っている点である。 コマンド runuser は set-user-ID 権限でインストールする必要はない。

PAM セッションが必要なければ、推奨される方法は setpriv(1) コマンドを使うことである。

引き数なしで呼び出された場合、 runuser はデフォルトで対話シェルを root として実行する。

後方互換のため、 runuser はデフォルトではカレントディレクトリを変更せず、 環境変数 HOMESHELL を設定するだけである (対象の user が root でない場合、 USERLOGNAME も設定する)。 このバージョンの 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 が指定されない場合、 runuserPATH を初期化する。

/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