在 saslsauthd 重新启动时,我不断获得/var/run/saslauthd
目录的以下权限:
drwx--x---
例如,这导致 Exim 无法与 saslauthd 对话。
如果我像这样更改权限:
chmod o+x /var/run/saslauthd
..Exim 可以再次与 saslauthd 通信。但是,正如我所写,/etc/init.d/saslauthd restart
足以将权限再次更改为 710。
我在脚本中找不到任何/etc/init.d/saslauthd
可以实现这一点的内容。这是怎么回事?
操作系统:Debian 7.0。
答案1
检查 /etc/group 中的以下条目:
sasl:x:45:cyrus,Debian-exim
目录 /var/run/saslauthd 应归 sasl 组所有。将 Exim 添加到 sasl 组即可。
关于 /var/run 目录的更多背景信息。
/var/run 用于存储守护进程的帮助文件。这些是在后台运行的进程。最突出的用途是存储守护进程的 pid。这使得相关的启动/停止脚本在尝试停止这些进程时更容易发送终止信号。您可能已经感觉到 /var/run 中的数据非常不稳定。因此,每次重新启动时都会清空此目录。
saslauthd 在启动时会创建此类运行时信息。并确保创建具有 saslauthd 所期望的访问权限的目录。
saslauthd init 脚本的摘录:
# If there is a statoverride for the run directory, then pull
# permission and ownership information from it and create the directory.
# Otherwise, we create the directory with default permissions and
# ownership (root:sasl, 710).
if dpkg-statoverride --list $RUN_DIR > /dev/null; then
createdir `dpkg-statoverride --list $RUN_DIR`
else
createdir root sasl 710 $RUN_DIR
fi
似乎甚至可以通过 dpkg-statoverride 允许 saslauth 目录使用不同的所有者和访问模式。但我对此并不熟悉,因此不建议这样做。将 exim 添加到 sasl 组是正确的做法。