Używanie skryptów wymagających hasła, bez faktycznego ich podawania

Uwaga: Ten wpis został utworzony ponad rok temu. Informacje w nim zawarte mogą być nieaktualne!

Tytuł troszkę zawiły, ale już tłumaczę na konkretnym przykładzie, który podał jeden z czytelników Jaack.

Jacek, będąc pod wrażeniem genialnego sposobu na wyłączenie touchpada opisanego tutaj klik, postanowił napisać skrypt, który podpiąłby pod skróty klawiszowe, aby łatwo włączać i wyłączać touchpada. Niestety w tej operacji wymagane jest hasło ( sudo rmmod oraz sudo modprobe) – i tutaj pojawił się problem, a raczej niedogodność w podawaniu hasła za każdym razem. Ale nasz dzielny Czytelnik poświęcił trochę czasu i udało mu się rozwiązać problem, a rezultaty jego poszukiwań przedstawiam poniżej :)

Załóżmy sytuację, że mamy skrypt o nazwie skrypt, który znajduje się gdzieś w katalogu domowym. Oczywiście w skrypcie wymagane jest podanie hasła, aby wykonał się on poprawnie. Dla przykładu – ma on taką zawartość:

#!/bin/bash

if `lsmod | grep -q psmouse`
then sudo rmmod psmouse
else sudo modprobe psmouse
fi

Jak widać – bez sudo ani rusz.

Nadajemy mu uprawnienia do uruchamiania:

chmod +x ~/skrypt

Teraz edytujemy plik /etc/sudoers:

sudo gedit /etc/sudoers

I dopisujemy do końca pliku:

twój_login ALL = NOPASSWD: /sbin/modprobe psmouse, /sbin/rmmod psmouse

Zwróć uwagę na dwa miejsca:
twój_login – oczywiście tutaj uzupełnij odpowiednio,
/sbin/modprobe psmouse, /sbin/rmmod psmouse – tutaj dodaj po przecinku te polecenia, które mają wykonywać się bez pytania o hasło – w naszym przykładzie było to modprobe psmouse oraz rmmod psmousemuszą to być ścieżki absolutne.

Zapisz plik (CTRL+S) i ruchom wcześniejszy skrypt. Zauważysz, że hasło już nie jest potrzebne :) Teraz wystarczy podpiąć skrypt pod jakiś klawisz lub aktywator.

Jeżeli powyższy artykuł nie rozwiązał lub rozwiązał częściowo Twój problem, dodaj swój komentarz opisujący, w którym miejscu napotkałeś trudności.
Mile widziane komentarze z uwagami lub informacjami o rozwiązaniu problemu.