Se um programa requer permissão de gravação, como devo defini-lo com chown? Especificamente, quais seriam as permissões do programa foo para resolver esse erro?
failed to create pid file '/var/run/bar.pid': Permission denied
permissions
el_pup_le
fonte
fonte
/var/run
Abordagem geral: determine o usuário e o grupo do processo que está tentando acessar o arquivo. Isso geralmente é encontrado na configuração do software (como servidores da web / servidores de e-mail / ...), mas se o software já estiver em execução, use isto:
Procure o processo para o qual você deseja configurar os direitos de acesso. A primeira coluna informa sob qual nome de usuário está sendo executado.
Isso informará a quais grupos o usuário pertence.
Altere o proprietário ou o grupo do arquivo para corresponder ao serviço.
Nota 1: Como a pergunta indica que o arquivo está em / var / run /, estou assumindo que apenas um processo precisa de acesso, se isso não for verdade, você não deve alterar o proprietário ou o grupo, mas pode considerar adicionar o processo 'usuário ao grupo ou criando um novo grupo para este arquivo / pasta.
Nota 2: Coisas engraçadas podem acontecer com o apparmor, que é um sistema de segurança: pode impedir que os processos sejam gravados em arquivos e pastas nas quais eles têm (no nível do sistema de arquivos) todos os direitos necessários. Com
aa-status
você, você pode ver se uma regra específica para o seu serviço está ativa.fonte
O que fiz foi simplesmente adicionar a criação de uma pasta imediatamente antes da execução do start-stop-deamon. Isso funciona porque o script geralmente é executado como raiz durante a inicialização. Ele apenas cria a pasta em / var / run e altera o proprietário imediatamente, para que um PID possa ser gravado.
No exemplo abaixo, verifico a existência da subpasta de / var / run, onde coloquei os PIDs como o usuário atual, neste caso, o usuário 'pi' (já que estou com uma framboesa).
Verifique também este link, pois foi muito educativo para mim: o script Python para ser executado como serviço , no entanto, não abordou o problema discutido aqui.
Exemplo de parte do meu script de shell:
fonte