smrsh -
sendmail用に制限されたシェル
smrsh -c command
smrsh は、
sendmail(8)
の設定ファイルで、
sh の代わりに ``prog''
メーラとして使用する事を目的としています。
smrsh
は、システムの全体的なセキュリティを改善するために、
sendmail の ``|program''
書式により起動する事ができるコマンドを制限します。
つまり、もし ``悪者'' が
alias ファイルや forward
ファイルを経由せずに
sendmail
からプログラムを実行する事ができたとしても、
smrsh
を使えば、彼(あるいは彼女)が実行できるプログラムを制限する事ができるのです。
簡単に言うと、
smrsh
は、実行可能なプログラムを単一のディレクトリに存在するものと、
シェル組み込みコマンドの
``exec'', ``exit'', ``echo''
だけに限定します。
このディレクトリは、デフォルトでは、/usr/libexec/sm.bin
です。
これにより、システム管理者は利用可能なコマンドを選択する
事ができます。
更に、
smrsh は、``end run''
攻撃を防ぐために、コマンド行に
``', `<', `>', `;', `$', `(', `)', `\r'
(復改文字), `\n' (改行文字)
の文字を含むコマンドは実行しません。
``||'' と ``&&''
は、許可されており、次のようなコマンドを使用可能です:
``"|exec /usr/local/bin/procmail -f- /etc/procmailrcs/user || exit
75"''
プログラム名の前にあるパス名は全て取り除かれるため、
``/usr/bin/vacation'', ``/home/server/mydir/bin/vacation'', ``vacation''
などは全て ``/usr/libexec/sm.bin/vacation''
と解釈されます。
システム管理者は、 sm.bin
ディレクトリに置くプログラムを選ぶ際には慎重な
判断をすべきです。適切な物としては、
vacation(1) や
procmail(1)
などがあげられるでしょう。いかなる要望があっても、シェルや、
perl(1)
などのシェルに似たプログラムを
sm.bin
に入れてはいけません。
これは、単に任意のプログラムを実行する事を制限するだけで、
``#!''書式を用いた、シェルスクリプトや
perl スクリプトを sm.bin
ディレクトリに入れる事を制限する訳ではありません。
コンパイルはほとんどのシステムでつまらないものです。
デフォルトのサーチパス
(デフォルトでは``/bin:/usr/bin'')
を変更するためには、-DPATH=\"
path\" を
使用する必要があり、また、
デフォルトのプログラムディレクトリ
(デフォルトでは
``/usr/libexec/sm.bin'')
を変更するためには、-DCMDBIN=\"
dir\" を
使用する必要があります。
/usr/libexec/sm.bin -
制限されたプログラム用のディレクトリ
sendmail(8)