1.3 密码的管理
账号好似一张通行证,有了账号才能顺利地使用RHEL。不过,RHEL如何确认某账号的人是这个账号的真正拥有者呢?此时RHEL会根据用户的密码来确认用户的身份。
1.3.1 加密解密原理
事实上,DES与MD5都只是单向式哈希算法,哈希算法是具备下面所有条件的数学算法。
⑴输入的长度可不固定,但输出的长度是固定的。
⑵输入改变,输出也会改变;输入不变,输出就不变。
⑶无法由输出推算出输入的值。
①和③是123456的MD5哈希值。
②和④是amani的MD5哈希值。
123456与amani的两个输入不同长度的数据,但它们的哈希值都是32个字符。验证了:
⑴输入的长度可不固定,但输出的长度是固定的。
⑵输入改变,输出也会改变;输入不变,输出就不变。
由于,哈希算法会为每一个数据提供一个独一无二的指纹。若输入数据的内容改变了,计算出来的哈希值也会跟着改变;若输入的数据的内容相同,则哈希值也会相同。
黑客要破解出原始的密码就挺简单了,为了增加破解的难度,RHEL使用“加料”的DES/DM5演算法。
第一步,先产生一个固定长度的随机数。
第二步,把随机数连同原始的密码一并交给单向哈希算法,计算出密码与随机数的哈希值。
这样即使是相同的密码,也会产生不同的密码哈希值,增加了破译的困难度。
1.3.2 修改用户密码
在RHEL中,用useradd命令新建一个用户时,则会锁定用户的密码,如此一来,用户暂不能使用RHEL了。必须要修改其密码后,新建的用户才能用他的账号登录RHEL。
修改用户账号的密码的命令是passwd,其语法是:
Passwd [-d] [-k] [-l] [-S] [--stdin] username
-d : 删除用户密码,即清空/etc/passwd、/etc/shadow文件中的密码字段。
一旦删除用户密码,则不要密码直接登录RHEL。切记!危险!!!
-l : 锁定账号,一经锁定,用户再也不能登录,即使输入的 密码是正确的。
-S : 此参数是大写的S,显示密码的状况。如加密算法的种类、是否已设置密码 等。此参数仅root有权执行!
--stdin : 由标准输入(Standard Input, stdin)读入密码的本文,再由passwd命令加密成为密文类型的密码。
好啦,我们来使用passwd命令来管理koma的密码例子:
①惯例,先查询是否有将要创建的用户koma,此为没有。
②使用useradd命令添加koma这个用户。
③因刚才添加的用户koma,会被锁定,故当用passwd -S(大写)查询时,会出现“password locked”,意即,koma的密码已被锁定了。
④直接让passwd从标准输入读入密码数据amani后,设置为koma的密码。
⑤再次查询可知,密码已加密设置且为MD5加密。
1.3.2 修改用户密码
RHEL可以为每一个组设置一个密码,称之为组密码。
如果该组没有指定密码,则RHEL只允许组的成员可以使用newgrp修改主要组的身份;如果组设置了密码,则组成员仍可以不用密码就切换主要组身份,但非组的成员必须提供正确的密码才可以。
请看下面的例子:
①是koma查询自己的账户信息的结果。koma加入了koma和fans两个组且koma目前的
主要组是koma。
②koma使用newgrp以fans的组身份开启一个新的shell。
③koma再次查询自己的账号数据,而现在koma的主要组已经变为fans。
④若id指定查询koma的账户信息,则koma的主要组还koma。
⑤使用exit命令退回到原来的shell环境。
⑥用id查询可知,koma已经恢复到原来的状态了。
在RHEL中新建的组账号默认会被锁定密码,这样就没有人能使用这个新建的组作为主要组了。如何设置组的密码呢?请看下面:
gpasswd [-r] [-R] groupname
-r : 用来删除组的密码。
-R : 是锁定group的组密码。
无参数 : 默认是修改group的组密码。
本文出自 “beyondhedefang” 博客,转载请与作者联系!