尝试更新 cifs 安装的安全上下文类型时,我不断收到一条'Operation not supported'
消息。我使用 logrotate 将日志从我的服务器推送到网络位置,但在 cifs 安装上执行的脚本的上下文是'system_u:object_r:cifs_t:s0'
以下是我的 cifs 文件夹的挂载标志:
(rw,relatime,vers=1.0,cache=strict,username=cifsuser,domain=.,uid=1000,forceuid,gid=1000,forcegid,addr=10.1.3.97,file_mode=0755,dir_mode=0755,nounix,rsize=61440,wsize=16580,actimeo=1)
我的 logrotate 是从 cron.hourly 运行的,每次它尝试将文件移动到此挂载点时,我都会收到 selinux 策略错误。我尝试运行以下命令来解决:
sealert -l b9263b3e-d2f9-4b33-ba48-af9b3b7695fd
grep logrotate /var/log/audit/audit.log | audit2allow -M mypol
semodule -i mypol.pp
但我仍然遇到问题,它不再在 /var/log/messages 中显示 sealert 错误。检查我的 /var/log/audit/audit.log 日志时,我看到以下内容:
type=SYSCALL msg=audit(1474114505.460:25005): arch=c000003e syscall=21 success=no exit=-13 a0=10f33a0 a1=4 a2=7ffd34025160 a3=7ffd34025080 items=0 ppid=16240 pid=16241 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=2773 comm="sh" exe="/usr/bin/bash" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null)
type=AVC msg=audit(1474114506.695:25006): avc: denied { read } for pid=16386 comm="sh" name="archive_logs.sh" dev="cifs" ino=60235645016091360 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:cifs_t:s0 tclass=file
任何帮助将不胜感激。
谢谢
答案1
selinux-devel
鉴于这是一个错误,我扩展了该策略。如果尚未安装RPM,请安装该 RPM ,然后将此内容粘贴到名为 的文件中mylogrotate.te
。
policy_module(mylogrotate, 1.0.0)
require {
type logrotate_t;
type cifs_t;
}
gen_tunable(logrotate_use_cifs, false)
tunable_policy(`logrotate_use_cifs',`
fs_read_cifs_files(logrotate_t)
')
之后,执行以下操作:
$ make -f /usr/share/selinux/devel/Makefile load
$ semanage boolean --modify --off logrotate_use_cifs
这应该允许策略读取 cifs 文件。
答案2
使用解析 AVC 拒绝消息audit2allow
,我得到:
$ echo 'type=SYSCALL msg=audit(1474114505.460:25005): arch=c000003e syscall=21 success=no exit=-13 a0=10f33a0 a1=4 a2=7ffd34025160 a3=7ffd34025080 items=0 ppid=16240 pid=16241 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=2773 comm="sh" exe="/usr/bin/bash" subj=system_u:system_r:logrotate_t:s0-s0:c0.c1023 key=(null) \
type=AVC msg=audit(1474114506.695:25006): avc: denied { read } for pid=16386 comm="sh" name="archive_logs.sh" dev="cifs" ino=60235645016091360 scontext=system_u:system_r:logrotate_t:s0-s0:c0.c1023 tcontext=system_u:object_r:cifs_t:s0 tclass=file' \
| audit2allow
#============= logrotate_t ==============
allow logrotate_t cifs_t:file read;
我的猜测是 CIFS 挂载没有正确标记,因为策略允许logrotate
从标记文件中读取cifs_t
,如下所示sesearch
:
$ sesearch -s logrotate_t -t cifs_t -p read --allow -c dir
Found 1 semantic av rules:
allow logrotate_t cifs_t : dir { ioctl read getattr lock search open } ;