No Ubuntu normal eu costumava criar um diretório para soquetes Unix da seguinte forma (digamos para project foo
):
- Crie um script systemd em:
/usr/lib/tmpfiles.d/foo.conf
- Coloque o seguinte código no script:
/run/foo 0770 <username> <groupname>
Então, na próxima reinicialização, o diretório /run/foo
será criado com as permissões necessárias. A razão pela qual faço isso é porque apenas o root pode gravar em /var/run
quais links -> /run
, e é comum que muitos aplicativos abandonem privilégios e alterem o usuário antes de criar o soquete e, portanto, não conseguem gravar em /var/run
.
Agora estou usando WSL2, com Ubuntu 20.04, e systemd
não existe. É possível passar por vários obstáculos para fazê-lo funcionar, mas eles apresentam erros.
Como criar uma pasta com as permissões desejadas que são limpas após uma reinicialização, antes que qualquer um dos aplicativos instalados (por exemplo, nginx/postgresql) tente criar seus soquetes (e, portanto, falha devido a soquetes obsoletos antes da reinicialização)?
Responder1
Em vez dos serviços init.d, você pode ter sorte escrevendo o caminho completo do script em um arquivo chamado /etc/rc.local
(talvez seja necessário criá-lo) e torná-lo executável
Igual a:
#!/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
O exit 0
é importante!
Em seguida, torne-o executável:
chmod +x /etc/rc.local
Tudo lá será iniciado comoraizna inicialização do sistema.
rc.local está realmente obsoleto, pois1983epode não funcionar mais. Quando o então novo e obsoleto sistema SysV-Init foi introduzido, ele serviu como uma solução alternativa para manter métodos ainda mais antigos de inicialização do sistema e não é mais recomendado usá-lo.