如何修复 amvavis 报告 clamav “权限被拒绝”的问题

如何修复 amvavis 报告 clamav “权限被拒绝”的问题

我最近注意到一个令人沮丧的小问题...在处理电子邮件时,Ubuntu 服务器(应用了所有更新)在尝试对附件进行病毒扫描时报告“权限被拒绝”。

Apr  2 14:05:20 svr amavis[6376]: (06376-01) (!)run_av (ClamAV-clamd) FAILED - unexpected , output="/var/lib/amavis/tmp/amavis-20150402T140519-06376-PZcyHfOt/parts: lstat() failed: Permission denied. ERROR\n"
Apr  2 14:05:20 svr amavis[6376]: (06376-01) (!)ClamAV-clamd av-scanner FAILED: CODE(0x30cf250) unexpected , output="/var/lib/amavis/tmp/amavis-20150402T140519-06376-PZcyHfOt/parts: lstat() failed: Permission denied. ERROR\n" at (eval 136) line 899.
Apr  2 14:05:20 svr amavis[6376]: (06376-01) (!)WARN: all primary virus scanners failed, considering backups

当我查看相关目录时,我看到了以下内容:

$ ls -ld /var/lib/amavis/tmp
drwxrwx--- 4 amavis amavis 4096 Apr  2 14:16 /var/lib/amavis/tmp
$ ls -ld /var/lib/amavis/tmp/amavis-20150402T140519-06376-PZcyHfOt/
drwxr-x--- 3 amavis amavis 4096 Apr  2 14:05 /var/lib/amavis/tmp/amavis-20150402T140519-06376-PZcyHfOt/
$ ls -ld /var/lib/amavis/tmp/amavis-20150402T140519-06376-PZcyHfOt/parts                                                                                                                                                                           
drwxr-x--- 2 amavis amavis 4096 Apr  2 14:16 /var/lib/amavis/tmp/amavis-20150402T140519-06376-PZcyHfOt/parts

我确保 clamd 用户是 amavisd 组的成员 - 但这并没有解决任何问题。有人能具体告诉我哪个组件需要什么权限吗 - 以及...理想情况下...该怎么做才能解决这个问题?

澄清:我并不是在寻找权限基础知识的解释。我正在寻找适合此特定问题的解决方案 - 至少乍一看,这个问题似乎是 amavis 套件的某个组件(可能是 clamd)使用了错误的 umask 值。当然,此故障可能是由于许多错误或配置故障而引起的。我正在寻找最适合这种情况的解决方案...其中“原始”amavis/clamav 安装无法访问它在扫描入站电子邮件时创建的临时文件夹的内容。

我知道类似(非 Ubuntu)的问题。Redhat/Centos 的答案无法解决我在 Ubuntu 上遇到的问题。

在“Ubuntu 14.04.2 LTS”上遇到了这个问题 - 没有待处理的更新。

答案1

一个可行的解决方案是改变

允许补充组 false -> true

在 /etc/clamav/clamd.conf 中

重新启动 clamav-daemon

答案2

clamd用户是该组的成员时amavis,该进程以(非)用户clamd身份运行。clamavclamd

加入clamavamavis小组后问题得到解决。

答案3

由于AllowSupplementaryGroups不再存在,我最后将每个用户添加到另一个组,如下所示:

usermod -a -G clamav amavis
usermod -a -G amavis clamav

(并重新启动一切以确保万无一失)

/etc/init.d/clamav-daemon restart
/etc/init.d/amavis restart
/etc/init.d/postfix restart

有了这个,就不需要更改文件夹权限了/var/lib/amavis/tmp(而且我不确定这些权限在下一次 apt-get 升级时是否会保留原样......)

答案4

手册lstat上说:

No permissions are required on the file itself, but—in the case of stat() and
lstat() — execute (search) permission is required on all of the directories
in path that lead to the file.

因此检查路径下的所有库是否都有执行权限。

相关内容