为什么 ClamAV 无法扫描某些文件?

为什么 ClamAV 无法扫描某些文件?

每当我尝试对许多bin目录中的文件执行 ClamAV 扫描时,它都会失败并显示

无法打开文件或目录错误

消息。我知道可以让 ClamdScan 扫描bin目录,但我不知道该怎么做。有什么建议吗?

$ clamdscan /bin/true
/bin/true: Can't open file or directory ERROR

----------- SCAN SUMMARY -----------
Infected files: 0
Total errors: 1
Time: 0.000 sec (0 m 0 s)

AppArmor我找不到它工作所在的机器和不工作所在的机器上的配置文件有任何区别。我确实通过添加以下解决方法来扫描它:

/bin/** r,

到:

/etc/apparmor.d/local/usr.sbin.clamd

但是这行并不存在于另一台机器的本地权限文件中,所以我仍然感到困惑,而这种只是说可以访问其中和下面的所有内容clamd AppArmor的散弹枪解决方案主要是因为如果这是解决方案,那么我还必须添加和,这似乎是违反直觉的。 ClamAV/bin/sbin /usr/bin/usr/sbinAppArmor

答案1

是 AppArmor 阻止我访问 bin。我更改了:

/etc/apparmor.d/local/usr.sbin.clamd

通过增加:

/bin/** r,

对其进行扫描,并能够扫描 /bin 中的文件。如果我想添加其他目录,我只需向该文件添加几行即可包含它们。上面的 AppArmor 行表示 /bin 和所有子文件夹,以递归方式,具有只读访问权限,这正是 ClamAV 所需要的。有问题的文件是 AppArmor 的指令,用于指示 /usr/sbin/clamd 将获得哪些特殊权限,即 ClamAV 服务守护程序。所以这就是让它工作所需要做的一切。感谢 @Ramhound 的提示!

答案2

我在扫描导入的 NFS 文件系统(如 /data/nfs/dir1/file.jpg)时遇到了问题

clamdscan /data/nfs/dir1/file.jpg: Can't open file or directory ERROR

在 /etc/apparmor.d/local/usr.sbin.clamd 中添加“/data/nfs/* r”对我来说不起作用。运行apparmor_status显示 clamd 进程处于强制模式:

2 processes are in enforce mode.
   /usr/bin/freshclam (18572) 
   /usr/sbin/clamd (18677) 

因此,我安装了apparmor 实用程序包然后将 clamd 进程设置为抱怨:

aa-complain /usr/sbin/clamd

然后我就可以扫描文件了

clamdscan /data/nfs/dir1/file.jpg
/data/nfs/dir1/file.jpg: OK

相关内容