Подтвержденный пароль `su` в python принят пользователем

1

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

ERROR: installer must be run as root 

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

Я нашел, что-то лучше всего подходит для проверки, если-в-пользователь-сценарий-имеет-root-like-privileg и how-to-verify-a-users-password-for- root-privledges-in-python, но это проверит проверку пароля sudo, а не root. Я хочу проверить пароль для корневого входа.

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

Как и Мое знание - это проблема, которую я должен проверить правильность пароля root, выполнив такую операцию su

мы не можем запустить весь скрипт как root, так как после установки скрипт запускает некоторый тест как обычный пользователь.

  • 1
    Возможно, полезно или связано: Как проверить пароль пользователя для привилегий root в python
  • 0
    @davedwards это тоже для sudo только не для root
Показать ещё 7 комментариев
Теги:
ubuntu-16.04
operating-system

1 ответ

0
Лучший ответ

После прочтения нескольких вещей каким-то образом я выясню, что мы можем аутентифицировать пароль 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")

Ещё вопросы

Сообщество Overcoder
Наверх
Меню