Como defino o grupo (gid) de um processo que estou prestes a lançar?

2

Estou portando um script Debian init.d para o CentOS. No script Debian, ele usa o daemon start-stop para iniciar o processo. O script usa o sinalizador --group do daemon start-stop para mudar para um id de grupo diferente ao iniciar o processo daemon.

Como eu defino o group-id do processo daemon no script init no CentOS?

    
por Lorin Hochstein 21.10.2010 / 18:59

4 respostas

2

Os scripts de inicialização do CentOS usam /etc/init.d/functions, que declara uma função "daemon" usada pela maioria dos scripts de init. Mas o daemon não aceita nenhum sinalizador de grupo.

Ele acaba ligando:

$nice runuser -s /bin/bash - $user -c "$corelimit >/dev/null 2>&1 ; $*"

Um rápido /sbin/runuser --help mostra que o runuser aceita um sinalizador para especificar o grupo, então tente:

runuser -g $group; daemon ...
    
por 22.10.2010 / 16:06
4

Se o CentOS não fornecer uma maneira melhor (o que me surpreenderia um pouco), você poderá voltar atrás na contraparte menos conhecida de su , sg :

sg foogroup -c 'exec foodaemon --bar'
    
por 21.10.2010 / 22:25
2

Existe setuidgid : "setuidgid executa outro programa sob o uid e gid de uma conta especificada."

Faz parte dos daemontools, no entanto, provavelmente não está disponível nos repositórios do CentOS devido às estranhas licenças dos DJBs. Então você pode ter que encontrar um RPM (por exemplo, aqui ) ou construir a partir da fonte.

    
por 21.10.2010 / 20:02
0

Pergunta muito antiga, mas acho que posso adicionar alguns centavos:

Você pode simplesmente pagar com o modo intrinsecamente defeituoso que o daemon chama / sbin / runuser e definir seu nome de usuário para algo como:

echo -n "Starting ${prog}"
daemon --user='nobody -Gnogroup' $exec &
echo

E vai funcionar.

Ele está particularmente sujo, mas permite que você dê suporte ao daemon sem ter que chamar o runuser diretamente (ou duas vezes).

    
por 06.02.2016 / 13:16