permissões da pasta transmit.service alteradas a cada inicialização

permissões da pasta transmit.service alteradas a cada inicialização

Estou correndo archlinuxe uso o systemd transmission.servicepara baixar torrents. Eu tenho uma ext4partição de disco rígido montada automaticamente com fstabon /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/transmissionque 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/transmissione só então o diretório estará acessível. Parece que transmissionreescreve 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.serviceseguinteouusando sudo systemctl edit transmission.servicee escreva:

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

systemctl editabre 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 editporque 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 chmodexecutá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 .servicearquivo. Openvpne ejabberdambos estão usando isso, é por isso que os diretórios /var/runainda 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.confpara algo assim:

d /var/lib/transmission 0755 transmission transmission

informação relacionada