script python tem 777 permissão e raiz do proprietário, mas ainda criar arquivo é negado

0

Eu escrevi um script python para lançar vários aplicativos java. Eu quero que seus PIDs sejam arquivados em /var/run/coma . Por isso, escrevi o script e dei a ele 777 permissões apenas para testar primeiro.

-rwxrwxrwx  1 root   root    3575 Feb 12 18:20 coma-startup.py

Quando eu inicio este script como outro usuário e ele executa o código para criar um arquivo na pasta mencionada, eu recebo o seguinte

PermissionError: [Errno 13] Permission denied: '/var/run/coma/coma-system.pid'

Eu não entendo isso? O script deve executar com privilégios de root na minha opinião. O que eu não entendo aqui?

    
por xetra11 12.02.2018 / 18:29

2 respostas

3

Definir o proprietário e o grupo de um script como root não significa que ele será executado como root . Quando o usuário joe executa um executável, o UID usado para definir as permissões do contexto de execução é o UID de joe , a menos que você tenha o bit UID definido ( suid ) ativado. Executáveis com suid ativados serão executados com o UID do proprietário do arquivo.

No entanto, acho que sua abordagem deve ser muito bem pensada, já que suid root executáveis são um risco de segurança. Um usuário mal-intencionado pode tentar escalar privilégios explorando-os. Se esse for o único arquivo que você precisa manipular, deverá trabalhar com as permissões dele ou exigir que o usuário use sudo . suid root executáveis deve ser o último recurso em casos muito específicos.

Observação: Como @psusi comentou sobre os comentários, suid não funcionará em scripts. Essa resposta descreve muito bem o problema com scripts suid e por que eles não funcionam a partir do kernel 3. x ligado. Assim, para a sua situação em particular, você tem apenas as opções de alterar permissões nos arquivos / pastas que você precisa para trabalhar, ou usando sudo (a primeira opção é mais recomendada).

    
por 13.02.2018 / 11:12
4

O problema de permissão não está relacionado ao script, mas a um arquivo com o qual ele agiu:

/var/run/coma/coma-system.pid

Experimente chmod 777 /var/run/coma/coma-system.pid

    
por 12.02.2018 / 18:33