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

aSt*_*eve 12 permissions clamav antivirus amavisd-new

我最近注意到一个令人沮丧的小问题...在处理电子邮件时,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
Run Code Online (Sandbox Code Playgroud)

当我查看相关目录时,我看到:

$ 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
Run Code Online (Sandbox Code Playgroud)

我确保 clamd 用户是 amavisd 组的成员 - 但这并没有解决任何问题。任何人都可以告诉我,具体来说,哪个组件需要什么权限 - 并且......理想情况下......如何解决这个问题?

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

我知道这个类似的(非 Ubuntu)问题。Redhat/Centos 答案不能解决我在 Ubuntu 中遇到的问题。

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

小智 13

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

AllowSupplementaryGroups 假 -> 真

在 /etc/clamav/clamd.conf

重启 clamav 守护进程

  • 这就是为我解决的问题(我在 Debian Jessie 上)。将 clamav 添加到 amavis 组并没有解决。 (2认同)
  • 在最新版本的 clamav(0.99.2+,2016 年 6 月 2 日在上游)中已删除了 `AllowSupplementaryGroups` 选项。 (2认同)

aSt*_*eve 6

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

添加clamavamavis组解决了这个问题。