Impedir que certas linhas de um script sejam executadas como raiz

1

Suponha que eu esteja escrevendo um script de shell que requer privilégios de root para executar, por exemplo-

#!/bin/sh
ip -s -s neigh flush all
ufw enable

Como posso impedir que determinadas linhas de código sejam executadas como raiz, ou seja, eu adiciono uma linha no script acima que inicia o navegador TOR.

#!/bin/sh
ip -s -s neigh flush all
ufw enable
sh -c '"/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" --detach || ([ !  -x "/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" ] && "$(dirname "$*")"/Browser/start-tor-browser --detach)' dummy %k

Como a TOR sempre é executada no modo não-raiz, que alterações devo fazer no script acima para permitir a execução de um tor como usuário não root e o restante do script como usuário root?

    
por Backspace 18.06.2015 / 05:38

2 respostas

2

Usando sudo :

#!/bin/sh
ip -s -s neigh flush all
ufw enable
sudo -Hu username sh -c '"/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" --detach || ([ !  -x "/home/back/Downloads/tor-browser_en-US/Browser/start-tor-browser" ] && "$(dirname "$*")"/Browser/start-tor-browser --detach)' dummy %k
  • -H : define a variável de ambiente $HOME para o diretório inicial do usuário de destino
  • -u : Executa o comando como o usuário de destino especificado, em vez de como root
  • username : argumento para -u ; especifica o nome de usuário do usuário alvo
por 18.06.2015 / 05:55
1

Existem duas maneiras de fazer isso.

1) Execute o script como um usuário não-root e use sudo para aumentar os privilégios para o usuário root (prefixar os comandos a serem executados como root com sudo ).

ou

2) Execute o script como usuário root e use su para executar o comando tor como usuário não raiz. su permite que você estipule em qual usuário executar o comando como e a opção -c para especificar quais comandos devem ser executados. Eu também sugiro colocar o comando "tor" em um script em si, se estiver chamando via su .

    
por 18.06.2015 / 05:47