簡単に言うと、 smrsh は、実行可能なプログラムを単一のディレクトリに存在するものと、 シェル組み込みコマンドの ``exec'', ``exit'', ``echo'' だけに限定します。 このディレクトリは、デフォルトでは、/usr/libexec/sm.bin です。 これにより、システム管理者は利用可能なコマンドを選択する 事ができます。 更に、 smrsh は、``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) などがあげられるでしょう。 いかなる要望があっても、シェルや、 perl(1) などのシェルに似たプログラムを sm.bin に入れてはいけません。 これは、単に任意のプログラムを実行する事を制限するだけで、 ``#!''書式を用いた、シェルスクリプトや perl スクリプトを sm.bin ディレクトリに入れる事を制限する訳ではありません。 procmail(1) のようなメールフィルタプログラムを入れるのも、よくありません。 procmail(1) は、 procmailrc(5) を使用することで、ユーザが任意のプログラムを実行可能となってしまうからです。
/var/adm/sm.bin - HP UX と Solaris での制限されたプログラム用のディレクトリ
/usr/libexec/sm.bin - FreeBSD (>= 3.3) と DragonFly BSD での制限された プログラム用のディレクトリ