Preciso definir o SUID quando executo um script como 'sudo'?

3

Eu preciso executar um script como root . As instruções dadas no link dizem que eu deveria:

  • Defina o bit SETUID no script (por exemplo, chmod 4755 ).
  • Execute o script como sudo (por exemplo, sudo /path/to/thescript.sh )

A partir da documentação que estou lendo sobre o bit SETUID, meu entendimento é que, ao configurá-lo, quem executar o script receberá os privilégios do proprietário. Portanto, se o dono do script for root , qualquer um que execute o script com o bit SETUID ativará o script com privilégios de root.

Se for esse o caso, por que preciso fazer um sudo antes de executar o script se o bit SETUID estiver definido?

Se eu precisar usar sudo para executar o script, por que se preocupar em configurar o bit SETUID. Apenas como uma experiência eu executei meu script usando apenas sudo e ele foi capaz de fazer o que eu precisava fazer (o script recursivamente altera as permissões em um monte de arquivos).

    
por Avery Chan 18.11.2017 / 14:35

1 resposta

4

Ok, resposta curta, nunca definiu SETUID root em um script, nunca. Na verdade, parece não funcionar.

Resposta longa: Nunca, nunca, NUNCA, defina um script SETUID root , NUNCA!

Já que isso é tão braindead, eu pararia por aqui AGORA.

O cara diz Essa abordagem pode criar falhas graves de segurança! D'ohhhh! Então por que você responde isso?

Você só usa SETUID root programas binários confiáveis que cumprem tarefas específicas e, mesmo assim, é muito cauteloso!

Dito isto, o que você deseja alcançar?

Se você quiser que os usuários normais possam executar um script com root privilégios, certifique-se de que o script seja somente leitura para todos, mas root e adicione uma entrada ao seu arquivo /etc/sudoers , que permite aos usuários para executar esse script e apenas esse script.

Veja man sudoers para mais informações.

Se você tiver o nome de um grupo ao qual os usuários pertencem e o caminho completo para o script, posso escrever uma regra /etc/sudoers para você.

    
por 18.11.2017 / 15:00