文章目录
- 账户及组的概念
- **用户:**
- 创建账户及组
- 删除账户及组
- 修改账户及组
- passwd
- gpasswd
- newgrp
- usermod
- groupmod
- 用户身份切换
- 账户与组文件解析
- 账户信息文件
- 账户密码文件
- 组账户信息文件
- 组账户密码文件
账户及组的概念
-
Linux系统对账户与组的管理是通过ID号来实现的,我们在登陆系统时,输入用户名与对应的密码,后台系统会将用户名转化为ID号后在判断该账户是否存在,并对比密码是否匹配
-
Linux中,用户ID号被称为UID,组ID称为GID
-
1~499之间的ID号系统会预留下来,这样我们创建的普通用户ID号会从500开始算起
-
Linux的组有基本组与附加组之分,一个用户只可以加入一个基本组中,但可以同时加入多个附加组,创建用户时,系统默认会自动创建同名的组,并设置用户加入该基本组中
用户:
超级用户:UID为0,GID也为0;root用户
系统用户:UID为201-999;用来管理和运行服务,系统用户的shell为/sbin/nologin,不让该用户登录
**一般用户:**UID为1000-60000;添加一般用户时,系统默认为该用户创建主目录和邮箱(/home/用户名)(/var/mail/用户名)
创建账户及组
useradd
useradd | [选项] | 用户名 | 说明 |
---|
| -c | | 设置账户描述信息,一般为账户全称 |
| -d | | 设置账户家目录,默认为/home/用户名 |
| -e | | 设置账户的失效日期,格式为 YYYY-MM-DD |
| -g | | 设置账户的基本组 |
| -G | | 设置账户的附加组,多个附加组中间用逗号隔开 |
| -M | | 不创建账户家目录,一般与-s结合使用 |
| -s | | 设置账户的登陆Shell,默认为bash |
| -u UID | | 指定账户UID |
[root@rhel8-3 ~]
[root@rhel8-3 ~]
[root@rhel8-3 ~]
groupadd
[root@rhel8-3 ~]
[root@rhel8-3 ~]
id
-
描述:显示账户及组信息
-
语法:id 用户名
[root@rhel8-3 ~]
uid=1000(redhat) gid=1000(redhat) 组=1000(redhat)[root@rhel8-3 ~]
uid=0(root) gid=0(root) 组=0(root)
删除账户及组
userdel
描述:删除账户及相关文件
语法:userdel [选项] 账户名称
选项:
-r 删除账户及相关文件(家目录)
[root@rhel8-3 ~]
[root@rhel8-3 ~]
groupdel
-
描述:删除组账户
-
语法:groupdel 组名
[root@rhel8-3 ~]
修改账户及组
passwd
passwd | [选项] | [账户名称] | 说明 |
---|
| | | 修改当前用户的密码 |
| | 用户 | 修改用户密码 |
| -d | 用户 | 快速清空账户密码,仅root可以使用此选项 |
| -l | 用户 | 锁定账户,仅root可以使用此选项 |
| -u | 用户 | 解锁账户 |
| --stdin | | 从文件或管道读取密码 |
[root@rhel8-3 ~]
[root@rhel8-3 ~]
[root@rhel8-3 ~]
[root@rhel8-3 ~]
[root@rhel8-3 ~]
[root@rhel8-3 ~]
gpasswd
gpasswd | [选项] | 组名 | 说明 |
---|
| | 组名 | 给组添加密码 |
| -r | 组名 | 删除组密码 |
| -a | 组名 | 添加用户到组 |
| -d | 组名 | 将指定用户移出本组(从附加组移除) |
| -M | 组名 | 设置组成员列表 |
| -A | 组名 | 指定组管理员为哪个用户 |
newgrp
-
描述:登陆一个新组
-
用法:newgrp [组名]
-
退出登录的组:exit
usermod
usermod | [选项] | 用户名 | 描述 |
---|
| -d | 用户名 | 修改账户家目录 |
| -e | 用户名 | 修改账户失效日期 |
| -g | 用户名 | 修改账户所属基本组 |
| -G | 用户名 | 修改账户所属附加组 |
| -s | 用户名 | 修改账户登陆shell |
| -u | 用户名 | 修改账户UID |
[root@rhel8-3 ~]
[root@rhel8-3 ~]
[root@rhel8-3 ~]
[root@rhel8-3 ~]
groupmod
选项:
-n 指定新组名
-g 修改gid信息
用户身份切换
su
su | [选项] | 说明 |
---|
| | 切换用户后,使用的是root的环境变量 不加用户,代表切换到root |
| - | 切换用户后,使用的是root的环境变量 不加用户,代表切换到root |
| -l | 与- 类似,也是login-shell的方式 不加用户,代表切换到root |
| -m | -m与-p是一样的,表示使用目前的环境变量设置,而不读取新用户的配置文件 |
| -c | 仅进行一次命令,所以-c后面可以加上命令 |
[root@localhost ~]
[root@localhost ~][m@bogon root]$ su root -c ls /root
su命令的缺点
- 普通用户必须知道root密码才可以切换到root,这样root密码就泄露了
- 使用su命令切换身份,无法对切换后的身份做精细的控制
sudo
$ vim /etc/sudoers
sodu useradd xiaobai
参数代表含义:
1、用户账号:系统哪个账号可以使用sudo这个命令。默认为root用户。
2、登录者的来源主机名:这个账号由哪台主机连接到本地Linux主机。默认值root可来自任何一台网络主机。
3、可切换的身份:这个账号可以切换成什么身份来执行后续的命令。默认root可以切换成任何人。
4、可执行的命令:这个命令最好使用绝对路径编写。默认root可以切换任何身份且进行任何命令。
ALL是关键字,代表任何身份、主机或命令。
账户与组文件解析
账户信息文件
账户信息被保存在/etc/passwd文件中,通过命令 cat /etc/passwd 查看文件内容如下:
[root@rhel8-3 ~]
文件以冒号为分隔符
第一列 root 为账户名称,第二列为密码占位符
第二列 x 表示该账户需要密码才可以登陆,为空时,账户无需密码即可登陆
第三列 0 为账户UID
第四列 0 为GID
第五列 root 为账户附加基本信息,一般存储账户名全称、联系方式等信息
第六列 /root 为账户家目录位置
第七列 /bin/bash 为账户登陆shell,/bin/bash为可登陆系统shell,/sbin/nologin表示账户无法登陆系统
账户密码文件
账户密码信息被保存在 /etc/shadow文件中,通过命令cat /etc/shadow 查看文件内容如下:
[root@rhel8-3 ~]
文件以冒号为分隔符
第一列 账户名称
第二列 为密码(账户未设置密码时为 !!,设置密码后加密显示)
第三列 为上次修改密码的时间距离1970年1月1日有多少天
第四列 为密码最短有效天数(密码至少使用多少天,0代表无限制)
第五列 为密码最长有效天数(默认99999可以理解为用不过期)
第六列 为过期前的告警天数(默认过期前提前7天警告,但进去告警日期后仍可以使用旧密码登陆系统)
第七列 为密码过期后的宽限天数(密码过期后,预留几天给账户修改密码,此时已经无法使用旧密码登陆系统)
第八列 为账户失效日期(从1970年01月01日起多少天后账户失效)
第九列 暂时保留未使用
组账户信息文件
组账户信息被保存在/etc/group 文件中,通过命令cat /etc/group 查看文件内容如下:
[root@rhel8-3 ~]
root:x:0:
bin:x:1:admin
daemon:x:2:
sys:x:3:
games:x:20:
...内容省略...
apache:x:48:
saslauth:x:76:
redhat:x:1000:
文件以冒号为分隔符
第一列 组账户名称
第二列 为密码占位符
第三列 为GID
第四列 为组成员信息(注意,这个仅显示附加,基本成员不显示)
组账户密码文件
组账户密码信息被保存在/etc/gshadow 文件中,通过命令 cat /etc/gshadow 查看内容如下
[root@rhel8-3 ~]
root:::
bin:::admin
daemon:::
sys:::
...省略中间内容...
saslauth:!::
redhat:!::
文件以冒号为分隔符
第一列 为组账户名称
第二列 为组密码(一般为组管理员密码)
第三列 为组管理员
第四列 为组成员(与/etc/group 第四列相同)
通过的方式可以为组设置密码,通过 可以为组添加管理员
[root@rhel8-3 ~]