Wydaje się, że nikt inny nie zajął się tutaj oczywistym problemem. Umieszczenie sudow skrypcie, który następnie rozpowszechniasz, promuje złe nawyki użytkowników . (Zakładam, że je rozpowszechniasz, ponieważ wspominasz „z punktu widzenia użytkownika”).
Prawda jest taka, że istnieją wytyczne dotyczące korzystania z aplikacji i skryptów, które są podobne do zasady bezpieczeństwa w bankowości: Nigdy nie podawaj swoich danych osobowych komuś, kto dzwoni do ciebie i mówi, że dzwoni „z twojego banku” i który istnieje z podobnych powodów.
Reguła dla aplikacji jest następująca:
Nigdy nie wpisuj hasła po wyświetleniu monitu, chyba że masz pewność, co się z nim dzieje. Dotyczy to potrójnie każdego, kto ma sudodostęp.
Jeśli wpisujesz hasło, ponieważ działałeś sudow wierszu poleceń, świetnie. Jeśli wpisujesz to, ponieważ uruchomiłeś polecenie SSH, w porządku. Oczywiście, jeśli wpisujesz go podczas logowania do komputera.
Jeśli po prostu uruchomisz obcy skrypt lub plik wykonywalny i nieuprzejmie wpiszesz hasło, gdy zostaniesz o to poproszony, nie masz pojęcia, co skrypt z nim robi. Może to być przechowywanie go w pliku tymczasowym w postaci zwykłego tekstu, o ile wiesz, a nawet może nie zostać wyczyszczone po sobie.
Oczywiście istnieją osobne i dodatkowe obawy związane z uruchamianiem nieznanego zestawu komend jako root, ale tutaj mówię o utrzymaniu bezpieczeństwa samego hasła . Nawet zakładając, że aplikacja / skrypt nie jest złośliwy, nadal chcesz, aby hasło było obsługiwane bezpiecznie, aby uniemożliwić innym aplikacjom przechwycenie go i złośliwe użycie.
Tak więc, moja osobista odpowiedź na to jest najlepsza rzecz, którą mogę umieścić w swoim skrypcie, jeśli potrzebuje uprawnień roota:
#!/bin/bash
[ "$UID" -eq 0 ] || { echo "This script must be run as root."; exit 1;}
# do privileged stuff, etc.
exec