在Linux 中,用户的相关信息保存在对应的文件中,这些文件分别是:/etc/passwd 和/etc/shadow 。
/etc/passwd
系统的每一个合法用户帐号都对应于该文件中的一行记录。每行记录定义了一个用户帐号的属性。可以用#cat /etc/passwd 或者#vim /etc/passwd 打开查看。
passwd 文件中每行对应一个帐号,每个帐号由7 部分组成,各部分之间用“:”分隔。分别代表 用户名:用户密码(用x 密码占位符表示):UID (用户标识号):GID (用户基本组标识号):备注(用户全名及用户信息):用户家目录:默认使用的shell (命令解释程序)
/etc/shadow
Linux 将用户的口令(密码)保存在shadow 文件中,该文件不能被普通用户读取,只有root 用户才有权利读取。shadow 文件与passwd 文件一样,每个用户对应其中的一行,并且用8 个冒号分成了9 个部分(称为“域”)。如上图,每段分别表示
1 、用户名:与passwd 用户名相对应。
2 、用户密码:已被加密 如果它的开头是“$ 1 $” 这意味着基于MD5 算法的加密 !如果是在密码栏的第一个字符为* 或者是! ,表示此账号并不会被用来登入,如果是!!表示帐号被锁定(禁用),如果为空,表示用户不需要密码即可登陆。
3 、最近更动密码的日期:这个字段记录了更动密码的那一天的日期。注意:Linux 日期的时间是以1970/01/01 作为 1 ,而1971/01/01 则为366 ,所以这个日期是累加的天数是一个绝对时间!
4 、密码不可被更动的天数:如果是0 ,表示密码随时可以更动。如果在此期间修改系统会提示:You must wait longer to change your password passwd: Authentication token manipulation error
5 、密码必须在限制的天数内修改的天数:必须要在这个时间之内重新设定的密码,否则这个账号将会暂时失效。而99999 ,表示密码不需要重新输入!
6 、密码需要修改期限前的警告期限:当账号的密码失效期限快要到的时候,系统会依据这个字段的设定,发出警告(Warning: your password will expire in 5 days )给这个账号,提醒再过n 天密码就要失效了。。。
7 、密码过期的宽限时间:当密码失效后,还可以用这个密码在n 天内进行登入。 而在这个天数后还没有修改密码,账号就绝对失效了!
8 、账号失效日期:也是用1970 年以来的总天数设定。账号在此规定的日期之后,将无法再使用。通常应用在收费服务的系统中,可以规定一个日期让该账号不能再使用!
9 、保留:最后一个字段是保留的,看以后有没有新功能加入
用户组的信息保存在/etc/group 和/etc/gshadow 文件下
/etc/group
该文件记录了系统中所有用户组的信息,分为四段,各段含义如下:
1、 用户组名称:就是组的名字
2、 用户组密码:通常不需要设置,如果需要不一个用户临时加入其他组可能要用到。密码记录在/etc/gshadow 中。
3、 GID :用户组标识。
4、 用户列表:以该组为附加组的所有帐号(如果该组是某用户的基本组则该用户不再此段列出),每个用户用“,”隔开。
/etc/gshadow
与/etc/group 类似,也分为四个段,各段含义如下:
1、 用户组名称
2、 密码栏:同样的,开头为!表示无法登陆
3、 用户管理员帐号:
4、 该用户组的所属帐号:与/etc/group 内容相同。
帐号管理常用命令
1、 新增用户命令:useradd
语法:useradd[-c][-d][-e][-f][-g][-G group[,...]][-m[-k skeleton_dir]/-M]
[-s][-u[-o][-n][-r] username
选项:-c 【comment 】新帐号说明栏,对应于/etc/passwd 第五栏的内容。
-d 【home_dir 】设定用户的家目录,不设定时使用预设值。
-e 【expire_date 】帐号终止日期,日期的指定格式为MM/DD/YY 。
-f 【inactive_days 】帐号过期几日后永久停权。当值为0 时帐号则立刻被停权。而当值为-1 则关闭此功能。预设值为-1.
-g 【initial_group 】设置用户所属的组。
-G 【group ,[...] 】设置用户的附加组。
-m
-M 不建立使用者目录。
-n
-r 建立系统帐号。
-s 【shell 】使用者登录后使用的shell
-u uid 用户ID 值。
2 、添加密码命令:passwd
格式:passwd username
选项:
注释:使用useradd 建立帐号之后,默认情况,该帐号暂时被封锁,需要给他设置密码才能启用。passwd 常用的方式用两种,一种是root 用户帮其他用户设置或改密码,命令格式#passwd otherusername root 可以不用知道该用户的密码。另一种是用户自己改密码直接passwd 回车即开始更改。
3 、修改帐号信息命令:usermod
格式:usermod [-cdegGlsuLu] username
选项:-L 暂时冻结用户密码,让其无法登陆
-U 解冻用户密码。
4 、删除用户命令:userdel
语法:#userdel [-r] username
选项: -r : 连同用户的家目录也一起删了,不加则只删除帐号,不删除家目录。
用户组的管理:
1 、新增用户组命令:groupadd
语法:#groupadd [-g gid] [-r] groupname
选项:-g :后边接某个特定的GID, 用来指定GID
-r :建立系统用户组。
2 、修改用户组命令:groupmod
语法:groupmod [-g newgid] [-n newgroup_name] oldgroup_name
选项:-g :修改已有的用户组GID 号。
-n :修改已有的用户组名称。
注释:不要随意更改GID, 否则容易造成系统资源的混乱。
3 、删除用户组命令:groupdel
语法:groupdel [groupname]
注释:要删除一个用户组必须确认没有用户使用该组作为初始用户组。
4 、设置用户组密码:gpasswd
语法:#gpasswd [-r] groupname
选项: :如果没有参数,表示给groupname 设置密码。
-r :将groupname 的密码删除。
-R :让groupname 的密码栏失效,所以newgrp 就不能用了。