デバイスのセキュリティ強化
TOMOYO LinuxのSYAORANファイルシステムにインスパイアされ、
新文法
allowdev -root <パス or ファイルシステム名>;
を追加。
概要
allowdev -root <パス or ファイルシステム名>;
は、<パス or ファイルシステム名>がデバイスを格納するディレクトリであることを指定する。(ファイルシステム名は後述するすごく特殊な場合に対応するため)
1)
allow ファイル/ディレクトリ名 パーミッション;
とした場合、
ファイル/ディレクトリ名のうち、デバイス(chr_file,blk_file)については、
デフォルトでは、アクセスを許可しない。
2)
ファイル/ディレクトリ名 が、allowdev -rootで指定されたパス以下にある場合のみ、chr_file, blk_fileのアクセスが許可される。
例:
globalセクションに
allowdev -root /dev;
と記述。
httpd_tセクションに
allow /var/www/html s,r;
→ /var/www/htmlにたとえデバイスがあっても、アクセスは許可されない
allow /dev/null r,w;
→ /dev/nullは、「/dev/」の子なので、/dev/nullデバイスファイルに、r,wアクセスできる。
ただし、wは許可されるが、生成消去は、allowpriv devcreateを記述しない限り許可されない。
特殊な場合に対応も可能
chrootしていて、/chroot/devにデバイスを格納している場合。
allowdev -root /chroot/dev;
とglobalもしくは、/chroot/devにアクセスするドメインに追加。
さらに xattrに対応してないファイルシステムにデバイスが格納されることがあったら。
例えば、fatにデバイスを格納する時。
allowdev -root fat;
とする。
設定の複雑さへの影響
普通,デバイスを格納するのは、/devのみ。
globalに、allowdev -root /devと書いておけば、
ユーザは何もする必要がない。
chrootしているときは、/dev以外にデバイスを格納することもありえる。
その場合は、ユーザはglobalに一行追加する必要がある。