我在 Centos 6.3 上有一个 ProFTPd 服务器,启用了 SELinux Enforcing。我的用户是平面文件中的虚拟用户。用户被 chroot 到通过 NFS 挂载的目录。我已经设置了以下策略:
/usr/sbin/semanage boolean -m --on allow_ftpd_use_nfs
/usr/sbin/semanage boolean -m --on allow_ftpd_anon_write
用户可以毫无问题地读取和写入文件。但是,他们无法创建目录。我在 audit.log 中看到以下内容:
type=AVC msg=audit(1364763704.972:25268): avc: denied { create } for pid=2971 comm="proftpd" name="test4" scontext=system_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:nfs_t:s0 tclass=dir
有没有办法让 SELinux 保持开启但允许创建目录?
答案1
这看起来像是策略错误。请尝试通过执行以下操作添加此策略。
- 创建一个名为“localftpd”的新目录
- 将以下内容放入此新目录内名为“localftpd.te”的文件中。
- 跑步
make -f /usr/share/selinux/devel/Makefile load
这是您需要的政策修正案。
policy_module(localftpd, 1.0.0)
require {
type ftpd_t;
type nfs_t;
}
tunable_policy(`allow_ftpd_use_nfs && allow_ftpd_anon_write', `
create_dirs_pattern(ftpd_t, nfs_t, nfs_t)
delete_dirs_pattern(ftpd_t, nfs_t, nfs_t)
rename_dirs_pattern(ftpd_t, nfs_t, nfs_t)
');