2014-01-04 4 views
0

Я пытаюсь написать программу python, для которой требуется пароль пользователя для запуска некоторых внешних команд с использованием библиотек subprocess. Код будет выглядеть примерно так.Как проверить пароль пользователя для root privledges в python

import subprocess 

passwordInput = raw_input("What is your password: ") 

subprocess.call('echo ' + passwordInput + ' | sudo -S pacman -Syy', shell=True) 

Эта программа работает нормально, однако если вы вводите неправильный пароль, программа не работает. Как я могу добавить некоторую проверку ошибок, чтобы определить, введен ли пароль неправильно?

Я думал, может быть оборачивать этот код в while цикла, а затем с помощью try-except для проверки пароля, однако я не уверен, какой except мог бы сделать это.

Любая помощь очень ценится.

+0

Почему бы не добавить эту программу/пользовательскую комбо в файл sudoers и вернуться домой рано? –

+1

Не появится ли «эхо-пароль» в ps -ef? Если да, это проблема безопасности. – dstromberg

ответ

2

Просто канава echo.

import subprocess 
subprocess.call(['sudo', '-S', 'pacman', '-Syy']) 

Программа sudo предложит пользователю определенное количество раз. Программе Python не нужно знать пароль пользователя. Когда-либо.

Другая проблема заключается в том, что вы используете shell=True, что означает, что если мой пароль $nakel0ver, потому что я люблю змей, ваша программа будет проходить пустой пароль sudo.

+0

Ну, я собираюсь портировать этот код на интерфейс GUI, который запускается при первой загрузке, поэтому пользователь не сможет ввести терминал, его будет вводить через графический интерфейс. –

+1

@josh: Затем используйте 'gksudo' или что-то в этом роде. – icktoofay

+0

Да, 'gksudo' - это путь. –

Смежные вопросы