EN JA
SMRSH(8)
SMRSH(8) FreeBSD System Manager's Manual SMRSH(8)

名称

smrsh - sendmail のための制限されたシェル

書式

smrsh -c command

解説

smrsh プログラムは、 sendmail(8) 設定ファイルの ``prog'' メーラで使用される sh を置き換えるものとして意図されています。利用者のシステムのすべてのセキュリティを改良するために sendmail の ``|program'' 構文を使用して実行することができるコマンドを厳しく制限します。つまり、たとえ、``悪い奴'' が alias または forward ファイルを通過せずにプログラムを実行する sendmail を取得することができても、 smrsh は、彼または彼女が実行することができるプログラムの一式を制限します。

手短に言えば、 smrsh は、システム管理者が受け付け可能なコマンド一式とシェルの組み込みコマンド ``exec''、``exit'' と ``echo'' を選択できるように、単一のディレクトリ、デフォルトで /usr/libexec/sm.bin にあるプログラムに制限します。また、それは、``end run'' 攻撃を防ぐためにコマンド行で文字 ``'、`<', `>'、`;'、`$'、`(', `)'、`\r' (キャリッジリターン) または `\n' (改行) を含むあらゆるコマンドを拒否します。次のようなコマンドを有効にするために ``||'' と ``&&'' を許可します: ``"|exec /usr/local/bin/filter || exit 75"''

プログラムの最初のパス名は、取り除かれるので、 ``/usr/bin/vacation'', ``/home/server/mydir/bin/vacation'' と ``vacation'' への転送は、実際にすべて ``/usr/libexec/sm.bin/vacation'' に転送します。

システム管理者は、sm.bin ディレクトリに存在することに慎重であるべきです。例えば、妥当な追加は、 vacation(1) などです。どんなに額をたたかれても、sm.bin ディレクトリに ( perl(1) のような) あらゆるシェルまたはシェルに似たプログラムを決して含んではいけません。これは、(``#!'' 構文を使用して) sm.bin ディレクトリのシェルまたは perl のスクリプトの使用を制限しないことに注意してください。それは、単に任意のプログラムの実行を許可しません。また、 procmail(1) のようなメールのフィルタリングプログラムを含むことは、たいへん悪い考えです。 procmail(1) によって、ユーザは、それらの procmailrc(5) の任意のプログラムを実行することができます。

コンパイル

コンパイルは、ほとんどのシステムでつまらないものであるはずです。デフォルト検索パス (デフォルトは、``/bin:/usr/bin'') を調整するために-DSMRSH_PATH=\" path\"を使用する必要があり、デフォルトのプログラムディレクトリ (デフォルトは、``/usr/libexec/sm.bin'') を変更するために-DSMRSH_CMDDIR=\" dir\"を使用する必要があります。

関連ファイル

/usr/adm/sm.bin -ほとんどの OS で制限されたプログラムのためのデフォルトのディレクトリ

/var/adm/sm.bin - HP UX と Solaris で制限されたプログラムのためのディレクトリ

/usr/libexec/sm.bin - FreeBSD (>= 3.3) と DragonFly BSD で制限されたプログラムのためのディレクトリ

 

関連項目

sendmail(8)
$Date: 2004/08/06 03:55:35 $