
Я работаю 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