2010-09-08 14 views

Odpowiedz

10

Nie, ponieważ można go zobaczyć przez /proc/$PID/cmdline.

Sugeruję, aby nie próbować wymyślać na nowo narzędzi bezpieczeństwa. Program sudo może buforować twoje hasło.

+2

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). –

+1

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

+0

@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

4
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.

+0

Dlaczego warto używać tej zmiennej - dlaczego nie pozwolić, aby sudo obsłużył monit? Myślę, że druga linia powinna stać się 'sudo -v -S'. Jedynym powodem, dla którego warto go zachować, jest to, że "read -s" nie odzwierciedla hasła - ale czy też "sudo" nie działa? –

+0

@ Jonathan: True. Jednak takie skrypty są często używane do wykonywania sudo na wielu komputerach (zobacz tutaj na przykład: http://www.heinzi.at/projects/upgradebest.sh/). Wtedy nie ma potrzeby wielokrotnego wprowadzania hasła. – Heinzi

+0

Dość uczciwi - zapomniałem uwzględnić minimalizację w celu zadawania pytań na temat SO. –

11

Lepszym rozwiązaniem byłoby, aby edytować plik sudoers i dodaj swój program, który nie wymaga hasła ...

zrobic sudo visudo i dodać następujące czynności, aby włączyć grupę administratora, aby uruchomić apt-get w/o hasło: %admin ALL = NOPASSWD: /usr/bin/apt-get

Zobacz stronę man sudoers, aby uzyskać więcej szczegółów.

-1

sudo to open source, dzięki czemu można skompilować własną wersję, która przyjmuje hasło jako parametr wiersza poleceń.

+2

Zdecydowanie odradzam używanie domowej wersji tak ważnej części systemu operacyjnego bez * bardzo * dobrego powodu. (Będziesz musiał ręcznie zastosować i przekompilować każdą łatkę itp.) – Heinzi

Powiązane problemy