这一章开始为大家介绍Linux的用户管理,很多教材对于用户管理这块,一上来就为大家介绍用户管理的各种命令。而我先从用户管理的配置文件开始讲起,因为我们要理解用户管理的原理以及各种概念。我们先来了解下用户管理的配置文件。
配置文件信息 | 文件名称 |
---|---|
用户信息文件 | /etc/passwd |
密码文件 | /etc/shadow |
用户组文件 | /etc/group |
用户组密码文件 | /etc/gshadow |
用户配置文件 | /etc/login.defs , /etc/default/useradd |
新用户信息文件 | /etc/skel |
登录信息 | /etc/motd |
一、用户信息文件
用户信息文件是 /etc/passwd
,首先我们来看下这个文件的里面的格式:
$ vi /etc/passwd
这个文件里面保存了所有Linux的用户信息,每一行信息代表一个用户,我们可以看到我这个系统里面总共有44个用户。每一行信息是什么意思呢?我们先来看下这个文件的帮助信息:
$ man 5 passwd
可以看到文件格式是:
name:password:UID:GID:GECOS:directory:shell
因此可以了解到,每一行信息包含了7个部分内容,每个部分是用:
分隔,每个部分信息代表如下:
字段 | 含义 |
---|---|
name(用户名) | 用户登录系统时使用的用户名 |
password(密码) | 密码位 |
UID | 用户标识号 |
GID | 缺省组标识号 |
GECOS(注释性描述) | 例如存放用户全名等信息 |
directory(宿主目录) | 用户登录系统后的缺省目录 |
shell(命令解释器) | 用户使用的Shell,默认为bash |
-
用户名:不要太长,建议最长8位即可,不要用特殊字符
-
密码位:这里为什么叫密码位而不是叫密码呢?因为在这里并没有真正的存放密码。不过在最早的UNIX里面,这里确实是存放的密码。目前这里用
x
来占位 -
用户标识号:Linux的内核它是不认识字母的,只认识数字。也就是说内核操作的每一个对象,无论是进程、用户、用户组等,它都需要有一个数字标识。用户的数字标识就是
UID
Linux用户分为三种:超级用户(root,UID=0);普通用户(UID 500-60000);伪用户(UID 1-499)。因此在这里纠正一个很多同学的误解,很多同学认为只有root才是超级用户,其实不是,而是UID=0的用户就叫超级用户。
-
缺省组标识号:每个用户至少要属于一个用户组;每个用户组可以包括多个用户;同一组的用户享有该组共有的权限
-
注释性描述:对用户信息进行描述说明,可以方便以后用户管理
-
宿主目录:每个用户在系统中必须有一个宿主目录。在添加用户的时候,如果不指定宿主目录,自动会在
/home
目录添加一个和用户同名的目录
二、用户密码文件
用户密码文件是/etc/shadow
,这里文件里面保存的用户真正的密码。我们先来看一下这个文件内容:
$ vi /etc/shadow
这个文件里面保存了所有Linux的用户信息,同样的每一行信息代表一个用户的密码,在上一步我们查看用户信息文件的时候,发现共有44个用户,那么这里同样会有44个密码。每一行信息是什么意思呢?我们先来看下这个文件的帮助信息:
这里最重要的其实就是两个部分,一是登录的用户名login name
,另外一个是加密的密码encrypted password
。
可以了解到,每一行信息包含了7个部分内容,每个部分是用:
分隔,每个部分信息代表如下:
字段 | 含义 |
---|---|
用户名 | 用户登录系统时使用的用户名 |
最后一次修改时间 | 用户最后一次修改密码的天数 |
最小时间间隔 | 两次修改密码之间的最小天数 |
最大时间间隔 | 密码保持有效的最多天数 |
警告时间 | 从系统开始警告到密码失效的天数 |
账号闲置时间 | 账号闲置时间 |
时间 | 密码失效的绝对天数 |
掌握了这两个配置文件之后,其实我们就可以手动去创建一个用户了,不用通过useradd
命令去创建了,下面给大家演示一下。
三、手动创建系统用户
- 1、在
/etc/passwd
文件中添加一个用户基础信息:
$ vi /etc/passwd
在这里我们添加一个叫eddy
的普通用户,按Esc
,然后输入:wq!
保存退出。然后我们需要创建该用户的宿主目录:
$ mkdir /home/eddy
创建完成之后,我们发现该目录的所有者是属于root
,因此要把这个目录的所有者改成刚才新建的用户eddy
:
$ chown eddy /home/eddy
- 2、在
/etc/shadow
文件中添加用户的密码信息:
$ vi /etc/shadow
然后添加一行密码信息,这里我们设置密码为空,保存退出,这样我们就手工添加了一个用户。
我们现在用eddy
用户就可以去登录了。
四、新用户信息文件
新用户信息文件存在于目录/etc/skel
目录:
$ ls -a /etc/skel
这里用到了-a
参数来显示隐藏的文件,因为这个目录里面的文件都是隐藏文件。我们在使用命令创建新用户的时候,系统会自动把这个这个目录里面的文件复制到新用户的宿主目录下面去。
五、用户配置文件:
1、 /etc/login.defs
,这里记录了用户的一些默认配置,我们打开这个文件来看一下:
$ vi /etc/login.defs
从这个文件中可以看到,在前面讲用户信息文件/etc/passwd
和用户密码文件/etc/shadow
的时候的一些配置,在这里都有默认值。也就是说用命令创建用户的时候,从这里读取一些默认配置。
设置项 | 含义 |
---|---|
MAIL_DIR | /var/spool/mail 创建用户时,系统会在目录 /var/spool/mail 中创建一个用户邮箱 |
PASS_MAX_DAYS | 99999 密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数,相当于 273 年,可理解为密码始终有效。 |
PASS_MIN_DAYS | 0 表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0。 |
PASS_MIN_LEN | 5 指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效。 |
PASS_WARN_AGE | 7 指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天。 |
UID_MIN | 500 指定最小 UID 为 500,也就是说,添加用户时,默认 UID 从 500 开始。注意,如果手工指定了一个用户的 UID 是 550,那么下一个创建的用户的 UID 就会从 551 开始,哪怕 500~549 之间的 UID 没有使用。 |
UID_MAX | 60000 指定用户最大的 UID 为 60000。 |
GID_MIN | 500 指定最小 GID 为 500,也就是在添加组时,组的 GID 从 500 开始。 |
GID_MAX | 60000 用户 GID 最大为 60000。 |
CREATE_HOME | yes 指定在创建用户时,是否同时创建用户主目录,yes 表示创建,no 则不创建,默认是 yes。 |
UMASK | 077 用户主目录的权限默认设置为 077。 |
USERGROUPS_ENAB | yes 指定删除用户的时候是否同时删除用户组,准备地说,这里指的是删除用户的初始组,此项的默认值为 yes。 |
ENCRYPT_METHOD | SHA512 指定用户密码采用的加密规则,默认采用 SHA512,这是新的密码加密模式,原先的 Linux 只能用 DES 或 MD5 加密。 |
2、 /etc/default/useradd
$ vi /etc/default/useradd
GROUP
表示缺省的所属组HOME
表示缺省的宿主目录INACTIVE
账户缺省是否禁用:-1 表示未禁用EXPIRE
账户的失效时间,有时候需要临时创建一些账号,那么就可以指定失效时间SHELL
默认使用哪个shellSKEL
新用户信息文件模板目录CREATE_MAIL_SPOOL
是否创建邮箱文件
用户管理的配置文件就介绍到这里了,大家需要重点掌握用户信息文件和用户密码文件。