escrevendo um script bash que usa sudo [duplicate]

0

Tenho certeza de que essa é uma pergunta muito básica, mas tenho medo de não conseguir fazer com que funcione ou entender o que está acontecendo.

Eu tenho um projeto de nó que geralmente corro com

sudo npm start

e eu estou tentando criar um script bash que irá lançar isso para mim.

Eu tentei algumas variações:

su myname -c "npm run start"
sudo su myname -c "npm run start"
su myname -c "sudo npm start"

mas todos parecem executar o comando sem direitos de superusuário. Da pesquisa que fiz parece que

sudo su myname -c "npm run start"

é o correto, mas não funciona (funciona, mas sem permissões). Alguém pode me indicar a direção certa?

    
por Roaders 28.12.2017 / 18:52

1 resposta

1

Não use sudo em scripts, execute o script inteiro com permissões de root e use sudo -u YOURUSERNAME para executar comandos sem permissões de raiz se isso for realmente necessário.

Escreva um script como este:

#!/bin/bash
npm start

Salve-o, torne-o executável com chmod +x /path/to/script e inicie-o com permissões de root com:

sudo /path/to/script    # from a terminal
gksudo /path/to/script  # without terminal (e.g. for a starter)
kdesudo /path/to/script # without terminal, KDE equivalent

É tudo o que é preciso.

Você pode adicionar outros comandos ao script, você pode, por exemplo, verificar se ele foi iniciado como root e sair (graças a PerlDuck ):

[[ $EUID -ne 0 ]] && echo "This script must be run as root." && exit 1
    
por dessert 28.12.2017 / 19:23