Como duplicar um daemon?

3

Eu quero executar duas instâncias de proxies do cliente dnscrypt, mas estou tendo problemas para fazê-las iniciar automaticamente na inicialização. Aqui está o que eu tentei:

Em rc.local , esta é a primeira:

/usr/local/sbin/dnscrypt-proxy -a 127.0.0.1:40 -u _dnscrypt-proxy -d -l /dev/null -R dnscrypt.eu-dk

e o segundo:

/usr/local/sbin/dnscrypt-proxy2 -a 127.0.0.1:41 -u _dnscrypt-proxy2 -d -l /dev/null -R dnscrypt.org-fr

Eu cd a /usr/local/sbin e fiz cp dnscrypt-proxy dnscrypt-proxy2 e, quando reiniciei, recebi [ERROR] Unknown User : [dnscrypt-proxy2].

Então eu pesquisei e vi esta pergunta então editei manualmente /etc/passwd e adicionou um novo usuário copiando com cuidado o usuário _dnscrypt-proxy padrão e alterou o id, pois agora ele tem essas duas entradas:

_dnscrypt-proxy:*688:688:dnscrypt-proxy user:/var/empty:/sbin/nologin 
_dnscrypt-proxy2:*689:689:dnscrypt-proxy2 user:/var/empty:/sbin/nologin'

E quando eu reinicio, o erro do usuário desconhecido ainda persiste. Um rápido ls na pasta mostra que eu dupliquei a pasta. Ps aux me mostra que o daemon não foi iniciado. Uma pesquisa no Google não me ajudou, então eu procurei os especialistas em Linux aqui. Meu sistema operacional é o OpenBSD 5.7.

    
por Freedo 16.07.2015 / 09:15

3 respostas

4

Primeiro , eis a resposta específica à sua pergunta sobre o motivo do erro desconhecido do usuário: O erro estava em como você criou o usuário. Existem mais arquivos que precisam ser corrigidos do que apenas /etc/passwd .

A maneira mais fácil de criar corretamente o usuário seria simplesmente remover essa linha de /etc/passwd e, em seguida, executar adduser -noconfig -shell -/sbin/nologin . (E quando você edita o / etc / passwd, use vipw ao invés de apenas vi /etc/passwd - veja a man page para a explicação!)

Segundo , você realmente não precisa criar um segundo usuário. Você pode executar o mesmo programa duas vezes sem ter uma cópia do programa ou um segundo usuário para executá-lo. O que você precisa fazer para executar um segundo daemon com o mesmo usuário e binário, mas com configurações diferentes, é simples:

  • Copie o script de inicialização do daemon para um com outro nome. (Você já fez isso.)
  • Edite o novo script de inicialização. Mantenha o mesmo caminho para o binário e o mesmo nome de usuário. Altere somente as opções que você deseja alterar!

Voilà - você está pronto para correr!

    
por 16.07.2015 / 09:36
2

Alguns pontos:

  1. Você não deve precisar duplicar o binário dnscrypt-proxy - basta chamá-lo várias vezes com opções diferentes
  2. Quando você criou o usuário _dnscrypt-proxy2 , também criou o grupo principal deles? Vejo que o usuário tem um GID diferente do que _dnscrypt-proxy ( 689 em vez de 688 ), mas você não mencionou a cópia do grupo. Caso contrário, crie o grupo ausente. Você pode fazer isso editando /etc/group e adicionando a entrada ausente (suponho que copie a entrada para o grupo _dnscrypt-proxy ).

O ponto 2 deve corrigir o seu problema.

    
por 16.07.2015 / 09:29
0

da página de manual rcctl(8) :

The recommended way to run a second copy of a given daemon for a different purpose is to create a symbolic link to its rc.d(8) control script:

# ln -s /etc/rc.d/snmpd /etc/rc.d/snmpd6
# rcctl set snmpd6 status on
# rcctl set snmpd6 flags -D addr=2001:db8::1234
# rcctl start snmpd6
    
por 23.07.2016 / 20:04