当前位置: 首页 > Linux

Linux用户登录密码的生成

时间:2023-04-07 01:47:40 Linux

原文链接:https://voidint.github.io/pos...1.如何从自动化需求的角度生成Linux用户登录密码?可能有人会说是用passwd生成的。的确,passwd命令可以帮助我们重新设置用户登录密码,但这并没有回答如何生成Linux用户登录密码的问题。对于这个问题,本着务实的精神,我就不深究了。毕竟安装时会设置密码,安装后可以通过passwd命令重新设置密码。学会了这两点,满足一般需求绰绰有余。但是,对于自动化来说,仅仅知道以上两点是不够的。linux自动化安装过程中,一定不能允许人为干预设置用户登录密码,否则就没有自动化。安装操作系统后,可能会自动需要重新设置用户密码。这时候使用passwd命令重新设置用户密码可能不是最好的选择。如果了解了密码生成机制,那么这个自动化需求的难点就迎刃而解了。2、密码生成理论有Linux基础的人一定知道,Linux用户登录密码信息保存在/etc/shadow文件中,只有root用户才能访问这个文件。下面将以voidint用户为例,查看该用户的密码信息。$须藤猫/etc/影子|grepvoidint[sudo]passwordforvoidint:voidint:$6$3kheX/Vg$TGum9JEjfmGsj8Mfk3SUY/d/bWkJgnRimCxoaDTX7wcgrraYvU.fiziEUdpDglWc58uPZqWJhKNjiXayP6Q89b0:::1字符串被明确分隔为:::1:变成了9段我们这里只关注前两段。至于每段的具体含义,大家可以点这里自行阅读。第一部分是用户名。第二段是用户密码。实际上,名称密码并??不准确。比较准确的说法是,用户密码的明文是通过一定的哈希算法计算得到的密文。但是,鉴于这种相对准确的说法过于冗长且难以表达。因此,如无特殊说明,以下所指的密码均指密码明文的密文。言归正传,相信很多人看到这里都会有和我一样的想法:只要知道密码生成的算法,并根据这个算法生成符合Linux要求的密码,然后覆盖第二段的内容加上密码,那么用户密码是否被重置?如果你仔细看这个密码,你会发现它是由$xxx$xxx$xxx格式组成的,即一个由$符号分隔的三端字符串。查阅资料得知,这种格式可以进一步概括为$id$salt$encrypted。简单解释一下$id$salt$encrypted中各部分的含义:id:用于加密(准确的说是hashing)的算法代号。IDMethod1MD52aBlowfish(不在主线glibc;在某些Linux发行版中添加)5SHA-256(自glibc2.7起)6SHA-512(自glibc2.7起)salt:程序随机生成的字符串,即salt)。encrypted:用户密码的明文字符串加salt后使用hash算法得到的hash值,即hash(明文+salt)。另一种形式的密码——$id$rounds=yyy$salt$encrypted在特别说明中也有提到。其中salt部分用rounds=yyy代替。yyy是用户(调用者)提供的介于[1000,999999999]之间的整数。3、密码生成实践了解了以上基础知识后,接下来就是理论指导实践环节。可以使用哪些工具生成密码?这里使用的grub-crypt工具。您可以在Linux发行版中安装此工具或使用我提供的dockerfile。使用sha512算法生成密码$grub-crypt--sha-512Password:Retypepassword:$6$r1jcut3Crl8bSIMo$XfKnrl4Ykzk2KPQ59MCXcUef9OjZWoZrIp7aeWwnCzIVQY1p/G1EiJQE4DYFej783NlvR5KtKYXs4P/hQaVst.将生成的密码写入/etc/shadow文件中(该文件只有root用户才有权限读写,若root也无权限,则赋予600权限即可)$sudocat/etc/shadow|grepvoidintvoidint:$6$r1jcut3Crl8bSIMo$XfKnrl4Ykzk2KPQ59MCXcUef9OjZWoZrIp7aeWwnCzIVQY1p/G1EiJQE4DYFej783NlvR5KtKYXs4P/hQaVst.:16892::::::退出当前用户并使用新Modifiedpasswordlogin4.RefertoCRYPT(3)CentOS/RHEL6:Howtopasswordprotectgrub(Password-ProtectedBooting)Command|kickstartrootpwpasswordgenerationmethodBirdbrother'sLinuxprivatekitchen-/etc/shadowfilestructure