我想验证用户脚本输入的root密码,该脚本用于安装需要root的驱动程序。
如果我尝试以sudo
或superuser privilege
的身份运行该安装程序,则会显示以下错误:
ERROR: installer must be run as root
我在脚本的开头借助getpass()
方法接受密码,并且将在执行该密码之间使用该密码,因此不想让用户等待那么长时间。
我找到了what-is-the-best-way-for-checking-if-the-user-of-a-script-has-root-like-privileg和how-to-verify-a-users-password-for-root-privledges-in-python,但这将检查sudo密码而不是root
的有效性。
我想检查密码是否对root登录有效。
如何使用python验证user entered the password
对root
是正确的?
我也很担心,我必须通过执行su
操作来检查root密码的有效性
在安装脚本将以普通用户身份运行某些测试之后,我们无法将整个脚本作为root用户运行。
答案 0 :(得分:0)
在以某种方式阅读了很多东西之后,我发现我们可以通过Python脚本对root密码进行身份验证。以下是我的身份验证方法。
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")