Como faço para forçar o usuário a se tornar root

6

Eu escrevi um script bash para usar na minha caixa Ubuntu. Agora eu gostaria de evitar a execução deste script em meu próprio usuário e apenas capaz de executá-lo como root (sudo).

Existe a possibilidade de forçar isso? Posso de alguma forma deixar meu script pedir permissões de root se eu o executar com meu próprio nome de usuário?

    
por Peter Smit 22.09.2010 / 12:55

4 respostas

8

Eu tenho uma função padrão que uso em bash para esse propósito:

# Check if we're root and re-execute if we're not.
rootcheck () {
    if [ $(id -u) != "0" ]
    then
        sudo "$0" "$@"  # Modified as suggested below.
        exit $?
    fi
}

Há provavelmente formas mais elegantes (eu escrevi este AGES atrás!), mas isso funciona bem para mim.

Para usar essa função consistentemente em um script, você deve passar os argumentos recebidos pelo script originalmente.

Uso: rootcheck "${@}" ( rootcheck sozinho não passará nenhum argumento para a função rootcheck)

    
por 22.09.2010 / 13:02
4

Estou usando esta versão de linha única, fácil de copiar e colar em cima de scripts

[ 'whoami' = root ] || { sudo "$0" "$@"; exit $?; }
    
por 02.09.2014 / 22:31
2
sudo chown root yourcode
sudo chmod 500 yourcode

Voila!

    
por 22.09.2010 / 13:00
1

Você pode alterar as permissões, para que apenas o root possa executá-lo. Ou você poderia usar o comando whoami e no caso de não ser força de root sudo.

    
por 22.09.2010 / 13:00