名称
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)