用户

时间:2018-10-19 19:47:15

标签: python linux operating-system ubuntu-16.04

我想验证用户脚本输入的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用户运行。

1 个答案:

答案 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")