不确定这里发生了什么。我已经安装了clamav
,clamav-freshclam
并clamav-daemon
在运行以下程序的机器上运行自动扫描(使用 cron)Ubuntu 桌面 10.04 LTS x64。
很遗憾,clamdscan 拒绝扫描任何内容。这是我每次尝试时收到的输出:
root@uhs:/raid/Share/Public/# clamdscan -v /raid/Share/Public/
/raid/Share/Public: lstat() failed: Permission denied. ERROR
----------- SCAN SUMMARY -----------
Infected files: 0
Total errors: 1
Time: 0.004 sec (0 m 0 s)
root@uhs:/raid/Share/Public/#
/raid/Share/Public
具有 777 权限,并且 clamav-daemon 用户clamav
已添加到和admin
组中root
。无论我尝试扫描哪些文件或目录,都会收到相同的错误。
我甚至运行dpkg-reconfigure clamav-base
并创建了守护进程用户,root
看看这是否有帮助(但无济于事)。当然,我service clamav-daemon restart
在所有这些更改之间都运行过。
我知道这个cat file_name | clamdscan -
选项,但我需要能够递归扫描整个目录,显然这是行不通的。
我做错了什么?我可以使用 clamdscan 吗?
感谢您的任何帮助。
更新
输出sudo -u clamav stat /raid/Share/Public/
:
root@uhs:/raid/Share/Public# sudo -u clamav stat /raid/Share/Public/
File: `/raid/Share/Public/'
Size: 6 Blocks: 0 IO Block: 4096 directory
Device: 900h/2304d Inode: 54526208 Links: 2
Access: (0777/drwxrwxrwx) Uid: ( 1000/awensley) Gid: ( 120/ admin)
Access: 2011-01-19 01:00:00.304365306 -0600
Modify: 2011-01-18 22:47:06.793592673 -0600
Change: 2011-01-19 00:42:52.023813550 -0600
root@uhs:/raid/Share/Public#
更新 2
我在 5 台不同的 Ubuntu 10.04 机器上遇到了同样的问题;其中 3 台是服务器。所以要么是我漏掉了什么,要么这里确实存在问题。
更新 3
我已将其提交为Launchpad 上的错误报告
答案1
在其他地方,我发现 AppArmor 或 SELinux 可能会导致 clamdscan 出现问题。
如果您运行sudo aa-complain clamd
后重新扫描成功,那么这可能是您的问题。(请务必使用 重新启用它sudo aa-enforce clamd
。)
要暂时禁用 SELinux(我还没有在 Ubuntu 上运行过),您可以尝试
echo 0 > /selinux/enforce
。如果您正在运行 SELinux,我们可以跟进。
更新:这是来自 launchpad 的一个非常有趣的帖子:https://bugs.launchpad.net/ubuntu/+source/clamav/+bug/450250。我会遵循 Jamie Strandboge 的评论,排除 AppArmor 配置文件作为罪魁祸首。
如果这些都不适用,那么首先想到的方法是将目录通过 tar 传送到标准输出,并将其输入到 clamdscan(这是您提到的单个文件的一个变体)。我认为这看起来应该像这样:
tar -cvf --to-stdout /somedirectory | clamdscan -
您应该能够从 Ubuntu Clamav 团队的 ppa 中获取最新的 clamav 打包版本:https://launchpad.net/~ubuntu-clamav/+archive/ppa
此外,从ClamAV 网站: “如果您要提交错误报告,请务必对照最新开发代码“(假设您还没有这样做)您必须从他们的 Git 存储库中手动提取该代码并进行编译。
有关 Ubuntu 软件包的错误报告,请参阅 http://askubuntu.com...如何报告错误 。
=======
需要注意的一点是,据我所知,它clamscan
不clamdscan
应该在您的主目录中毫无问题地运行。
Ubuntu 默认开启 apparmor,这可能导致一些复杂情况(同时也增加了非常理想的安全性)。
(clamdscan 要求 clamav 守护进程运行 —— clamscan 更像是一个临时的面向用户的软件包,不需要。由于 clamdscan/clamd 的附加功能,增加了复杂性开销。)
然而,与此相反,这篇文章中提到的 apparmor 的错误clamdscan
应该已经在当前软件包发布时得到纠正。
更新 尝试重现并解决
我认为我无法完全重现您的环境或控制用户错误(肯定是我的,也可能是您的),但是我已经在与您使用的同一版本的 clamav 下重现了我认为是相同的问题。
此外,我从 git 存储库下载了最新的代码,并进行了编译和安装,但问题仍然存在。
我没有 SELinux,但我有 AppArmor。我是否正确解释了这一点?我并不完全确定。不过,关闭 AppArmor 后,我仍然收到权限被拒绝的错误。
=======