Подтвержденный пароль `su` в python принят пользователем - PullRequest
0 голосов
/ 19 октября 2018

Я хочу проверить пароль root, который вводится пользовательским скриптом, который используется для установки драйвера, который требует root.если я пытаюсь запустить этот установщик как sudo или superuser privilege, он выдает следующее сообщение об ошибке:

ERROR: installer must be run as root 

Я принимаю пароль с помощью метода getpass() в начале сценария ибудет использовать этот пароль в промежутке между его выполнением, поэтому не хочу заставлять пользователя ждать так долго.

Я нашел что такое лучший способ проверкиif-the-user-of-a-script-has-root-like-privileg и как проверить пароль пользователя для root-privledges-in-python но это проверит проверку пароля sudo, а не root.Я хочу проверить, что пароль действителен для root-логина.

Как мне проверить, что user entered the password правильно для root с использованием python?

Помимо моих знаний, я должен проверить действительность пароля root, выполнив так: su операция

Мы не можем запустить весь сценарий как root как после сценария установкисобирается запустить какой-нибудь тест как обычный пользователь.

1 Ответ

0 голосов
/ 24 октября 2018

После прочтения нескольких вещей я понял, что мы можем аутентифицировать пароль root с помощью скрипта Python.Ниже мой подход к аутентификации.

import subprocess
import getpass
FAIL = 'Password: \r\nsu: Authentication failure'

def validate_pass(passwd):
    ret = 0
    try:
        cmd = '{ sleep 1; echo "%s"; } | script -q -c "su -l root -c ls /root" /dev/null' % passwd
        ret = subprocess.check_output(cmd, shell=True)
        return ret
    except:
        return 1



passwd = getpass.getpass(prompt='Password: ', stream=None)
res = validate_pass(passwd).strip()
if FAIL == res:
    print(res)
    print ("Invalid paasword")
else:
    print(res)
    print ("Valid paasword")
...