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 № 1Na 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