echo $password | sudo -S apt-get install -y foo bar
To jest trochę niebezpieczne. Jeśli użytkownik jest już uwierzytelniony w sudo, sudo nie zażąda hasła ponownie i zostanie przekazane do apt-get, co może prowadzić do dziwnych wyników (na przykład, jeśli skrypt poinstalacyjny zadaje pytanie). Sugerowałbym zamiast tego użycie zamiast siebie tego obiektu:
sudo -k # remove previous sudo timestamp
echo $password | sudo -v -S # create a new one for 15 minutes
sudo apt-get ... # execute the command
.
EDYCJA: Dirk ma poprawne hasło widoczne przez bardzo krótki czas podczas wykonywania echo
. Zobacz moją odpowiedź jako przedłużony komentarz, a nie odpowiedź na twoje pytanie.
Może być bardzo krótkie okno, gdy wpis/proc polecenia echo istnieje, ale "krótki" jest terminem operacyjnym, wydaje mi się (jak w milisekundach lub mniej). –
Zrobić 'strace -o bash.strace -f bash -c 'echo password | cat'' i sprawdź plik 'bash.strace'. Zobaczysz wiersz z 'execve ("/bin/cat ", [" cat "], [/ * 53 vars * /]) = 0', ale nie zobaczysz tam echa (z wyjątkiem pierwszego wiersza, gdzie jest przekazywana do basha): jest to wbudowane bash. Uruchomienie skryptu w bashu wystarczy, aby było bezpieczne. – ZyX
@ZyX - dziękuję za wyjaśnienie ryzyka. Nie rozważałbym wcześniej tego typu rozwiązania, ale moja sytuacja zmusza mnie do tego. Cieszę się, że nie jest tak niepewna, jak się obawiałem. – MountainX