前言
- 在Linux系统中,用户账户是登录系统的唯一凭证,其中root用户是系统的最高管理者,该用户的UID是0,与用户和组群账户相关的配置文件有/etc/passwd,/etc/shadow,/etc/group和/etc/gshadow。
一、 用户账户简介
1、 用户账户分类
- root用户
- root用户UID为0。root用户的权限是最高的,普通用户无法执行的操作,root用户都能完成,所以也称之为超级用户
- 系统用户
- 系统用户的UID为1~999
- 这类用户不具有登录Linux的能力,但却是系统运行不可缺少的用户。
- 普通用户
- 系统用户的UID为1000~60000
- 在Linux系统上进行普通操作,其使用系统的权限受限制。
2、 /etc/passwd文件
- 假设以账户zhangsan登录系统时,系统首先会检查/etc/passwd文件,存在zhangsan账户,然后确定用户zhangsan的UID,通过UID确认用户身份,如果存在,则读取/etc/shadow文件中对应的密码,核实无误,则登录系统,读取用户的配置文件
[root@centos83 home]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
..............(省略)..........
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:994:991:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
zhangsan:x:1000:1000::/home/zhangsan:/bin/bash
字段 |
字段含义 |
用户名 |
在系统中用户名应该具有唯一性 |
密码 |
存放加密用户的密码,看到的是一个x,其实密码已经被映射到/etc/shadow文件中 |
用户标识号(UID) |
每个用户的UID都是唯一的,root用户的UID是0,普通用户的UID默认从1000开始 |
组群标识号(GID) |
在系统内用一个整数标识用户所属的主要组群ID号,每个组群ID都是唯一的 |
用户名全称 |
用户名描述,可以不设置 |
主目录 |
用户登录系统后首先进入的目录 |
登录shell |
用户使用的Shell类型,Linux系统默认使用的Shell是/bin/bash |
2、 /etc/shadow文件
- /etc/shadow文件内容包括用户及被加密的密码以及其他/ect/passwd不能包括的信息,比如账户有效期等
- /etc/shadow文件只有root用户可以读取和操作,确保系统安全
[root@centos83 home]# cat /etc/shadow
root:$6$Uq9EeN5GfNDLF83M$csUva0exzO/n3PIvhKv5D1Xs3Ga06G2whjfagtEtJUW1wlQbREEd6HkOjTRCTqGuZCXvg2WQ1wdyzqY.qfAzE1::0:99999:7:::
bin:*:18397:0:99999:7:::
..............(省略)..........
sshd:!!:18625::::::
rngd:!!:18625::::::
zhangsan:$6$HMTy.raoMPbhboQn$71FPRHyRycVf3AcenfNW1n7/qD7ep.x5vSeBSSxzJdWmvjoQ98oDhfA8Kz/6PlOgKe/ksj58AXeWBPOGAm/dl1:18625:0:99999:7:::
字段 |
字段含义 |
用户名 |
这里的用户名和/etc/passwd中的相同 |
加密密码 |
密码已经加密,如果由用户显示"!!",则表示这个用户还没有设置密码,无法登录到系统 |
用户最后一次更改密码的日期 |
从1970年1月1日算起到最后一次修改密码的时间间隔天数 |
密码允许更换前的天数 |
如果设置为0,则禁用此功能。该字段指定用户可以更改密码的天数 |
密码需要更换的天数 |
如果设置为0,则禁用此功能。该字段指定用户必须更改密码的天数 |
密码更换前警告的天数 |
用户登录系统后,系统登录程序提醒用户密码即将过期 |
账户被取消激活前的天数 |
表示用户密码过期多少天后,系统会禁用此用户 |
用户账户过期日期 |
指定用户账户禁用的天数(从1970年1月1日开始到账户被禁用的天数),如果这个字段的值为空,账户可以永久使用 |
保留字段 |
目前为空,为将来发展做预留 |
二、 用户账户设置
1、useradd:创建用户
- 创建用户
- 创建用户并设置UID为1010
- 创建用户并设置用户所属群组为root
- 创建系统用户mysql并设置所属组群
- useradd -r -g mysql mysql
选项 |
选项含义 |
-d <主目录> |
新账户每次登录时所使用的主目录 |
-e <过期日> |
设置账户的有效期限,日期格式为MM/DD/YY |
-f <失效日> |
设置密码过期多少天后为失效状态 |
-c <用户名全称> |
设置用户账户的用户名全称(描述) |
-g <主要组群名> |
指定用户账户所属的主要组群。 |
-G <次要组群名> |
指定用户账户为多个次要组群的成员,每个组群使用“,”来分隔 |
-m |
用户主目录如果不存在则自动建立 |
-r |
创建系统用户账户,不会创建用户主目录,也不会响应在文件/etc/login.defs中定义的值 |
-u <用户UID> |
用户的UID,数字不可以为负值 |
2、 usermod:修改用户账户
- 修改用户pp的登录名为moon
- 修改用户moon账户过期时间为2028年11月23日
- usermod -e 11/23/2028 moon
- 修改用户moon的主目录到/home/oopp,并自动创建目录
- usermod -d /home/oopp -m moon
选项 |
选项含义 |
-m |
移动主目录的内容到新的位置 |
-l <新登录名> |
修改用户账户名称 |
-u <用户UID> |
修改用户UID |
-c <用户名全称> |
修改用户账户的用户名全称 |
-d <主目录> |
修改用户登陆时的主目录,如果指定-m选项,用户旧目录会移动到新的目录中,如果旧目录不存在,则创建新目录 |
-e <过期日> |
修改账户的有效期限,日期格式为MM/DD/YY |
-f <失效日> |
修改在密码过期后多少天即设定密码为失效状态 |
-g <主要组群名> |
修改用户所属的主要组群 |
-G <次要组群名> |
修改用户所属的次要组群(附加组群) |
3、 userdel:删除用户账户
- 删除用户moon
- 删除用户的同时删除用户主目录
选项 |
选项含义 |
-r |
删除用户时,把用户的主目录和本地邮件存储的目录或文件一同删除 |
-f |
强制删除用户 |
三、组群账户简介
1、 组群账户分类
-
分类法一
- 私有组群
- 创建新用户时,如果没有指定该用户所属那一组群,则Linux会自动创建同名组群,此时这个组群就是私有组群
- 将其他用户加入到这个私有组群中,会使这个组群变为标准组群
- 标准组群
- 也称为普通组群,可以包含多个用户账户
- 如果使用标准组群,则在创建新用户时,应该指定该用户所属组群
-
分类法二
- 主要组群
- 当一个账户属于多个组群成员时,登录后所属组群便是主要组群,其他组群是次要组群,一个用户账户智能属于一个主要组群
- 次要组群
- 也称之为附加组群,一个用户账户可以属于多个次要组群
2、 /etc/group文件
-
文件简介
- 内容包括组群名、组群密码、GID及该组群所包含的用户
- 比如把某一用户加入到root组群,那么这个用户就可以浏览root用户主目录的文件
- 如果root用户把某个文件的读写执行权限开放,root组群的所有用户就都可以修改此文件
- 如果是可执行文件,root组群的用户也是可以执行的
[root@centos83 home]# cat /etc/group
root:x:0:
bin:x:1:
..............(省略)..........
sshd:x:74:
rngd:x:991:
zhangsan:x:1000:
字段 |
字段含义 |
组群名 |
组群名称 |
组群密码 |
存放加密的组群密码,看到一个x,密码已经被映射到/etc/gshadow文件中 |
组群标识号(GID) |
在系统内用一个整数标识组群GID,每个GID都是唯一的,默认普通组群GID从1000开始,root组群GID是0 |
组群成员 |
属于这个组群的成员,如root组群的成员有root用户 |
- 组群GID范围查看
//查看系统创建组群默认的GID范围
[root@centos83 ~]# cat /etc/login.defs |grep GID
GID_MIN 1000
GID_MAX 60000
3、 /etc/gshadow文件
- /etc/gshadow是/etc/group的加密文件,组群密码存放在此文件中
- /etc/gshadow和/etc/group是互补的两个文件
- 对于大型服务器,需要针对很多用户和组群,定制比较复杂的权限模型。设置组群密码是很有必要的
[root@centos83 ~]# cat /etc/gshadow
root:::
bin:::
daemon:::
sys:::
..............(省略)..........
zhangsan:!::
字段 |
字段含义 |
组群名 |
组群的名称 |
组群密码 |
密码已加密,如果组群显示的是“!”,表示这个组群没有密码 |
组群管理者 |
组群的管理者有权在该组中添加、删除用户 |
组群成员 |
属于该组群的用户成员列表,如有多个用户则用逗号分隔 |
四、 组群账户设置
1、 groupadd:创建组群账户
- 创建组群china
- 创建GID为1300的组群ous
- 创建系统族群chinese
- groupadd -r chinese
- // cat /etc/group |grep chinese命令查看用户gid为978,1000以内均为系统组群
选项 |
选项含义 |
-g |
为组群设置GID |
-r |
创建系统组群 |
-o |
允许使用和别的组群相同GID创建组群 |
-f |
即使组群存在,还是强制创建组群 |
-p <密码> |
为新组群设置加密的密码 |
2、 groupmod:修改组群账户
- 修改china的GID为1400(修改的GID必须是新的。否则使用-o)
- 修改组群名称为suhai
选项 |
选项含义 |
-g |
设置GID |
-o |
重复使用组群GID |
-n <新组群名> |
更改组群名称 |
3、 groupdel:删除组群账户
- 删除时,如果该组群中仍旧包括某些用户,必须先删除这个用户后才能删除组群
- 删除组群china
五、 用户和组群账户维护
1、 passwd:设置用户密码
-
为用户china添加密码
-
删除用户china密码
2、 gpasswd:组群管理
- 把用户china添加到已有的组群group1中
- 从组群group1中删除china用户
选项 |
选项含义 |
-a <用户> |
将一个用户加入到一个组群中 |
-d <用户> |
将一个用户从一个组群中移除 |
3、 su:切换用户
- 切换用户china,但是不切换环境
- 切换用户china,并切换环境
- 从china用户切换到root用户
- su 或者 su -
- 切换root用户不需要写root名称
ps:加了"-",是以login shell登陆的,所以会设置环境变量,也会将目录变更到用户所属目录下;如果不加,使用的还是切换前用户的环境变量,有时候会出错,看情况使用
4、 groups:显示组群成员
[wuyiz@centos83 ~]$ groups wuyiz
wuyiz : wuyiz suhai
5、 id:显示用户UID及该用户所属组群的GID
[wuyiz@centos83 ~]$ id
uid=1000(wuyiz) gid=1000(wuyiz) 组=1000(wuyiz),1001(suhai) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023