在自定义用户下运行的传输守护进程尝试从错误的路径加载配置

在自定义用户下运行的传输守护进程尝试从错误的路径加载配置

我有传输守护进程 2.94 作为服务在 Debian 10 机器上运行。

我将运行传输守护进程的用户从默认更改debian-transmissionwww-dataApache 用户,因为我希望 Apache 可以读取保存文件,而相反,传输可以读取 Apache 文件。

为此,我从以下配置文件更改为用户设置:

  • User=www-data/lib/systemd/system/transmission-daemon.service
  • USER=www-data/etc/init.d/transmission-daemon
  • setuid www-datasetgid 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 具有写入传输权限)

如果您提供有关您的用例的更多详细信息,也许我们可以创建适合您需求的配置,而无需更改传输用户。

相关内容