Se non ti dispiace fare un po 'di script di shell e hai trovato uno script che puoi eseguire dal Terminale che passerà a Windows, puoi creare uno script contenente quel comando (e forse un reboot
comando che lo segue). Chiamiamolo winreboot.sh
per amor di discussione. Quindi cambia il proprietario di quello script in root
, contrassegnalo come eseguibile e mettilo in una posizione utile (come /usr/local/bin/
). Se lo esegui in questo modo:
sudo /usr/local/bin/winreboot.sh
Ti chiederà la password dell'amministratore e quindi dovrebbe fare la sua cosa, poiché lo script viene quindi eseguito come root. Tuttavia, sudo
mantiene un elenco di regole su cui gli utenti possono eseguire i comandi utilizzati sudo
e se è richiesta o meno una password. Questo set di regole è archiviato /etc/sudoers
- purtroppo la sintassi è molto confusa, motivo per cui non dovresti modificare direttamente il file, ma dovresti usare
sudo visudo
invece, che controlla la tua sintassi sul salvataggio. Nota che questo usa vim per la modifica, che potresti voler leggere prima di eseguirlo - può essere molto confuso se non sei abituato. (per uscire senza salvare, premi <ESC>
e digita :q!
seguito dal <ENTER>
tasto) Se non riesci ad andare avanti con vim, modifica una copia dei sudoers con il tuo editor preferito e controlla la sintassi con visudo -f /path/to/sudoers-copy
. Se è OK, copiarlo nuovamente sull'originale.
Tornando al punto, la regola che si desidera aggiungere ai sudoer è che si desidera che gli utenti del admin
gruppo possano eseguire lo script come root senza una password. Sembra così:
%admin localhost=(ALL) NOPASSWD: /usr/local/bin/winreboot.sh
Aggiungilo come ultima riga di sudoers. Se ora provi a eseguire lo script con sudo
(devi farlo con percorso assoluto), NON ti chiederà una password ed eseguirà invece. Avvolgi il comando sudo in un altro script shell, collegalo al desktop o ovunque e il tuo bambino di 6 anni dovrebbe essere in grado di passare a Windows in qualsiasi momento.
Spero che ti aiuti, fammi sapere se qualcosa non è chiaro.