Generar un directorio para sockets Unix SIN systemd

Generar un directorio para sockets Unix SIN systemd

En Ubuntu normal solía crear un directorio para sockets Unix de la siguiente manera (por ejemplo, para el proyecto foo):

  1. Cree un script systemd en:/usr/lib/tmpfiles.d/foo.conf
  2. Coloque el siguiente código en el script:
    /run/foo 0770 <username> <groupname>
    

Luego, en el próximo reinicio, /run/foose creará el directorio con los permisos necesarios. La razón por la que hago esto es porque solo el root puede escribir en /var/runqué enlaces -> /runy 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 systemdno 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 0importante!

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.

información relacionada