Diminui o privilégio em um script bash

0

É possível chamar de um script bash, executado como sudo, outro script com privilégios normais de usuário?

Outra opção seria executar um comando específico como um usuário normal, mas todo o script seria executado como superusuário.

P.S. O que eu quero fazer é personalizar o Launcher de dentro de um script de instalação que deve ser executado como sudo.

    
por Joe 13.11.2016 / 12:05

1 resposta

1

Existem várias maneiras. Se você apenas tiver que executar um comando sem nenhum parâmetro, você pode usar sudo -u <username>

#!/bin/bash
whoami
sudo -u otheruser whoami
whoami

Mas se você precisar executar vários comandos, um comando com parâmetros ou qualquer coisa com espaço em branco, esse método não funcionará.

#!/bin/bash
ls /some/dir
sudo -u otheruser ls /some/dir # not working as expected
ls /some/dir

Também não ajuda a citar o comando como sudo -u otheruser "ls /some/dir" .

Nesses casos, você pode simplesmente trocar o usuário por su

#!/bin/bash
whoami; ls /some/dir
su otheruser -c "whoami; ls /some/dir"
whoami; ls /some/dir
    
por Henning Kockerbeck 13.11.2016 / 12:31