Linux 权限和 dnscrypt-proxy (网络权限?)

Linux 权限和 dnscrypt-proxy (网络权限?)

我在“ask Ubuntu”上问过这个问题,但运气还不错,所以我想我也可以在这里试试 https://askubuntu.com/questions/409660/dnscrypt-proxy-works-but-with-incorrect-permissions

我已经成功安装并正在 ubuntu 13.10 x64 上配置 dnscrypt-proxy。但是,我遇到了一些权限问题。

我使用以下命令添加了一个用户:

sudo adduser --system --quiet --home /run/dnscrypt --shell /bin/false --group --disabled-password --disabled-login dnscrypt

并发出dnscrypt-proxy --daemonize --user=dnscrypt,但没有成功。所以我尝试了 just--daemonize和 finally just dnscrypt-proxy,结果导致 UDP 绑定权限错误。运行它错误消失。 dnscrypt-proxy --user=dnscrypt导致错误再次出现。我猜是因为某些权限导致失败,但目前还不知道从哪里开始或要更改什么。

我也想在网络启动时或登录后运行它。我想我可以做到,但如果你有什么建议,那只会节省我的时间。我不明白为什么我不能运行它,--user=dnscrypt但 root 可以正常工作。(我的意思是,我理解 root 为什么有效 ;D)

编辑:只是为了进一步澄清,我实际上正在运行基于 ubuntu 13.10 的 elementary OS luna 0.2(我相信)

答案1

解决方法是正确设置cap_net_bind_servicednscrypt-proxy二进制文件上,以便它可以bind53作为非rootdnscrypt)用户:

setcap cap_net_bind_service=+pe /path/to/dnscrypt-proxy

如果您在容器dnscrypt-proxy内运行lxc,则需要从执行上述命令host

2023 年运行rootless服务的另一个选择是设置一个sysctl值:

net.ipv4.ip_unprivileged_port_start=53

答案2

您需要创建一个应使用 start-stop-daemon 来删除权限的初始化脚本。

应用程序可能需要原始套接字访问,并且此类操作需要 root(或 CAP_SOCK)。普通用户无法执行此操作。

这个链接应该很有用:http://linuxmint.tumblr.com/post/29714225010/installing-dnscrypt

相关内容