kazmax - Linux で自宅サーバー

smrsh - システム管理コマンドの説明 - Linux コマンド集 一覧表

  1. 名称
  2. 書式
  3. 解説
  4. コンパイル
  5. 関連ファイル
  6. 関連項目

名称

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)