我想创建一个具有以下要求的 SELinux 策略模块
- 所有进程都有只读权限
/home/webserver
我创建了一个策略模块,下面是我创建的策略模块的截断代码
1 policy_module(readonly, 0.1)
2 require {
3 type bluetooth_conf_t;
4 type cmirrord_exec_t;
5 type foghorn_exec_t;
6 type jacorb_port_t;
...
7 type samba_log_t;
8 type spamd_port_t;
9 }
10 type dswebserver_t;
11 files_type(dswebserver_t);
12 auditallow bluetooth_conf_t dswebserver_t : { file dir } { read open getattr };
13 auditallow cmirrord_exec_t dswebserver_t : { file dir } { read open getattr };
14 auditallow foghorn_exec_t dswebserver_t : { file dir } { read open getattr };
....
15 auditallow samba_log_t dswebserver_t : { file dir } { read open getattr };
16 auditallow spamd_port_t dswebserver_t : { file dir } { read open getattr };
解释:
Line 3 to 8 - importing all the domain types present on my box (basically output of `seinfo -t`)
Line 10, 11 - defining a new type
Line 12 to 16 - defining auditallow AVC rule for each domain type to only allow read open getattr permission
安装此策略模块后,使用semodule -i readonly.pp
是否将 /home/webserver 重新标记为 dswebserver_t 类型
使用chcon -t dswebserver_t -R /home/webserver
当任何进程尝试读取 /home/webserver 下的任何文件/目录时,将显示授予的日志
但是,当某些进程尝试删除/添加文件/目录时,不会生成拒绝日志。
FYI: SELinux is using targeted policy (policy version is 24) and mode is permissive on Cent OS 6.4 machine