rbash は、制限された bash シェルを表します。 UNIX では、ユーザーの作成時に動作するように、デフォルトのシェル (/bin/bash) が割り当てられます。したがって、ユーザーは誰のディレクトリにも移動できるため、この状況を回避するために、制限付きシェルをユーザーに割り当てることができます。制限付きシェルは、監獄のような環境または chroot 環境のようなものです。
なぜ rbash なのか?
bash が rbash という名前で開始された場合、または呼び出し時に -r オプションが指定された場合、シェルは制限されます。制限付きシェルは、標準シェルよりも制御された環境をセットアップするために使用されます。以下が許可されていないか実行されないことを除いて、bash と同じように動作します:
- cd によるディレクトリの変更
- SHELL、PATH、ENV、または BASH_ENV の値の設定または設定解除
- / を含むコマンド名の指定
- 組み込みコマンドの引数として / を含むファイル名を指定する
- hash 組み込みコマンドの -p オプションの引数としてスラッシュを含むファイル名を指定する
- 起動時にシェル環境から関数定義をインポートする
- 起動時にシェル環境から SHELLOPTS の値を解析する
- >、>|、<>、>&、&>、および>> リダイレクト演算子を使用した出力のリダイレクト
- exec 組み込みコマンドを使用してシェルを別のコマンドに置き換える
- -f および -d オプションを使用して組み込みコマンドを enable 組み込みコマンドに追加または削除する
- enable builtin コマンドを使用して無効なシェル ビルトインを有効にする
- コマンド組み込みコマンドに -p オプションを指定する。
- set +r または set +o limited で制限付きモードをオフにする
制限付きシェルの設定方法
特定のユーザーに必要な環境を設定し、以下に示すように、スタートアップ ファイル:$HOME/.bash_profile を配置できます:
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH bash -r
ユーザーでログインし、ディレクトリを変更してみてください。
$ cd /etc/ bash: cd: restricted $ cd /tmp/ bash: cd: restricted
すべてのユーザーに制限付きシェルを設定するには、/bin/bash から /bin/rbash へのシンボリック リンクを作成します。
# cd /bin # ln -s bash rbash