総合手引 | セクション 2 | English | オプション |
#include <sys/param.h>
#include <sys/jail.h>
引数は牢屋を記述する構造体へのポインタです。
struct jail { u_int32_t version; char *path; char *hostname; u_int32_t ip_number; };
"version" には使用する API のバージョンを定義します。 今のところ 0 に設定します。
"path" ポインタには牢屋のルートになるディレクトリを設定します。
"hostname" ポインタには牢屋のホスト名を設定します。 これは牢屋の中から変更できます。
"ip_number" は牢屋に割り当てる IP 番号を設定します。
jail_attach() システムコールは、 jid によって識別される既存の jail を現在のプロセスにアタッチします。
The jail_attach function returns the value 0 if successful; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
牢屋の中では "スーパユーザ" の概念はとても弱まっています。 一般に全体が牢屋の中にあるわけではないものを牢屋の中から台無しにすることは できないと考えられます。 例えば "path" の下のディレクトリツリーは "rm -rf /*" も含めて、root が普通にできるように操作できますが、 デバイス型特殊ノードは共有されたリソース (カーネルの中のデバイスドライバ) を 参照するので、新しく作ることはできません。 プロセスにとっての実際の "セキュアレベル" は、グローバルな "セキュアレベル" と、jail 毎の "セキュアレベル" (存在する場合) の大きい方です。
IP 活動はすべて指定された IP 番号に制限されます。 指定された IP 番号はネットワークインタフェースのうちの 1 つの別名で あるべきです。
"/proc/<pid>/status" を調べることで閉じ込められたプロセスを識別することができます。 行末のフィールドが、閉じ込められていないプロセスではハイフン 1 つ、 閉じ込められたプロセスでは現在牢屋に設定されているホスト名になります。
[EINVAL] | |
引数のバージョン番号が正しくありません。 | |
さらに jail() は内部で chroot(2) を呼ぶので、全く同じ理由で失敗する可能性があります。 詳しくは chroot(2) のマニュアルページを参照して下さい。
JAIL (2) | April 8, 2003 |
総合手引 | セクション 2 | English | オプション |
このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.
“ | The most important thing in the programming language is the name. A language will not succeed without a good name. I have recently invented a very good name and now I am looking for a suitable language. | ” |
— Donald Knuth |