Mam te wiersze skryptu od mojego ISP:
sudo bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
Działa, jeśli wkleję wiersz po wierszu w terminalu. Chcę utworzyć plik * .command i uruchomić go, klikając dwukrotnie. Ale dostaję tylko monit o hasło, a następnie puste okno bash. Wynikowy plik „opcji” jest pusty.
Próbowałem tego:
#!/bin/bash
echo "plugin L2TP.ppp">>/etc/ppp/options
echo "l2tpnoipsec">>/etc/ppp/options
Dostaję:
/ etc / ppp / options: Odmowa dostępu
Myślę, że muszę użyć jakiegoś polecenia, aby uzyskać uprawnienia roota od basha.
Odpowiedzi:
Weź skrypt, który utworzyłeś:
Zapisz go w katalogu domowym lub w katalogu „scripts” w katalogu domowym jako l2tp.sh. Pozwól na wykonanie (napisz to polecenie w Terminalu):
Aby uruchomić plik przy użyciu sudo (uprawnienia roota):
Metoda nr 1. W typie terminala:
Metoda nr 2. Utwórz plik run_l2tp.command z następującą zawartością:
Pozwól na wykonanie:
Po dwukrotnym kliknięciu polecenia run_l2tp.command i wpisaniu hasła plik l2tp.sh zostanie uruchomiony z uprawnieniami administratora.
Niektóre uwagi:
źródło
Zachowaj to:
na pulpicie w pliku o nazwie
script.sh
.Otwórz okno terminala i wpisz:
Po wyświetleniu monitu wprowadź hasło, a wszystkie polecenia w pliku będą uruchamiane z uprawnieniami superużytkowników.
źródło
Jeśli ze względów bezpieczeństwa nie chcesz, aby jakikolwiek użytkownik systemu mógł uruchomić skrypt, ale chcesz otrzymać monit o podanie hasła administracyjnego, alternatywnym rozwiązaniem byłoby zapisanie skryptu powłoki, a następnie użycie programu AppleScript Editor, aby utworzyć AppleScript.
Mówiąc, AppleScript byłby jednostronny
do shell script «your script's name here» with administrator privileges
. Zapisz ten skrypt jako aplikację. Następnie po kliknięciu poprosi o podanie hasła administratora, a następnie uruchom skrypt powłoki z uprawnieniami administratora.Oczywiście zastąp
«your script's name here»
ścieżką do skryptu.źródło
Problemem jest, że gdy to zrobić z wiersza poleceń, co robisz zaczyna
bash
podsudo
, a następnie wysyłając te kolejne dwa poleceńbash
, a nie oryginalnej powłoki. (znak, że musiszexit
dwa razy)Gdy robisz to w skrypcie,
bash
polecenie nigdy nie kończy działania, więc kolejne dwa polecenia nigdy się nie uruchamiają.Nie jest tak elegancki jak rozwiązanie AppleScript, ale jeśli zamierzasz to zrobić jako skrypt z wiersza poleceń, odpowiednikiem byłoby:
Gdybyśmy nie potrzebowali przekierowania io (
>>
bit), moglibyśmy po prostu wywołać komendę bezpośrednio,sudo
nie potrzebującsudo sh -c
sztuczki. (i zwróć uwagę, że musiałem zacytować argument, abysh -c
nie uruchamiał echa jako root, ale plik był dołączany jako pierwotny użytkownik).To będzie pracować jako
.command
plik z Findera, ale to przywołać okno terminala, z prośbą o podanie hasła, a jeśli wpisany poprawnie, uruchom polecenia. (zakładając, że ostatnio nie uwierzytelniłeś sięsudo
... jeśli tak, uruchomi się bez monitowania)źródło