1.3 密码的管理
     账号好似一张通行证,有了账号才能顺利地使用RHEL。不过,RHEL如何确认某账号的人是这个账号的真正拥有者呢?此时RHEL会根据用户的密码来确认用户的身份。
1.31 加密解密原理
    事实上,DESMD5都只是单向式哈希算法,哈希算法是具备下面所有条件的数学算法。
⑴输入的长度可不固定,但输出的长度是固定的。
⑵输入改变,输出也会改变;输入不变,输出就不变。
⑶无法由输出推算出输入的值。
①和③是123456MD5哈希值。
②和④是amaniMD5哈希值。
    123456amani的两个输入不同长度的数据,但它们的哈希值都是32个字符。验证了:
⑴输入的长度可不固定,但输出的长度是固定的。
⑵输入改变,输出也会改变;输入不变,输出就不变。     
    由于,哈希算法会为每一个数据提供一个独一无二的指纹。若输入数据的内容改变了,计算出来的哈希值也会跟着改变;若输入的数据的内容相同,则哈希值也会相同。
    ***要破解出原始的密码就挺简单了,为了增加破解的难度,RHEL使用“加料”的DES/DM5演算法。
    第一步,先产生一个固定长度的随机数。
    第二步,把随机数连同原始的密码一并交给单向哈希算法,计算出密码与随机数的哈希值。
    这样即使是相同的密码,也会产生不同的密码哈希值,增加了破译的困难度。
1.32 修改用户密码
     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.32 修改用户密码
            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的组密码。