所以我设置了selinux来记录某个目录中的所有文件访问操作。以下是从 sftp 执行 ls 时的一些示例日志输出:
type=AVC msg=audit(1338465611.221:356): avc: granted { getattr } for pid=5973 comm="sftp-server" path="/polog" dev=dm-0 ino=1966081 scontext=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:polog_t:s0 tclass=dir
在这种情况下,sftp 以 user1 身份运行,有没有办法让 selinux 也记录这个用户名,或者我应该采取不同的方法?
这是我的策略文件:
---polog.te---
policy_module(polog, 1.0.14)
require {
type fs_t;
type unconfined_t;
type sshd_t;
type setfiles_t;
class filesystem associate;
class dir relabelto;
}
type polog_t;
#============= polog_t ==============
allow polog_t fs_t:filesystem associate;
allow unconfined_t polog_t:dir relabelto;
allow setfiles_t polog_t:dir relabelto;
#====================================
auditallow unconfined_t polog_t : file *;
auditallow unconfined_t polog_t : dir *;
allow unconfined_t polog_t : file *;
allow unconfined_t polog_t : dir *;
---polog.fc---
/polog(/.*)? gen_context(system_u:object_r:polog_t)
答案1
SELinux 不适用于经典的 DAC 用户名,因此您将无法以这种方式显示此类信息。您应该查看审计子系统和 auditd
守护进程。您必须编写一组特定的规则(与 SELinux 无关)来记录对这些文件的访问。
一些帮助您入门的链接:
- 关于审计子系统的幻灯片;
- 定义审核规则(RHEL 6 文档);
- audit.rules(7)(即
man 7 audit.rules
)。