首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有root用户的Linux中检查用户名/密码

问在没有root用户的Linux中检查用户名/密码
EN

Stack Overflow用户
提问于 2017-11-21 03:22:04
回答 2查看 1.4K关注 0票数 3

如果我有一个用户名和密码对,我如何在Linux系统中验证它们实际上是正确的?我知道我可以使用passwd来做这件事,但我想用C编程来做这件事。

我不需要root权限(所以读取卷影文件不是一个选项)。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2017-11-21 03:28:49

如果您使用的是PAM,则可以使用checkpassword-pam。

该手册有一个示例命令(带有调试),它应该给你一个很好的起点。

代码语言:javascript
复制
echo -e "username\0password\0timestamp\0" \
    | checkpassword-pam -s SERVICE \
    --debug --stdout -- /usr/bin/id 3<&0
票数 2
EN

Stack Overflow用户

发布于 2021-08-20 13:56:31

这是一个用python代码检查密码的简单示例。不需要root权限。

代码语言:javascript
复制
#!/usr/bin/python3

# simple linux password checker with
# standard python

import os, pty


def check_pass(user, passw):
    # returns: 0 if check ok
    #          1 check failed
    #          2 account locked
    if type(passw) is str:
        passw = passw.encode()
    pid, fd = pty.fork()
    # try to su a fake shell which returns '-c OK' on ok
    if not pid:
        # child
        argv = ('su', '-c', 'OK', '-s', '/bin/echo', user)
        os.execlp(argv[0], *argv)
        return  # SHOULD NEVER REACHED
    okflg = False
    locked = False
    while True:
        try:
            data = os.read(fd, 1024)
            ##print('data:', data, flush=True)
        except OSError:
            break
        if not data:
            break
        data = data.strip()
        if data == b'Password:':
            os.write(fd, passw + b'\r\n')
        elif data.endswith(b'OK'):
            okflg = True
            break
        elif data.find(b'locked') > -1:
            # show that account is locked
            locked = True
            print(data, flush=True)
            break
    os.close(fd)
    # check result from su and okflg
    if (not os.waitpid(pid, 0)[1]) and okflg:
        return 0
    return 2 if locked else 1


if __name__ == '__main__':
    print(check_pass('xx', 'yy'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47399530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档