En Ubuntu normal solía crear un directorio para sockets Unix de la siguiente manera (por ejemplo, para el proyecto foo
):
- Cree un script systemd en:
/usr/lib/tmpfiles.d/foo.conf
- Coloque el siguiente código en el script:
/run/foo 0770 <username> <groupname>
Luego, en el próximo reinicio, /run/foo
se creará el directorio con los permisos necesarios. La razón por la que hago esto es porque solo el root puede escribir en /var/run
qué enlaces -> /run
y es común que muchas aplicaciones eliminen privilegios y cambien de usuario antes de crear el socket y, por lo tanto, no pueden escribir en /var/run
.
Ahora estoy usando WSL2, con Ubuntu 20.04, y systemd
no existe. Uno puede pasar por muchos obstáculos para que funcione, pero tienen errores.
¿Cómo se crea una carpeta con los permisos deseados que se borra después de reiniciar antes de que cualquiera de las aplicaciones instaladas (por ejemplo, nginx/postgresql) intente crear sus sockets (y por lo tanto falla debido a sockets obsoletos antes del reinicio)?
Respuesta1
En lugar de los servicios init.d, puede tener suerte si escribe la ruta completa del script en un archivo llamado /etc/rc.local
(puede que tenga que crearlo) y hacerlo ejecutable.
Al igual que:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
## Examples:
/usr/bin/foo # a program
/usr/local/bin/bar.sh # a shell script
/etc/init.d/foobar start # a service
exit 0
¡Es exit 0
importante!
Luego hazlo ejecutable:
chmod +x /etc/rc.local
Todo lo que hay allí se iniciará comoraízen el arranque del sistema.
rc.local en realidad está obsoleto ya que1983ypuede que ya no funcione. Cuando se introdujo el entonces nuevo y ahora obsoleto sistema SysV-Init, sirvió como solución alternativa para conservar métodos aún más antiguos de inicialización del sistema y ya no se recomienda usarlo.