{
role staff_r;
user ynakam;
user himainu;
allow ~/** r,w;
}
では、staff_rは、/home/ynakam,/home/himainuへのアクセス
のみが許可されています。
httpd_tは、/var/www以下のファイル、ディレクトリをサブディレクト リを含めて全て読み込みを許可されています。
例:
{
domain httpd_t;
program /usr/sbin/httpd;
allow /var/www/cgi-bin/test.cgi r,s,dx;
}
{
domain cgi_t;
program /var/www/cgi-bin/test.cgi;
allow ............
}
この場合 httpd_tドメインは、test.cgiに対してdxパーミッションが
許可されています。test.cgiには、cgi_tというドメインを割り当てる
設定がされているため、cgi_tドメインが割り当てられます。
deny /home/ynakam/public_html;
*constraintsという名前のファイル名
deny /etc/shadow;
*httpd_t.spというファイル
{
domain httpd_t;
include constraints;
allow /etc/* r,s;
}
include constraints;では、constraintsという名前のファイルで行った
設定、つまり、deny /etc/shadowが設定されます。以下と同じ意味です。
{
domain httpd_t;
include constraints;
deny /etc/shadow;
allow /etc/* r,s;
}
これの意味ですが、httpd_tドメインは、/etcの下にあるファイルに対して読み
込みができます。
しかし、/etc/shadowにはアクセスはできません。
{
domain httpd_t;
allow /etc/* r,s;
deny /etc;
allow /etc/* r,s; は、deny /etc;を記述することでキャンセルされます。
domain foo_t; allow /var/** r; allow /var/** s;foo_t は /var/**に、 r,sが許可されます。
domain foo_t; allow /var/run/* r; allow /var/run/** w;foo_tは、/var/run直下のファイルにrパーミッションが許可されます。 一方、/var/run以下のファイル・ディレクトリに対し、サブディレクトリ含めて wパーミッションが許可されます。
domain foo_t; allow /var/** r; allow /var/run/** w;foo_tは、/var以下にrパーミッションが許可されますが、 /var/run以下についてだけは、wパーミッションが許可されます。
domain foo_t; allow /foo/* r,s; deny /foo/* ;allow /foo/* r,sが打ち消されます。
domain foo_t; deny /foo/* ; allow /foo/* r,s;deny /foo/* が打ち消されます。
domain foo_t; allow /foo/bar/** r,s; deny /foo/** ;allow /foo/bar/** r,sが打ち消されます。
domain foo_t; deny /foo/bar/**; allow /foo/** r,s;deny /foo/bar/** は打ち消されません。 not cancelled. denyをキャンセルするには、常にdenyされたディ レクトリを直接指定したallowを書く必要があります。(今回の 場合 allow /foo/bar/** r,s;のように書く必要があり ます)
Linuxシステムでは、ハードリンクを使うことで、ファイルの中身を複数
のファイル名で参照することができます。ハードリンクは、デフォルト
ではほとんど使われていないため、以下の内容を気にする場面はほとん
ど現れませんが、セキュリティ上知っておいたほうがいいでしょう。
SPDLでは、ハードリンクは以下のルールで処理されます。
ファイルの中身が複数のハードリンクで参照される場合、元々存在
したファイル名を記述する必要がある。それ以外のファイル名が指定さ
れた場合は無視される。
例えば、/etc/shadow と/var/chroot/etc/shadowがハードリンクされて
いたとします。/etc/shadowが元々存在していたとすると、/etc/shadow
(と/var/chroot/etc/shadow)の中身を見るためには、allow
/etc/shadow rと記述する必要があります。allow /var/chroot/etc/shadow r
と記述しても無視されます。
ハードリンクが複数存在する場合、どのファイル名を「元々存在するファ
イル名」とするかの基準が気になるところです。以下の基準で
「元々存在するファイル名」が判定されます。以下で出てくる例では、
/etc/shadow, /var/shadowがハードリンクされたファイルだと仮定しま
す。
allow /etc/shadow r; allow /var/shadow r;のように記述した場合、どちらかの設定は無視されるだけで、無害です。