разрешения папки transmission.service меняются при каждом запуске

разрешения папки transmission.service меняются при каждом запуске

Я работаю archlinuxи использую systemd transmission.serviceдля скачивания торрентов. У меня есть ext4раздел жесткого диска, автоматически смонтированный с fstabпомощью /var/lib/transmission. Я сохраняю там все завершенные загрузки и делюсь этим каталогом с сервером samba в локальной сети.

Проблема в том, что каждый раз при загрузке компьютера я вижу, что /var/lib/transmissionу него нет прав на чтение для всех. Это означает, что сервер samba не может прочитать полный путь к этому каталогу, и в конечном итоге я не могу получить доступ к файлам с помощью клиента samba. После загрузки я могу запуститься, sudo chmod a+rX /var/lib/transmissionи только тогда каталог становится доступным. Похоже, что transmissionон переписывает разрешения drwxr-x---при каждой загрузке.

Есть ли элегантный способ отредактировать некоторые файлы systemd и исправить это? Возможно, с помощью sudo systemctl edit transmission.service?

решение1

Решение заключается в добавлении к /etc/systemd/system/multi-user.target.wants/transmission.serviceследующемуилииспользуя sudo systemctl edit transmission.serviceи напишите:

[Service]
ExecStartPost=/bin/chmod a+rX /var/lib/transmission

systemctl editоткрывает текстовый редактор, позволяющий переопределить записи исходного файла службы, не изменяя исходный файл, предоставленный менеджером пакетов.

После добавления этих данных, перезагрузки проблема была устранена.

Примечание:Это может быть большепрагматичныйиспользовать, systemctl editпоскольку, как я полагаю, эта команда была создана для того, чтобы вы не редактировали исходные служебные файлы, предоставляемые менеджером пакетов.

Примечание:Возможно, вам придется изменить путь к chmodисполняемому файлу в соответствии с вашими путями распространения.

Редактировать:

Очень похоже на каталоги в /var/run, я выяснил, почему systemd при каждой загрузке проверяет, что этот каталог будет иметь эти разрешения, это первоначально объяснено здесь:https://serverfault.com/questions/824393/var-run-directory-creation-even-though-service-is-disabled/824394#824394

цитирую:

В systemd появилась новая функция, tmpfiles.d(5)которая может использоваться для создания файлов или каталогов при загрузке за пределами файла .service. OpenvpnОба ejabberdони ее используют, поэтому каталоги в /var/runпо-прежнему создаются, даже если они не запущены при загрузке.

Файлы конфигурации tmpfiles хранятся в/usr/lib/tmpfiles.d/

В любом случае, другой способ решения этой проблемы — изменение номера umask на /usr/lib/tmpfiles.d/transmission.confчто-то вроде этого:

d /var/lib/transmission 0755 transmission transmission

Связанный контент