/ / Uruchom polecenie sudo w skrypcie powłoki - linux, bash, shell

Uruchom polecenie sudo w skrypcie powłoki - linux, bash, shell

Napisałem taki skrypt powłoki

#!/bin/bash

sudo mkdir /var/www/html/test
sudo cp ./index.html /var/www/html/test/index.html
echo "Hi" > /var/www/html/test/index.html

jeśli to zrobię sudo to dobrze działa.

$ sudo ./script.sh

ale nie chcę uciekać sudo. bo echo nie potrzebuje uprawnień roota. Z drugiej strony, jeśli uruchomię to bez sudo lubię to:

$ ./script.sh

za pierwsze polecenie (mkdir) prosi mnie o hasło roota, a drugie polecenie nie uruchamia się i daje mi błąd odmowy zezwolenia.

Jak mogę poradzić sobie z tą sytuacją?

Odpowiedzi:

0 dla odpowiedzi № 1

Na podstawie Twojej konfiguracji, np. w ubuntu, jeśli uruchomię sudo 2 razy, po raz drugi nie muszę podawać hasła. Jest więc możliwe, że uruchomi się drugie IDD sudo, nie pytając ponownie o hasło.

Możesz wyjaśnić, spróbuj tego:

sudo echo a
sudo echo b

Najprawdopodobniej, jak skomentował Kip K, błąd pochodzi z echa „Hi” ... ponieważ zwykły użytkownik nie ma uprawnień do pisania /var/www/html/test/index.html.

Kinda overkill, ale możesz dawać stałą opinię w ten sposób:

sudo bash -c "echo mkdir; mkdir /var/www/html/test"
sudo bash -c "echo cp; cp ./index.html /var/www/html/test/index.html"

0 dla odpowiedzi nr 2

Próbować chown do katalogu test:

#!/bin/bash

sudo bash -c "mkdir /var/www/html/test && chown -R USER /var/www/html/test"
cp ./index.html /var/www/html/test/index.html
echo "Hi" > /var/www/html/test/index.html

lub ... chmod o+w /var/www/html/test