热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手动更新NIS服务的用户密码

1.密码存放格式公司NIS服务器基于SunOS5.10,即Solaris10,没有开放yppasswd服务,由于某些原因只能手动在NIS文件里面手动修改密码,检查yp的文件后发现密

1. 密码存放格式

公司NIS服务器基于Sun OS 5.10,即Solaris 10,没有开放yppasswd服务,由于某些原因只能手动在NIS文件里面手动修改密码,检查yp的文件后发现密码存放在passwd.adjunct文件中。

1.1 密码存放实例

以下是用户ygu的记录:

ygu:$1$T7q3OPy9$zfSTOGqcM.s0.fE1dIOoO/:::::

Ubuntu 14.04上,其shadow文件的格式是这样的:

root@ubuntu:~# cat /etc/shadow | grep root
root:$6$2vZ14Nil$p96FaJofTH.X5YfWqExlEAyLcKGN3xiBnYnrvtk1eoZ44IFbTLRBBHTCMxgQYNp2Z/52E9yNzdtd7Yw9Q47Hh0:17225:0:99999:7:::

1.2 密码存放格式

1.2.1 shadow记录格式

NIS的密码格式和Ubuntu的格式是一样的,以Linux的/etc/shadow文件为例,这个文件的每行是一个单独的记录,每个记录由9个字段组成,使用分号“:”进行分隔,上面的root密码的每个字段意义如下:

<code>root</code>密码格式

  1. login name

    登录名,这里为:root

  2. encrypted password

    密码密文,如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合{./0-9A-Za-z}中的字符,则对应的用户不能登录。

    这里为$6$2vZ14Nil$p96FaJofTH.X5YfW......47Hh0

    加密后的密码也有固定格式,后面会描述。

  3. date of last password change

    上次密码修改日期,通常是从1970年1月1日起的天数,这里为17225

  4. minimum password age

    密码最短保留天数,用户两次更改密码的最小时间间隔,为空或0表示没有限制,这里为0

  5. maximum password age

    密码最长保留天数,用户必须在这个时间间隔内修改密码,到期后原来密码仍然有效,只是会被提示修改密码,为空表示没有限制,这里为99999

  6. password warning period

    密码到期前的提示天数, 为0表示密码到期前不提示,这里为7

  7. password inactivity period

    密码过期后的宽限天数,为空表示不执行宽限功能,这里为空。

  8. account expiration date

    账号过期时间,通常是从1970年1月1日起的天数,账号过期不同于密码过期,账号过期意味着账号不能再登录;密码过期意味着用户不能用当前密码登录,通过其它方式修改密码后仍然可以登录,为空表示账号永不过期,这里为空。

  9. reserved field, this field is reserved for future use

    保留字段,供将来使用,这里为空。

1.2.2 密文字段格式

对于第2个字段(encrypted password),并非全部都是密文,而是由3个子字段构成,即:

$id$salt$encrypted

图示如下:

下面分别介绍各个字段:

  1. id

    id表示密文加密的方式,有多种:1表示采用MD5,5表示采用SHA-256,6表示采用SHA-512,这里为6。

  2. salt

    密码生成的随机参数,通过将saltpasswd合并到一起进行计算得到HASH密文,防止攻击,这里为2vZ14Nil

  3. encrypted

    通过处理后得到的密文,这里为‘p96FaJofTH.X5YfWqExlEAyLcKGN3xiBnYnrvtk1eoZ44IFbTLRBBHTCMxgQYNp2Z/52E9yNzdtd7Yw9Q47Hh0’。

详细描述可以参考Ubuntu Manuals,现将其NOTES一节摘录如下:

NOTES
   Glibc notes
       The glibc2 version of  this  function  supports  additional  encryption
       algorithms.

       If  salt  is  a  character  string  starting with the characters "$id$"
       followed by a string terminated by "$":

              $id$salt$encrypted

       then instead of using the DES machine,  id  identifies  the  encryption
       method  used  and  this  then  determines  how the rest of the password
       string is interpreted.  The following values of id are supported:

              ID  | Method
              ─────────────────────────────────────────────────────────
              1   | MD5
              2a  | Blowfish (not in mainline glibc; added in some
                  | Linux distributions)
              5   | SHA-256 (since glibc 2.7)
              6   | SHA-512 (since glibc 2.7)

       So   $5$salt$encrypted   is   an   SHA-256   encoded    password    and
       $6$salt$encrypted is an SHA-512 encoded one.

       "salt" stands for the up to 16 characters following "$id$" in the salt.
       The encrypted part of  the  password  string  is  the  actual  computed
       password.  The size of this string is fixed:

       MD5     | 22 characters
       SHA-256 | 43 characters
       SHA-512 | 86 characters

       The  characters  in  "salt"  and  "encrypted"  are  drawn  from the set
       [a-zA-Z0-9./].  In the MD5 and SHA implementations the  entire  key  is
       significant (instead of only the first 8 bytes in DES).

2. 重新生成密码

通过以上介绍,有如下结论:

  1. Ubuntu 14.04的密码存储id为6,采用SHA-512方式
  2. NIS服务器的密码存储id为1,采用MD5方式

以下来进行实际操作。

下面通过openssl工具来生成密码:

openssl的用法如下:

ygu@ubuntu:~$ openssl passwd -h
    Usage: passwd [options] [passwords]
    where options are
    -crypt standard Unix password algorithm (default)     -1 MD5-based password algorithm     -apr1 MD5-based password algorithm, Apache variant     -salt string use provided salt     -in file read passwords from file     -stdin read passwords from stdin     -noverify never verify when reading password from terminal     -quiet no warnings     -table format output as table     -reverse switch table columns

假定这里选择参数2MQdYmSo作为salt随机数:

ygu@ubuntu:~$ openssl passwd -1 -salt 2MQdYmSo
Password:
$1$2MQdYmSo$n5oqmyyEoHkP5/3PLnfZL0

用这里最后生成的字符$1$2MQdYmSo$n5oqmyyEoHkP5/3PLnfZL0串替换文件passwd.adjunct中记录的相应字段即可。

由于这里只更新了encrypted password字段,所以账户的一些其他信息,如date of last password change不会得到更新。

3. 参考链接

参考链接:

  • How are passwords stored in Linux
  • Ubuntu Manpage: shadow - shadowed password file
  • Ubuntu Manpage: crypt, crypt_r - password and data encryption

推荐阅读
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • 本文介绍了使用readlink命令获取文件的完整路径的简单方法,并提供了一个示例命令来打印文件的完整路径。共有28种解决方案可供选择。 ... [详细]
  • 第四讲ApacheLAMP服务器基本配置Apache的编译安装从Apache的官方网站下载源码包:http:httpd.apache.orgdownload.cgi今 ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
  • 【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup
    【CTF 攻略】第三届 SSCTF 全国网络安全大赛—线上赛 Writeup ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
  • 后台自动化测试与持续部署实践
    后台自动化测试与持续部署实践https:mp.weixin.qq.comslqwGUCKZM0AvEw_xh-7BDA后台自动化测试与持续部署实践原创 腾讯程序员 腾讯技术工程 2 ... [详细]
  • Telnet的使用(Telnet远程连接Linux)
    一、环境描述:客户端:Win10操作系统 ... [详细]
author-avatar
硪婲開時佰婲殺_387
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有