我想验证由用户脚本输入的root密码,该脚本用于安装需要root的驱动程序。
如果我尝试将该安装程序作为sudosuperuser 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-privileghow-to-verify-a-users-password-for-root-privledges-in-python,但这将检查sudo密码的有效性,而不是root
我想检查密码是否对root登录有效。

如何使用python验证user entered the passwordroot是正确的?

除了我的知识是我需要考虑的问题之外,我还必须通过执行su操作来检查root密码的有效性。

我们不能以root用户身份运行整个脚本,因为安装脚本将以普通用户身份运行某些测试之后。

最佳答案

在以某种方式阅读了很多东西之后,我发现我们可以通过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")

08-24 17:03
查看更多