Linux学习之用户管理
/etc/passwd
Linux系统将用户信息保存在文件/etc/passwd中
文件中一行代表一个用户,所以文件有多少行就代表系统有多少用户。每一行都被用冒号隔开分成7个字段,我们先了解下这些字段所代表的意义
以第一行系统管理员账户root来说明
字段1:root------代表用户名
字段2:X------代表此用户的登录密码,出于安全性考虑,此文件中的密码都以X展示,用户真正的密码被保存在影子文件中,也就是/etc/shadow中
字段3:0------代表此用户的UID(用户ID)
字段4:0------代表此用户的GID(用户所属组ID)
字段5:root------用户的详细描述
字段6:/root------用户的家目录
字段7:/bin/bash------用户使用的脚本类型
UID为0,即为root,拥有系统的最高权限。1-499则为系统保留账号,用户创建的账号往往在500以后
/etc/shadow
与/etc/passwd相似,/etc/shadow被冒号分割成了9个字段
字段1:用户账号,如root。这个字段代表的用户账号一定存在于/etc/passwd中
字段2:密码,此密码为加密的密码。以$6$开头的,如root用户的密码,代表使用SHA-512加密的;$1$,代表用MD5加密;$2$,代表用Blowfish加密;$5$,代表用SHA-256加密。我们也会看到图中有的账户密码是"*"或者"!!",这些特殊的字符往往代表特殊的含义。"*"代表账号被锁定,"!!"代表密码已过期
字段3:最近一次修改密码的日期。但是我们会注意到,这个字段并不是以我们所熟识的日期格式来显示,而是以诸如17110这样的数字来显示。原因是Linux将1970年1月1日作为1,17110即为1970年1月1日到上次修改密码之间的天数
字段4:密码不可被更改的天数。如果是0,表示随时可以修改,如上图,root账户可以随时修改自己的密码;而如果是8或20这样大于0的数,表示此账户在8天或20天内不可修改密码
字段5:密码需要修改的期限。如果是99999,如root,表示可以用户不用改,而如果是其他数字,如12345,则表示在距离1970年1月1日的12345天内必须修改密码,否则密码失效
字段6:密码变更期限前的警告期限。如果第5个字段设置了密码必须在某一天被修改,那么系统将会在此字段设置的天数前向用户发出修改密码的警告,如此字段设置为6,则会在密码需要修改权限的前6天向用户发出警告
字段7:密码的失效日期,这个日期跟字段3一样,以距1970年1月1日的天数来定。假设设置为M天,这账号过期的M天内密码是可以修改的,修改之后账户可以继续使用
字段8:账号的失效日期,同字段3,如果被被设置为N天,则在N天后,账号无法使用
字段9:系统保留字段,暂无实际意义
用户账号操作
在了解了账号的一些信息之后,我们会有创建用户、修改用户、删除用户的需求
创建或新增一个用户账号,我们可以用useradd命令来完成
如我们新增一个test用户后,再查看/etc/passwd系统已经生成了此用户的相关信息,系统会为用户创建一个GID与UID相同的组,以及默认的家目录及shell类型
我们也可以使用useradd的其他参数来帮助我们创建符合要求的账户
如:useradd -p 123456 testUser 在创建用户testUser时,给其指定一个密码
查看/etc/passwd,系统已经生成了相关信息。既然我们给用户指定了密码,那么我来查看一下密码文件
我们可以看到在第二个字段,已经保存了在创建时给定的密码。
在解释/etc/shadow文件时,我们了解到此文件保存的密码都是密文,而testUser用户的密码为何却是明文呢?我们来看一下useradd -p参数的使用方法
原来,useradd -p之后的密码应该是经过加密后的密码(encrypted password),因为创建testUser时的密码没有加密,所以/etc/shadow中才会明文显示
useradd -u 1666 testUser1 在创建testUser1时,指定其UID
useradd -g 1000 testUser2 在创建testUser2时,指定其GID
值得注意的是,给用户指定的GID,必须是真实存在系统中的,否则会报:useradd : group '1000' does not exist
其他还有很多的参数共我们使用,当我们想了解一个命令的详细用法时,可以使用"man 命令"来查看此命令的详细用法
在创建完用户后,我们可能会需要修改用户的相关信息,此时usermod可以帮助你来完成这项工作
如修改testUser1的GID和UID
testUser1的原始UID和GID都是1666,现在我们用usermod来修改
经过修改之后,/etc/passwd中testUser1的GID和UID便改变了,与useradd相同,更改的GID必须是系统里真实存在的
usermod还有很多其他有用的参数
我们在日常的使用中会逐渐熟悉它们
修改用户的密码 如 : passwd testUser1 修改testUser1的密码
系统会让输入新密码及确认密码,当密码过短或过于简单时,系统会给出警告信息
再查看/etc/shadow时,testUser1已被设置了新密码
删除用户 userdel testUser2 删除testUser2
我们可以看到,testUser2已经被删除