Stworzyłem skrypt bash, który używa kdialog wyłącznie do interakcji z użytkownikiem. Jest uruchamiany z pliku „.desktop”, więc użytkownik nigdy nie widzi terminala. Wygląda w 100% jak aplikacja GUI (mimo że jest to tylko skrypt bash). Działa tylko w KDE (Kubuntu 12.04).
Moim jedynym problemem jest bezpieczne i wygodne wprowadzanie hasła . Nie mogę znaleźć zadowalającego rozwiązania.
Skrypt został zaprojektowany do działania jako zwykły użytkownik i monitowania o hasło, gdy polecenie sudo jest po raz pierwszy potrzebne. W ten sposób większość poleceń, które nie wymagają uprawnień sudo, są uruchamiane jako zwykły użytkownik. To, co się dzieje (gdy skrypt jest uruchamiany z terminala), polega na tym, że użytkownik jest proszony o podanie hasła raz, a domyślny limit czasu sudo pozwala na zakończenie skryptu, łącznie z wszelkimi dodatkowymi poleceniami sudo, bez ponownego monitowania użytkownika. Tak właśnie chcę, żeby działało, gdy działa za GUI.
Główny problem polega na tym, że użycie kdesudo
do uruchomienia mojego skryptu, który jest standardowym sposobem GUI, oznacza, że cały skrypt jest wykonywany przez użytkownika root. Własności plików są przypisywane do użytkownika root, więc nie mogę polegać na ~/
ścieżkach, a wiele innych rzeczy jest mniej niż idealnych. Uruchamianie całego skryptu jako użytkownik root jest po prostu bardzo niezadowalającym rozwiązaniem i myślę, że to zła praktyka.
Doceniam wszelkie pomysły na to, aby użytkownik mógł wprowadzić hasło sudo tylko raz za pośrednictwem GUI, nie uruchamiając całego skryptu jako root. Dzięki.
sudo -s
(małe literys
), a niesudo -S
(wielkie literys
).Jest to oparte na doskonałej odpowiedzi Erica Carvalho. Zamieszczam go w celu wyjaśnienia napotkanego problemu. W szczególności podczas korzystania z tego traci się zwykły limit czasu sudo (np. 15 minut). Mój skrypt, który ma ponad 50 poleceń sudo, teraz prosi o hasło użytkownika ponad 50 razy!
Oto pełny przykładowy przykład wszystkich części rozwiązania. Składa się ze skryptu bash, skryptu „myaskpass”, jak sugerował Eric, i pliku „.desktop”. Wszystko powinno być w 100% GUI (bez interakcji terminalu), więc plik .desktop jest niezbędny (afaik).
I sam skrypt testowy. Podczas korzystania z tego rozwiązania ten poprosi o podanie hasła dwukrotnie. (Zwykle pytałby tylko raz ze względu na domyślny limit czasu sudo).
źródło
sudo -A
powoduje ponowne podanie hasła. Spróbuję to rozgryźć.Poniższy skrypt działa za pośrednictwem wiersza polecenia, pliku na pulpicie lub dwukrotnego kliknięcia, pyta o hasło tylko raz, a wzorca polecenia
sudo -Sp '' <your command here> <<<${sudo_password}
można użyć wiele razy w dowolnym miejscu pliku:źródło