Jeśli nie masz nic przeciwko zrobieniu trochę skryptów powłoki i znalazłeś skrypt, który możesz uruchomić z terminala, który przełączy się do systemu Windows, możesz utworzyć skrypt zawierający to polecenie (i być może reboot
polecenie następujące po nim). Nazwijmy to winreboot.sh
argumentem. Następnie zmień właściciela tego skryptu na root
, oznacz go jako wykonywalny i umieść w przydatnej lokalizacji (np. /usr/local/bin/
). Jeśli uruchomisz go w ten sposób:
sudo /usr/local/bin/winreboot.sh
Poprosi Cię o hasło administratora, a następnie powinien zrobić to samo, ponieważ skrypt następnie działa jako root. Jednak sudo
utrzymuje listę zasad, na których użytkownicy mogą uruchamiać co poleceniach sudo
i czy nie jest wymagane hasło. Ten zestaw reguł jest przechowywany /etc/sudoers
- niestety składnia jest bardzo myląca, dlatego nie należy bezpośrednio edytować pliku, ale należy użyć
sudo visudo
zamiast tego sprawdza składnię przy zapisywaniu. Zauważ, że korzysta z vima do edycji, którą możesz przeczytać przed uruchomieniem - może być bardzo mylące, jeśli nie jesteś do tego przyzwyczajony. (aby wyjść bez zapisywania, naciśnij <ESC>
i wpisz, :q!
a następnie <ENTER>
klawisz). Jeśli nie możesz zacząć używać vima, edytuj kopię sudoers w swoim ulubionym edytorze i sprawdź składnię za pomocą visudo -f /path/to/sudoers-copy
. Jeśli jest OK, skopiuj go z powrotem na oryginał.
Wracając do rzeczy, regułą, którą chcesz dodać do sudoers, jest to, że chcesz, aby użytkownicy w admin
grupie mogli uruchamiać twój skrypt jako root bez hasła. To wygląda tak:
%admin localhost=(ALL) NOPASSWD: /usr/local/bin/winreboot.sh
Dodaj go jako ostatnią linię sudoers. Jeśli teraz spróbujesz uruchomić skrypt za pomocą sudo
(musisz to zrobić z bezwzględną ścieżką), NIE poprosi on o hasło i po prostu uruchom go. Zawiń polecenie sudo w innym skrypcie powłoki, połącz go z pulpitu lub z dowolnego miejsca, a Twój sześciolatek powinien mieć możliwość przejścia na system Windows w dowolnym momencie.
Mam nadzieję, że to pomoże, daj mi znać, jeśli coś jest niejasne.