
Estou correndo archlinux
e uso o systemd transmission.service
para baixar torrents. Eu tenho uma ext4
partição de disco rígido montada automaticamente com fstab
on /var/lib/transmission
. Mantenho lá todos os downloads concluídos e compartilho esse diretório com um servidor samba na rede local.
O problema é que toda vez que o computador inicializa, vejo /var/lib/transmission
que não há permissões de leitura para todos. Isso significa que o servidor samba não consegue ler o caminho completo para esse diretório e, em última análise, não consigo acessar os arquivos com um cliente samba. Após a inicialização posso executar sudo chmod a+rX /var/lib/transmission
e só então o diretório estará acessível. Parece que transmission
reescreve as permissões drwxr-x---
a cada inicialização.
Existe uma maneira elegante de editar alguns arquivos do systemd e corrigi-los? Talvez usando sudo systemctl edit transmission.service
?
Responder1
A solução é adicionar ao /etc/systemd/system/multi-user.target.wants/transmission.service
seguinteouusando sudo systemctl edit transmission.service
e escreva:
[Service]
ExecStartPost=/bin/chmod a+rX /var/lib/transmission
systemctl edit
abre um editor de texto para você substituir as entradas do arquivo de serviço original e não alterar o arquivo original fornecido pelo gerenciador de pacotes.
Depois de adicioná-los, reinicialização e problema corrigidos.
Observação:Pode ser maispragmáticousar
systemctl edit
porque acho que este comando foi criado para que você não edite os arquivos de serviço originais fornecidos pelo gerenciador de pacotes.Observação:Talvez seja necessário ajustar o caminho do
chmod
executável de acordo com os caminhos de distribuição.
Editar:
Muito parecido com os diretórios em /var/run
, descobri por que o systemd está garantindo a cada inicialização que esse diretório terá essas permissões, isso é explicado originalmente aqui:https://serverfault.com/questions/824393/var-run-directory-creation-even-though-service-is-disabled/824394#824394
citando:
Com o systemd, há uma nova funcionalidade chamada
tmpfiles.d(5)
que pode ser usada para criar arquivos ou diretórios na inicialização fora do.service
arquivo.Openvpn
eejabberd
ambos estão usando isso, é por isso que os diretórios/var/run
ainda são criados mesmo que não sejam iniciados na inicialização.Os arquivos de configuração tmpfiles são armazenados em
/usr/lib/tmpfiles.d/
De qualquer forma, outra maneira de resolver esse problema é editar o número umask /usr/lib/tmpfiles.d/transmission.conf
para algo assim:
d /var/lib/transmission 0755 transmission transmission