Está usando su para descartar raiz em scripts de shell um risco de segurança?

1

Ao pesquisar como soltar permissões de root em scripts de shell, geralmente vejo respostas usando su . No entanto, quando terminar de usar su , basta digitar logout e voltar ao shell do usuário original. Eu tenho um script bash em execução como root e faço isso no final:

exec su -c "external_com" - muser

Isso resulta na seguinte árvore de processos:

  PID USER      PRI  NI  VIRT   RES   SHR S CPU% MEM%   TIME+  Command
    1 root       20   0 37352  2500  2192 S  0.0  0.0  0:00.02 su -c external_com
    5 muser      20   0 85548  6292  5156 S  0.0  0.0  0:00.47 └─ external_com
   13 muser      20   0 85548  6292  5156 S  0.0  0.0  0:00.35    ├─ external_com
   12 muser      20   0 85548  6292  5156 S  0.0  0.0  0:00.02    ├─ external_com

Não consigo controlar external_com e não chama setuid internamente. Apresenta uma interface web que é pública para o mundo. Se alguém de alguma forma conseguir um console através de uma falha de segurança na interface web, eles poderiam apenas chamar logout e ser um usuário root?

EDIT: Se eu estou lendo corretamente, uma abordagem melhor é apenas executar o script como muser e permitir muser sudo os poucos comandos necessários. Eu ainda gostaria de uma resposta para esta pergunta, como é uma informação valiosa para saber:)

    
por Hamy 07.03.2015 / 02:39

1 resposta

0

Não, isso não é uma coisa para se preocupar.

Se alguém obteve um shell como resultado de uma falha de segurança em external_com, tudo o que pôde fazer foi executar comandos como muser. Se eles saíram desse shell (com logout), então esse é o fim desse processo de shell; eles não acabam de volta como root. Quando o external_com termina, o processo / script que o iniciou irá sair (porque você fez um 'exec')

    
por 07.03.2015 / 04:45