[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
このセクションは,現在と異なる状況で他のコマンドを実行するコマンドを記 述します.異なるユーザとして環境を変更するなどです.
22.1 chroot : 異なるルートディレクトリでコマンドを実行 | Modify the root directory. | |
22.2 env : 変更された環境変数でコマンドを実行 | Modify environment variables. | |
22.3 nice : 変更されたスケジュール優先順位でコマンドを実行 | Modify scheduling priority. | |
22.4 nohup : ハングアップを免除したコマンドの実行 | Immunize to hangups. | |
22.5 su : 適切なユーザとグループidを用いてコマンドを実行 | Modify user and group id. |
chroot
: 異なるルートディレクトリでコマンドを実行 chroot
は,指定されたルートディレクトリでコマンドを実行します.
多くのシステムでは,スーパーユーザのみこれが可能です.概要です.
chroot newroot [command [args]…] chroot option |
通常ファイル名は,ディレクトリ構造のルート,すなわち`/'を起点とし
て調べられます.chroot
は,ルートをnewrootディレクトリ
(存在する必要があります)に変更し,オプションのargsを用いて
commandを実行します.commandが指定されていない場合,デフォ
ルトは,SHELL
環境変数や,設定されていない場合は/bin/sh
の
値が,`-i'オプションで呼び出されます.
オプションは`--help'と`--version'だけです.See section 共通のオプション.
chroot
の使用にあたり,一般的な問題を避ける手助けとなるヒント
がいくつかあります.単純な例を始めるため,commandはスタティック
リンクされているバイナリだと仮定します.ダイナミックリンクされている実
行形式を使用している場合,共有ライブラリを新しいルートディレクトリの正
しい位置に配置する必要があります.
例えば,スタティックリンクのls
の実行形式を作成し,
`/tmp/empty'に配置した場合,以下のコマンドをrootで実行することが
可能です.
$ chroot /tmp/empty /ls -Rl / |
出力は以下のようになります.
/: total 1023 -rwxr-xr-x 1 0 0 1041745 Aug 16 11:17 ls |
bash
のような,ダイナミックリンクされている実行形式を使用した
い場合,最初に必要な共有オブジェクトを見つけるため`ldd bash'を実
行してください.そして,実際のバイナリをコピーし,新しいルートディレク
トリの要求される場所に,リストアップされているファイルもコピーして下さ
い.最後に,実行形式が要求するすべてのファイルも(例えば,データ,ステー
ト,デバイスファイル),必要な場所にコピーして下さい.
終了ステータスです.
1 |
env
: 変更された環境変数でコマンドを実行 env
は,変更された環境変数でコマンドを実行します.概要です.
env [option]… [name=value]… [command [args]…] env |
`variable=value'の形式の引数は,環境変数 variableを値valueに設定します.valueは空にもできます (`variable=').変数を空の値に設定することは,アンセットする こととは異なります.
残りの最初の引数は,呼び出すプログラム名を指定します.それはPATH
環境変数で検索されます.あらゆる残りの引数は,引数としてそのプログラム
に渡されます.
環境変数指定に続いてコマンド名が指定されていない場合,結果となる環境変
数が出力されます.これは,printenv
のコマンド名を指定すること
に似ています.
プログラムは以下のオプションも受け入れます.共通のオプションも参照 してください.
変数nameが環境変数の場合,それを環境変数から削除します.
継承された環境変数を無視して,空の環境変数を用いて開始します.
終了ステータスです.
0 commandが指定されておらず,環境変数が出力される場合.
1 |
nice
: 変更されたスケジュール優先順位でコマンドを実行 nice
は,ジョブのスケジュールの優先順位を出力または変更します.
概要です.
nice [option]… [command [arg]…] |
引数が与えられていない場合,nice
は現在のスケジュールの優先順
位を出力し,それは継承されます.それ以外の場合,nice
は,与え
られたコマンドをそのスケジュール優先順位を調整しながら実行します.
adjustmentが与えられていない場合,コマンドの優先順位は10増加しま
す.負の調整を指定するためには適切な特権が必要です.nice
が調
整可能な優先順位は,-20(最優先)から19(最低)までです.
ほとんどのシェルには同じ名前のシェル組み込みコマンドがあるので,装飾な しのスクリプトのコマンド名や対話的に使用すると,ここで記述されていない 異なる機能となる可能性があります.
プログラムは以下のオプションも受け入れます.共通のオプションも参照 してください.
コマンドの優先順位に,10の代わりにadjustmentを加えます.
古いシステムでは,nice
は時代遅れのオプション
`-adjustment'をサポートしています.POSIX
1003.1-2001 (see section 標準への準拠)では,これを許可していませ
ん.代わりに`-n adjustment'を使用してください.
終了ステータスです.
0 commandが指定されておらず,現在の優先順位が出力される場合.
1 |
優先順位を下げて対話的ではないプログラムを実行することが,役に立つ事も あります.
$ nice factor `echo '2^997 - 1'|bc` |
nice
は現在の優先順位を出力するので,動作状態を検証するために
呼び出すことも可能です.
デフォルトの動作では,優先順位を`10'下げます.
$ nice nice 10 |
$ nice -n 10 nice 10 |
adjustmentは,現在の優先順位に相対的なものになります.ここで,最
初のnice
の呼び出しで,二番目のnice
の優先順位を
`10'下げて,最終的にその優先順位をさらに`3'下げるように実行
します.
$ nice nice -n 3 nice 13 |
優先順位を`19'以上に指定することは,`19'に指定することと同じ になります.
$ nice -n 30 nice 19 |
特権ユーザだけが,より高い優先順位でプロセスを実行することが可能です.
$ nice -n -1 nice nice: cannot set priority: Permission denied $ sudo nice -n -1 nice -1 |
nohup
: ハングアップを免除したコマンドの実行 nohup
は,ログアウト後にバックグランドでコマンドを実行し続け
ることを可能にするため,ハングアップシグナルを無視して,与えられたコマ
ンドを実行します.概要です.
nohup command [arg]… |
標準出力が端末の場合,ファイル`nohup.out'に追加するようにリダイレ
クトされます.書き込み不可能な場合,それらはファイル
`$HOME/nohup.out'に追加します.それも書き込み不可能な場合,コマン
ドは実行されません.標準出力が端末の場合,commandの標準出力は
nohup
のものと同じになります.
nohup
が`nohup.out'や`$HOME/nohup.out'を作成する場
合,"group"や"other"のアクセス許可を用いてそれを作成しません.出力
ファイルが既存の場合は,その許可を変更しません.
標準エラー出力が端末の場合,標準出力と同じファイルデスクリプタにリダイ レクトされます.
nohup
は,バックグランドで実行するようにするコマンドを,自動
的に書き出しません.コマンド行の終りに`&'を用いて,明示する必要が
あります.また,nohup
はcommandのスケジュールの優先順位
を変更しません.そうするためにnice
コマンドを,例えば
`nohup nice command'のように使用して下さい.
オプションは`--help'と`--version'のみです.See section 共通のオプション.
終了ステータスです.
126 commandは見つかるが,呼び出せなかった場合.
127 |
su
: 適切なユーザとグループidを用いてコマンドを実行 su
は,あるユーザが一時的に他のユーザになることを可能にします.
それは実際の実効ユーザidと,与えられたuserの追加グループでコマン
ドを(しばしば対話的シェルで)実行します.概要です.
su [option]… [user [arg]…] |
userが与えられない場合,デフォルトはroot
のスーパーユーザ
です.使用するシェルは,userのpasswd
の項目から得られたも
の,または,そこで指定されていない場合は`/bin/sh'を使用します.
userにパスワードがある場合,実行ユーザidがゼロ(スーパーユーザ)
の実行でなければ,su
はパスワードの入力を促します.
デフォルトで,su
はカレントディレクトリを変更しません.それは
環境変数HOME
とSHELL
をuserのパスワード項目から設定し,
userがスーパーユーザでない場合,USER
とLOGNAME
を
userに設定します.デフォルトでシェルはログインシェルではありませ
ん.
追加のargは,シェルへの追加の引数として与えられます.
GNU su
は,`/bin/sh'や他の特殊なものを扱いません(例えば,
argv[0]
を`-su'に設定する,`-c'を特定のシェルに渡
す等です).
su
は,su
の試みに対する失敗と,追加で成功を報告する
ために,syslog
を使用するようにコンパイルすることが可能です.(シ
ステムがsyslog
をサポートしている場合です.)しかし,GNU
su
は,ユーザがwheel
グループのメンバーかどうか調査しま
せん.以下を参照してください.
プログラムは,以下のオプションを受け入れます.共通のオプションも参 照してください.
単一のコマンドラインで実行するcommandを,対話的シェルを開始する 代わりに,`-c'オプションを用いて渡します.
シェルに`-f'オプションを渡します.これはおそらく,シェルの実行
がcsh
やtcsh
の場合にのみ意味があり,それらに対する
`-f'オプションは,スタートアップファイル(`.cshrc')の読み込
みを妨げます.Bourneのようなシェルを用いた場合,`-f'オプション
はファイル名のパターン拡張(glob)を利用不可能にし,それは役に立つとは思
えません.
シェルをログインシェルにします.これは以下のことを意味します.
TERM
,HOME
,そしてSHELL
(上記で記述されるように設定さ
れている),そしてUSER
とLOGNAME
(スーパーユーザでも,上記で
記述されるように設定されている)以外の,すべての環境変数をアンセットし,
PATH
を組み込まれているデフォルト値に設定します.userのホー
ムディレクトリに変更します.ログインスタートアップファイルを読み込ませ
るために,`-'をシェルの名前の前に前置してください.
環境変数HOME
,USER
,LOGNAME
,またはSHELL
を変更
しません.su
を実行しているユーザがスーパーユーザで,
userのシェルが制限されていない場合は,userのパスワード項目
から得られるシェルの代わりに,環境変数SHELL
で与えられたシェルを
実行します.制限されているシェル(restricted shell)とは,ファイル
`/etc/shells'や,そのファイルが存在しない場合は組み込みリストにリ
ストアップされていないものです.このオプションが行うことの一部は,
`--login'と`--shell'で優先することが可能です.
su
を実行しているユーザがスーパーユーザで,userのシェル
が限定されていない(真上の`-m'を参照してください)場合は,
userのパスワード項目から得られるシェルの代わりに,shellを
実行します.
終了ステータスです.
1 |
su
が`wheel'グループをサポートしない理由 (このセクションは,Richard Stallmanが作成しました.)
数人のユーザが,残り全員以上の総合的な権力を持ちたいと思うときもありま す.例えば,1984年に,MIT AI labの数人のユーザが,Twenexシステムのオペ レータパスワードを変更し,他の全員に秘密にし続けることで,権力を占有し ようとしました.(私は,このクーデターを妨害し,カーネルにパッチを行い ユーザに力を取り戻させようとしましたが,Unixでそうする方法を知りません でした.)
しかし,支配者がだれかに告げることもあります.通常のsu
メカニ
ズムでは,一旦,普通のユーザに同情する誰かが,ルートのパスワードを知る
と,彼または彼女は残りを伝えることができます."wheel group"の特徴は,
これを不可能にし,そのため支配者の権力は固まります.
私は多数の味方で支配者の味方ではありません.ボスとシスアドのあらゆる作 業をサポートすることに慣れている場合,最初にこの考えが奇妙だと分かるこ とでしょう.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Akihiro Sagawa on June, 8 2005 using texi2html 1.70.