我是 darkness.su 上 XMPP 服务器的操作员。该服务器在 Centos 6 上运行。
我安装了 TOR 并将其配置为提供对服务器的隐藏服务访问。它一开始运行良好,但自从几个月前的更新以来,它开始出现这些错误:
799 May 25 14:19:37.060 [warn] Permissions on directory /var/lib/tor/hidden_service are too permissive.
800 May 25 14:19:37.060 [warn] Failed to parse/validate config: Failed to configure rendezvous options. See logs for details.
801 May 25 14:19:37.060 [err] Reading config failed--see warnings above.
我尝试检查日志,但找不到它们,而且设置日志似乎不起作用。我尝试删除 TOR 并擦除其所有文件夹,然后重新安装它。结果还是一样。
我正在通过 yum 从 TOR 项目的存储库进行安装。
在隐藏服务目录(由 TOR 拥有)上使用 chmod 700:
Jul 24 21:39:05.573 [warn] Directory /var/lib/tor/hidden_service/ cannot be read: Permission denied
Jul 24 21:39:05.573 [warn] Failed to parse/validate config: Failed to configure rendezvous options. See logs for details.
Jul 24 21:39:05.573 [err] Reading config failed--see warnings above
将目录所有者更改为 root 后:
Jul 24 22:11:36.236 [warn] /var/lib/tor/hidden_service/ is not owned by this user (_tor, 496) but by root (0). Perhaps you are running Tor as the wrong user?
Jul 24 22:11:36.236 [warn] Failed to parse/validate config: Failed to configure rendezvous options. See logs for details.
Jul 24 22:11:36.236 [err] Reading config failed--see warnings above.
答案1
您需要检查三件事:
文件所有权应该正确。
如果你使用来自 torproject.org 的 Tor,则应为
_tor
。如果你使用来自 EPEL 或 Fedora 的 Tor,则应为toranon
。chown -R _tor:_tor /var/lib/tor
或者
chown -R toranon:toranon /var/lib/tor
权限应该正确。
隐藏服务目录必须只有 Tor 用户可读。
find /var/lib/tor/hidden_service -type d | xargs chmod u+rwx,go= find /var/lib/tor/hidden_service -type f | xargs chmod u+rw,go=
必须正确设置 SELinux 上下文。在 RHEL/CentOS 的最新版本中,Tor 已应用 SELinux 策略。
修复损坏的 SELinux 标签:
restorecon -r -v /var/lib/tor
答案2
您的问题可能与 SELinux 有关。不,我不会说将其设置为permissive
(我讨厌这个默认答案)。它与执行 init.d 脚本的子目录和上下文有关(我认为)。您可能能够通过创建真正的 systemd 条目来解决这个问题,但不能 100% 确定。
我遇到了这个问题,我选择了简单的解决方案,因为我只有 1 个隐藏服务,所以这个解决方案很有效。不确定这是否会导致多个服务出现问题(我怀疑可能会)。或者,您可以花时间调试上下文问题。那将是最好的解决方案,但如果您只有一项服务,您可以:
改变:
/var/lib/tor/hidden_service/
到:
/var/lib/tor/
并完成。