SELinux:无法使用 cifs_t 上下文 chcon 脚本

SELinux:无法使用 cifs_t 上下文 chcon 脚本

尝试更新 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 } ;

相关内容