用户密码和组密码分别保存在/etc/shadow和/etc/gshadow里,下面我们对这两个文件进行分析。
shadow里保存的内容都是分段的,每段以”:“分隔,每一段的内容如下:
用户名:加密后的密码:最近一次修改密码的日期:密码最短使用天数:密码最长使用天数:提前多少天提示用户密码即将过期:密码非活动天数:密码锁定日期:保留字段
第二段:加密后的密码
通过man 3 crypt可知:
$id$salt$encrtpted
id:表示加密方法
salt:是从[a-zA-Z0-9./]随机选取的2个字符,用来扰乱算法的
encrtpted:用户真正的经过加密算法计算过的密码
第三段:最近一次修改密码的日期,这项表示的是1970-01-01距离密码修改日期共经历了多少天
第四段:密码最短使用天数,0表示没有限制
第五段:密码最长使用天数,99999表示无限制
第七段:密码非活动天数,0表示密码过期立即锁定,-1表示密码永不过期
第八段:密码锁定日期,这项表示的是1970-01-01距离密码修改日期共经历了多少天
和用户密码相关的命令有passwd,usermod,chage,接下来我们一一讲解它们的用法:
1.passwd [option] USERNAME
a.新建hadoop用户,并查看shadow
注意第二个字段是!!,因为还没有为hadoop设置密码,我们可以用passwd为用户设置密
格式:passwd USERNAME
a.1 :
passwd还有另一种为用户设置密码的方式:
passwd --stdin USERNAME
passwd支持使用管道读取标准输入作为新密码。
b.锁定用户:
格式:passwd -l USERNAME
登录失败:
查看shadow,密码段最前面多了!!,密码不对了,不能登录是正常的:
c.解锁用户:
格式:passwd -u USERNAME
d.修改密码最短使用天数:
格式:passwd -n 天数 USERNAME
e.修改密码最长使用天数
格式:passwd -x 天数 USERNAME
f.修改提前多少天提示用户密码即将过期:
格式:passwd -w 天数 USERNAME
g.修改密码非活动天数:
格式:passwd -i 天数 USERNAME
h.使密码立即过期,并强制用户登录时更改密码:
格式:passwd -e USERNAME
2.chage [option] USERNAME
a.修改最后一次密码修改日期:
格式:chage -d YYYY-MM-DD USERNAME
hadoop最后一次修改密码是2014-04-30,第3个字段为16190;通过chage更改了最后一次密码修改日期为为2014-04-29,所以第3个字段变为了16189
b.修改密码最短使用天数:
格式:chage -m USERNAME
c.修改密码最长使用天数
格式:chage -M USERNAME
d.修改提前多少天提示用户密码即将过期:
格式:chage -W USERNAME
e.修改密码非活动天数:
格式:chage -I USERNAME
f.修改过期时间:
格式:chage -E YYYY-MM-DD USERNAME
现在是2014-04-30(距离1970-01-01是16190天),我们修改密码2014-05-01过期,所以是16191
3.usermod
a.修改密码过期日期:
格式:usermod -e YYYY-MM-DD USERNAME
格式:usermod -f 天数 USERNAME
例:
修改用户最后一次修改密码日期2014-4-20,密码最短使用2天,最长使用10天,提前7天警告,非活动天数3天。
密码2014-04-30过期,但是非活动天数是3天,2014-05-01到05-03是非活动天数,如果不修改密码将锁定。
由于密码2014-04-30已过期,所以登录会提示密码已过期:
但是由于非活动天数3天,该到2014-05-03锁定,那么我们把现在的日期改为2014-05-01,理论上用hadoop登录系统时会提示修改密码:
使用hadoop登录系统:
果然,我们的猜想都是对的。
我们还可以给组设置密码,使用gpasswd命令:
格式:gpasswd GRPNAME
我们给test组设置密码:
切换到hadoop用户,并新建a.txt文件:
我们如何用hadoop用户新建b.txt的属组是test组?
查看hadoop id信息:
我们新建oracle组,并将其添加到hadoop的附加组:
给oracle组设置密码:
再切换到hadoop,并切换到oracle组,新建c.txt:
查看hadoop id信息:
由下图可以看出:
键入exit并回车,新建的d.txt属组为用户hadoop的基本组
总结:
1.newgrp命令的作用就是log in to a new group
1使用newgrp命令切换的new group将临时作为该用户的基本组;
2.如果new group是该用户的附加组,则不需要输入密码;否则,需要输入密码;
3.使用exit退出改用户的临时基本组,返回用户自己的基本组;
newgrp的命令格式:
newgrp [-] [group],-的作用和su [-] anotheruser类似;
有关gpasswd和newgrp请自行man其详细用法。
如上述内容有错误的地方,希望大家谅解,并指出错误所在,小弟感激不尽!
我是一只小小小菜鸟,希望能飞得更高!
转载于:https://blog.51cto.com/huifei1314/1405099