专栏首页小白的技术客栈Linux之密码知多少?

Linux之密码知多少?

一个Python简单脚本

好久没有更新内容了,也好久没有给大家打个招呼了,小白想死你们了。

查看系统用户的脚本

[root@VM_171_247_centos ~]# cat chk_user.py 
# encoding: utf8
# written by lavenliu at 20170926

import pwd
import spwd

sys_users = {}
usr_no_passwd = []
usr_has_passd = []

users_entry = pwd.getpwall()
for entry in users_entry:
    sys_users[entry.pw_name] = entry.pw_shell

for username in sys_users.keys():
    pass_entry = spwd.getspnam(username)
    if pass_entry.sp_pwd == '!!' or pass_entry.sp_pwd == '*':
        usr_no_passwd.append(pass_entry.sp_nam)
    else:
        usr_has_passd.append(pass_entry.sp_nam)

print("These users have home directory:")
for user, home in sys_users.items():
    if home == '/sbin/nologin':
        continue
    else:
        print("%15s: %s" % (user, home))

print
print "These users can login system:"
for user in usr_has_passd:
    print(user)

啥也不说,先看看执行结果是什么:

[root@VM_171_247_centos ~]# python chk_user.py 
These users have home directory:
           sync: /bin/sync
       shutdown: /sbin/shutdown
           halt: /sbin/halt
       lavenliu: /bin/bash
           root: /bin/bash
        jiangzf: /bin/bash

These users can login system:
lavenliu
root
jiangzf

先解释一下这个脚本主要是做什么用的。

  1. 该脚本可以检查系统当中可以登录的用户有哪些。
  2. 该脚本的判断依据是/etc/shadow文件中的密码位是否为!!*,如果是,则对应的用户不能登录系统。

脚本中的内容涉及到了Unix系统中的系统账户问题,涉及到了C语言当中的两个库函数调用(getpwnam函数、getpwent函数),接下来我们看一看密码文件及加密文件的作用。

passwd文件

以冒号为分隔的7个字段,其字段的含义如下:用户名:口令:UID:GID:描述信息:家目录:登录shell

shadow文件

/etc/shadow文件只有root用户才有权限进行查看和修改。/etc/shadow中的记录与/etc/passwd中的记录一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生。它的文件格式与/etc/passwd类似,由若干字段组成,字段之间用“:”分隔。这些字段的含义如下:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

  1. “登录名”是与/etc/passwd文件中的登录名相一致的用户账号
  2. “口令”字段存放的是加密后的用户口令字。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0-9A-Za-z}中的字符,则对应的用户不能登录。
  3. “最后一次修改时间”表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。例如在SCOLinux中,这个时间起点是1970年1月1日。
  4. “最小时间间隔”指的是两次修改口令之间所需的最小天数。
  5. “最大时间间隔”指的是口令保持有效的最大天数。
  6. “警告时间”字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  7. “不活动时间”表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  8. “失效时间”字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

预告一下明天的内容

好久没有更新内容了,小白突然幡然醒悟、悔过自新,觉得对不住大家。明天该讲解新的内容了,那就是函数。以往我们所讲过的内容没有一点函数的影子,这样安排就是为了循序渐进,让我们没有基础的同学也可以按照文章的顺序依次进行自我学习。

今天的这个小结就作为过渡吧,真正好玩的在后面的内容当中。

本文分享自微信公众号 - 小白的技术客栈(XBDJSKZ),作者:lavenliu.cn

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-09-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python面向对象编程-完整版

    面向对象是一种编程范式。范式是指一组方法论。编程范式是一组如何组织代码的方法论。编程范式指的是软件工程中的一种方法学。

    1846122963
  • 记一次Linux被入侵的经历

    Linux入侵经历 被入侵的一次经历 今天给大家说说一次被入侵的经历,仅供大家参考。 ? 事件起因 2017年9月7日下午测试带宽,登录到服务器。在/tmp目...

    1846122963
  • Python内置数据结构之字典(完整版)

    今天主要讲解上次未完成的内置数据结构-字典。小白这几天比较忙,忙的忘记了健身及写作,特发此文以作补偿。 Python字典简介 Python内置了字典:dict的...

    1846122963
  • 红帽助力HPC--我在Dell&RedHat HPC研讨会上的分享

    前言:今日,笔者受邀参加“Dell&RedHat HPC研讨会”。会上,分享了红帽在HPC领域的解决方案。由于很多朋友关心这个话题,因此将演讲的内容分享出来,供...

    魏新宇
  • 你问我答 | 云直播(CSS)年度关心问题解答

    年度云直播(CSS)最为关心的问题汇总整理,希望可以帮助到您。 ?

    腾讯云视频
  • WGCNA:加权基因共表达网络分析

    加权基因表达网络分析(Weighted gene co-expression network analysis, WGCNA),又叫权重基因共表达网络分析,其根...

    Y大宽
  • 新年大作战:抵制恶意推广,守护老爸的旧电脑

    每年过年回家,基本上都需要做一件事情:重新清理我爸电脑上的垃圾软件或者直接重装系统。 想我爸也是个国家级教师,平时工作使用电脑的频次并不低,却对于电脑这东西跟绝...

    FB客服
  • Neurons字幕组 | 2分钟带你看懂李飞飞论文:神经网络是怎样给一幅图增加文字描述,实现“看图说话”的?(附论文下载)

    大数据文摘
  • 构想下一代优化器MBO:MachineLearning Based Optimizer

    熟悉ORACLE数据库的人,对RBO/CBO肯定很熟。 Rule Based Optimizer(RBO)基于规则 Cost Based Optimizer(C...

    大数据和云计算技术
  • 学界丨神经网络之父 Geoffrey Hinton:深度学习的下一个飞跃是什么?

    Geoffrey Hinton,图源网络 AI 科技评论按: Geoffrey Hinton 被尊称为“神经网络之父”,他将神经网络带入到研究与应用的热潮,将“...

    AI科技评论

扫码关注云+社区

领取腾讯云代金券