Los permisos de la carpeta Transmission.service cambiaron cada inicio.

Los permisos de la carpeta Transmission.service cambiaron cada inicio.

Estoy corriendo archlinuxy uso systemd transmission.servicepara descargar torrents. Tengo una ext4partición del disco duro montada automáticamente fstabcon /var/lib/transmission. Guardo allí todas las descargas completadas y comparto ese directorio con un servidor samba en la red local.

El problema es que cada vez que la computadora arranca, puedo ver /var/lib/transmissionque no tiene permisos de lectura para todos. Significa que el servidor Samba no puede leer la ruta completa a ese directorio y, en última instancia, no puedo acceder a los archivos con un cliente Samba. Después del arranque puedo ejecutar sudo chmod a+rX /var/lib/transmissiony solo entonces se puede acceder al directorio. Parece que transmissionreescribe los permisos drwxr-x---en cada arranque.

¿Existe una forma elegante de editar algunos archivos systemd y solucionarlos? ¿Quizás usando sudo systemctl edit transmission.service?

Respuesta1

La solución es agregar a /etc/systemd/system/multi-user.target.wants/transmission.servicelo siguienteousando sudo systemctl edit transmission.servicey escribiendo:

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

systemctl editabre un editor de texto para que pueda anular las entradas del archivo de servicio original y no cambiar el archivo original proporcionado por el administrador de paquetes.

Después de agregarlos, reinicie y solucione el problema.

Nota:Podría ser máspragmáticousar systemctl editporque supongo que este comando se creó para que no edite los archivos de servicio originales proporcionados por el administrador de paquetes.

Nota:Es posible que deba ajustar la ruta al chmodejecutable de acuerdo con sus rutas de distribución.

Editar:

Al igual que los directorios en /var/run, descubrí por qué systemd se asegura de que cada inicio de este directorio tenga estos permisos, se explica originalmente aquí:https://serverfault.com/questions/824393/var-run-directory-creation-even-aunque-service-is-disabled/824394#824394

citando:

Con systemd, hay una nueva funcionalidad llamada tmpfiles.d(5)que se puede usar para crear archivos o directorios al arrancar fuera del .servicearchivo. Openvpny ejabberdambos están usando esto, por eso los directorios /var/runaún se crean incluso si no se inician en el arranque.

Los archivos de configuración de tmpfiles se almacenan en/usr/lib/tmpfiles.d/

De todos modos, otra forma de resolver este problema es editar el número de umask en /usr/lib/tmpfiles.d/transmission.confalgo como esto:

d /var/lib/transmission 0755 transmission transmission

información relacionada