![在自定义用户下运行的传输守护进程尝试从错误的路径加载配置](https://linux22.com/image/183850/%E5%9C%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E7%94%A8%E6%88%B7%E4%B8%8B%E8%BF%90%E8%A1%8C%E7%9A%84%E4%BC%A0%E8%BE%93%E5%AE%88%E6%8A%A4%E8%BF%9B%E7%A8%8B%E5%B0%9D%E8%AF%95%E4%BB%8E%E9%94%99%E8%AF%AF%E7%9A%84%E8%B7%AF%E5%BE%84%E5%8A%A0%E8%BD%BD%E9%85%8D%E7%BD%AE.png)
我有传输守护进程 2.94 作为服务在 Debian 10 机器上运行。
我将运行传输守护进程的用户从默认更改debian-transmission
为www-data
Apache 用户,因为我希望 Apache 可以读取保存文件,而相反,传输可以读取 Apache 文件。
为此,我从以下配置文件更改为用户设置:
User=www-data
在/lib/systemd/system/transmission-daemon.service
USER=www-data
在/etc/init.d/transmission-daemon
setuid www-data
并setgid www-data
在/etc/init/transmission-daemon.conf
传输 JSON 配置文件仍然驻留在/etc/transmission-daemon/settings.json
.我确保这两个目录/var/lib/transmission-daemon
和/etc/transmission-daemon
都属于新用户 www-data。
sudo systemctl start transmission-daemon
但是当我使用或重新启动服务时sudo service transmission-daemon start
,我在传输日志中收到以下内容:
Couldn't create "/var/www/.config": Permission denied (file-posix.c:189)
Couldn't read "/var/www/.config/transmission-daemon/settings.json": No such file or directory (utils.c:238)
Couldn't save temporary file "/var/www/.config/transmission-daemon/settings.json.tmp.jq3qtN": No such file or directory (variant.c:1285)
...以及其他类似的错误。
因此,传输守护进程似乎正在尝试使用www-data
用户主路径并在此处重新创建其配置目录。
这是为什么?如何使用之前的默认配置路径进行传输?我没有看到任何取决于用户主路径的传输配置。
附带问题:设置运行服务的用户的所有这三个配置文件之间有什么区别?
答案1
Transmission-Daemon 将其配置保存到运行它的用户的主文件夹中。在用户的默认情况下,transmissio-daemon
主文件夹是
/var/lib/transmission-daemon
正如它所定义的/etc/passwd
在 Debian 中,settings.json 文件
/var/lib/transmission-daemon/.config/transmission-daemon/
只是一个指向/etc/transmission-daemon/settings.json
作为主文件夹,它应该能够在其中写入。您收到的错误是因为传输无法将其设置/统计信息写入正在运行的用户的主文件夹中。
但是,我认为最好的方法是在 settings.json 中使用,umask
以允许其他人访问通过传输创建的文件,并将下载文件夹设置到您的网络服务器可以访问的位置(可能是 /var/ 中的文件夹) www 具有写入传输权限)
如果您提供有关您的用例的更多详细信息,也许我们可以创建适合您需求的配置,而无需更改传输用户。