我在 CentOS 7.1 上安装了 dovecot。过去,我经常禁用 SELinux,但现在我想拥有一个适合我的带有 SELinux 的服务器。无论如何,我将邮件存储在 /home/USER/Maildir 中,由于我不明白的原因,我收到以下错误:
Jul 25 22:32:03 server dovecot: imap(dean): Error: open(/home/dean/Maildir/dovecot.index.log) failed: Permission denied (euid=1000(dean) egid=1000(dean) missing +r perm: /home/dean/Maildir/dovecot.index.log stat(/home/dean/Maildir/dovecot.index.log) failed: Permission denied)
Jul 25 22:32:03 server dovecot: imap(dean): Error: file_dotlock_create(/home/dean/Maildir/dovecot-uidlist) failed: Permission denied (euid=1000(dean) egid=1000(dean) missing +w perm: /home/dean/Maildir, UNIX perms appear ok (ACL/MAC wrong?))
我使用以下方法检查了 SELinux:
grep -i AVC /var/log/audit/audit.log
并发现:
avc: denied { read write } for pid=13443 comm="imap" name="dovecot-uidlist" dev="dm-2" ino=1051352 scontext=system_u:system_r:dovecot_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=file
type=AVC msg=audit(1437859923.579:147270): avc: denied { read } for pid=13443 comm="imap" name="dovecot-uidlist" dev="dm-2" ino=1051352 scontext=system_u:system_r:dovecot_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=file
type=AVC msg=audit(1437860132.705:147592): avc: denied { read append } for pid=13630 comm="imap" name="dovecot.index.log" dev="dm-2" ino=1051357 scontext=system_u:system_r:dovecot_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=file
type=AVC msg=audit(1437860132.705:147593): avc: denied { read } for pid=13630 comm="imap" name="dovecot.index.log" dev="dm-2" ino=1051357 scontext=system_u:system_r:dovecot_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=file
type=AVC msg=audit(1437860132.706:147594): avc: denied { read } for pid=13630 comm="imap" name="dovecot.index.log" dev="dm-2" ino=1051357 scontext=system_u:system_r:dovecot_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=file
type=AVC msg=audit(1437860132.706:147595): avc: denied { getattr } for pid=13630 comm="imap" path="/home/dean/Maildir/dovecot.index.log" dev="dm-2" ino=1051357 scontext=system_u:system_r:dovecot_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=file
type=AVC msg=audit(1437860132.707:147596): avc: denied { write } for pid=13630 comm="imap" name="Maildir" dev="dm-2" ino=1048660 scontext=system_u:system_r:dovecot_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=dir
type=AVC msg=audit(1437860132.707:147597): avc: denied { write } for pid=13630 comm="imap" name="Maildir" dev="dm-2" ino=1048660 scontext=system_u:system_r:dovecot_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=dir
type=AVC msg=audit(1437860132.707:147598): avc: denied { read write } for pid=13630 comm="imap" name="dovecot-uidlist" dev="dm-2" ino=1051352 scontext=system_u:system_r:dovecot_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=file
type=AVC msg=audit(1437860132.707:147599): avc: denied { read } for pid=13630 comm="imap" name="dovecot-uidlist" dev="dm-2" ino=1051352 scontext=system_u:system_r:dovecot_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=file
我真的不知道该如何解决这个问题。我确实想使用 SELinux,但我还没有找到解决方案。有人能帮忙吗?
答案1
首先要指出的是,解决方案不是禁用 SELinux,而是使用它。
您可以使用一些工具来确定您需要做什么,好消息是,与早期版本相比,这些工具在 CentOS 7.1 中有了很大的改进。
第一次运行审计为什么关于您收集的 AVC 消息
audit2why <FileContainingMessages
如果一切进展顺利,它将为您提供被拒绝的消息列表以及解决这些问题所需采取的措施。
如果这不能给你一个直接的答案,它可能会指向你audit2allow。
就您的具体情况而言,我确信 audir2why 会为您提供合适的答案。