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