LocalSocketGroup可以成功设置为非默认? 错误:无法更改套接字所有权

我想通常以root用户身份启动clamd,并分配Qmail-Scanner(仅)使用的本地套接字。 clamd作为用户/组clamav,qmail-scanner-queue作为qscand运行。

$ id -nG clamav clamav qscand $ id -nG qscand qscand 

clamd.conf如下:

 $ cat /usr/local/etc/clamd.conf LocalSocket /tmp/clamav/clamd.socket LocalSocketGroup qscand LocalSocketMode 660 User clamav 

当我试图开始clamd,几秒钟后,我得到:

 # ls -l /tmp/clamav total 0 # clamd ERROR: Failed to change socket ownership to group qscand # ls -l /tmp/clamav total 0 s--------- 1 clamav clamav 0 2012-12-11 15:57 clamd.socket= # sudo -u clamav clamd # ls -l /tmp/clamav total 0 srw-rw---- 1 clamav qscand 0 2012-12-11 15:57 clamd.socket= 

看到我必须玩的有趣的技巧?

如果我以root用户身份启动它,程序在删除权限后不知道其有效用户是所需组的成员。 但是,如果我作为用户clamav启动,它的工作原理!

我正在使用一个较旧的Linux(Slackware 11.0.0),所以在阅读文档和编译testing代码后,我开始怀疑这个发行版的库问题。 search揭示2010年遇到这种错误的人,但没有明确的解决scheme。

任何人都可以证实,克拉马夫应该按我期望的方式工作吗? 或者告诉我我的方式的错误…

我现在拥有完全符合我所需的configuration。 行为是devise的; 为什么,我不确定。 无论如何,启用“AllowSupplementaryGroups”选项解决了我的问题:

 $ cat /usr/local/etc/clamd.conf LocalSocket /tmp/clamav/clamd.socket LocalSocketGroup qscand LocalSocketMode 660 User clamav AllowSupplementaryGroups yes 

现在root可以启动服务器,没有任何特殊的技巧。