rbash
bashを-rオプションで起動するか、bashのシンボリックリンクがrbashになっているか。
多分大抵のディストリビューションでは、rbashのシンボリックリンクが作られていると思う。
結構古いbashからあった機能らしい。確認した一番古いbashでversion 2.05なのでソートー昔からある。
実際に使ってみると、
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ bash -r $ cd Desktop bash: cd: 制限されています $ /bin/ls bash: /bin/ls: 制限されています: `/' をコマンド名の中に指定できません $ PATH="/bin/" bash: PATH: 読み取り専用の変数です $ echo "hoge" > hoge.txt bash: hoge.txt: 制限されています: 出力をリダイレクト出来ません |
なんも出来ねー
一応manページによると、以下が出来無いらしい。
- cd を使ってディレクトリを変更すること
- SHELL, PATH, ENV, BASH_ENV の値の設定や設定取り消しを行なうこと
- / を含むコマンド名を指定するこ
- 組み込みコマンド . の引き数として / を含むファイル名を指定すること
- 組み込みコマンド hash に対するオプション -p の引数として / を含むファイル名を指定すること
- 起動時にシェル環境から関数定義をインポートすること
- 起動時にシェル環境から SHELLOPTS の値を展開すること
- リダイレクション演算子 >, >|, <>, >&, &>, >> を使ってリダイレクトを行 なうこと
- 組み込みコマンド exec を用いて、シェルを別のコマンドに置き換えること
- 組み込みコマンド enable に対する -f オプションと -d オプションを使って、組み込みコマンドを追加・削除すること
- 組み込みコマンド command に -p オプションを指定すること
- set +r や set +o restricted を用いて制限モードを解除すること
かなり厳しい制限だが、共有レンタルサーバなどでユーザにshellを開放する場合は
使えるかもと思った。
chroot+sshが理想なんだろうけど、opensshにパッチあてたり、必要なコマンドをchroot下に用意したりするより
簡単なのではと思う。
特にパッチあては、パッケージ管理から外れるので、sshなんて重要なものでは極力避けたいし。
最近はディストリビューション標準パッケージで、chroot可なものもあるのだろうか。
追加
1 2 3 4 5 6 7 8 9 |
$ bash -r $ cd Desktop rbash: cd: 制限されています $ bash $ cd Desktop Desktop$ |
あれ?