Não coloque o arquivo PID em /var/run/foo.pid
, coloque-o em /var/run/foo/foo.pid
e tenha /var/run/foo
de propriedade do usuário foo
e grupo foo
. Dessa forma, você pode excluir o arquivo pid antes de sair e não precisar aumentar seu nível de privilégio.
Observe, no entanto, que essa é uma prática de segurança ruim, pois permitir que o seu manejo de aplicativo sem privilégios com o arquivo abra uma brecha de segurança: imagine que seu aplicativo foi sequestrado (afinal, qual era o objetivo de descartar privilégios se não o aplicativo pode ser atacado?) - agora, o invasor atualiza o arquivo pid e coloca, digamos, o número do pid do sshd lá. Agora, quando os scripts de todo o sistema (em execução como root) tentarem parar seu aplicativo usando esse arquivo pid, eles irão encerrar o sshd. Este é apenas um exemplo, há mais maneiras de abusar do seu sistema. Em suma, o arquivo pid deve ser criado antes de eliminar privilégios e a limpeza dos arquivos pid deve ser executada pelos scripts do sistema. - Dmitry D. Khlebnikov
Uma idéia ainda melhor seria mudar para um sistema init como systemd ou Upstart que não requer arquivos PID para gerenciar serviços.