树莓派Transmission-daemon下载完成脚本sudo权限问题
解决transmission-daemon脚本执行sudo报错的问题
方案1:移除transmission-daemon的NoNewPrivileges限制
- 打开transmission的系统服务文件:
sudo nano /lib/systemd/system/transmission-daemon.service - 在
[Service]区块中找到NoNewPrivileges=yes,将其改为NoNewPrivileges=no,或者用#注释掉该行 - 重新加载服务配置并重启:
sudo systemctl daemon-reload sudo systemctl restart transmission-daemon
修改后transmission-daemon运行时不再携带no_new_privs标志,脚本内的sudo命令即可正常执行。
方案2:给目标命令设置免sudo权限(更安全)
若不想修改服务的安全限制,可直接让运行transmission-daemon的用户无需密码就能执行指定的VPN重启命令:
- 编辑sudoers配置:
sudo visudo - 在文件末尾添加一行(替换
pi为你的用户名,替换后面的命令为实际的VPN重启命令):pi ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart openvpn@client.service - 保存退出后,脚本里直接执行该命令即可,无需添加
sudo前缀。
方案3:让root能读取普通用户的transmission配置
如果坚持用root身份运行transmission-daemon:
- 先停止服务:
sudo systemctl stop transmission-daemon - 复制普通用户的配置到root目录:
sudo cp -r ~/.config/transmission-daemon /root/.config/ - 修改配置文件的所有者为root:
sudo chown -R root:root /root/.config/transmission-daemon - 编辑服务文件,把
[Service]里的User=pi改成User=root,然后执行:sudo systemctl daemon-reload && sudo systemctl restart transmission-daemon
内容的提问来源于stack exchange,提问作者gyandoo
相关产品推荐
相关产品推荐

