Сгенерировать каталог для unix-сокетов БЕЗ systemd

Сгенерировать каталог для unix-сокетов БЕЗ systemd

В обычной Ubuntu я обычно создавал каталог для сокетов Unix следующим образом (например, для проекта foo):

  1. Создайте скрипт systemd в:/usr/lib/tmpfiles.d/foo.conf
  2. Поместите в скрипт следующий код:
    /run/foo 0770 <username> <groupname>
    

Затем при следующей перезагрузке каталог /run/fooбудет создан с требуемыми разрешениями. Причина, по которой я это делаю, заключается в том, что только root может писать в /var/runwhich links to -> /run, и для многих приложений характерно сбрасывать привилегии и менять пользователя перед созданием сокета, и поэтому они не могут писать в /var/run.

Теперь я использую WSL2 с Ubuntu 20.04, и systemdне существует. Можно прыгнуть через много обручей, чтобы заставить его работать, но они глючат.

Как создать папку с нужными разрешениями, которая очищается после перезагрузки, прежде чем какое-либо из установленных приложений (например, nginx/postgresql) попытается создать свои сокеты (и, следовательно, потерпит неудачу из-за устаревших сокетов до перезагрузки)?

решение1

Вместо служб init.d вам может повезти, если вы запишете полный путь к своему скрипту в файл с именем /etc/rc.local(вам, возможно, придется создать его) и сделаете его исполняемым

Вот так:

#!/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

Это exit 0важно!

Затем сделайте его исполняемым:

chmod +x /etc/rc.local

Все там будет запущено каккореньпри загрузке системы.

rc.local на самом деле устарел, так как1983иможет больше не работать. Когда была представлена ​​новая, а теперь устаревшая система SysV-Init, она служила обходным путем для сохранения еще более старых методов инициализации системы, и ее больше не рекомендуется использовать.

Связанный контент