Создание каталога для сокетов Unix БЕЗ systemd

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

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

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

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

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

0
задан 23 August 2020 в 00:29

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

выход 0 важен!

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

chmod +x /etc/rc.local

Все там будет запускаться как root при загрузке системы.

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

1
ответ дан 29 August 2020 в 18:15

Другие вопросы по тегам:

Похожие вопросы: