概述:
su 可以切换到用户 user,执行时需要输入目标用户的密码
sudo 可以以特权级别运行 cmd 命令,需要当前用户属于 sudo 组,且需要输入当前用户的密码(在/etc/sudoers 中查看)
su - 命令也是切换用户,同时环境变量也会跟着改变成目标用户的环境变量
常用命令:
用户基本信息- /etc/passwd
记录用户的基本信息,每行代表一个用户
每一行包含 7 个字段,用“:”分隔
用户密码信息- /etc/shadow
记录用户密码相关信息,每行代表一个用户
每一行包含 9 个字段,用“:”分隔
只有 root 用户可以查看
用户组配置文件- /etc/group
记录用户组信息,每行代表一个用户组
每一行包含 4 个字段,用“:”分隔
新增用户-useradd
-d homedir:指定用户的主目录,必须是绝对路径
-u uid:指定用户的 UID
-g gid | gname:指定用户主组的 GID 或组名,必须是已经存在的组
-G groups:指定用户的附加组,如果有多个附加组就用“,”分隔
-m:强制建立用户的主目录,这是普通用户的默认值
-M:不要建立用户的主目录,这是系统用户的默认值
-s shell:指定用户的默认 Shell
-c comment:关于用户的简短描述,也就是 /etc/passwd 第 5 列的内容
-r:创建一个系统用户(UID 在 1000 以内)
-e expiredate:指定账号失效日期,即 /etc/shadow 的第 8 列,格式为YYYY-MM-DD
-f inactive:用户密码到期后的宽限天数,即 /etc/shadow 的第 7 列。0 表示立即失效,-1 为永远不失效
[root@localhost ~]# useradd ji //新增用户ji
[root@localhost ~]# grep ji /etc/passwd //在 /etc/passwd 文件中新增一行与新用户相关的数据
niu:x:1001:1001::/home/ji:/bin/bash
[root@localhost ~]# grep ji /etc/shadow //在 /etc/shadow 文件中写入一行与新用户相关的密码数据
niu:!!:19112:0:99999:7:::
[root@localhost ~]# grep ji /etc/group //在 /etc/group 文件中新增一行与新用户同名的用户组
niu:x:1001:
[root@localhost ~]# ls -ld /home/ji //在 /home 目录下创建与新用户同名的目录作为新用户的主目录
drwx------. 3 ji ji 78 4月 30 10:14 /home/ji
设置用户密码-passwd
-l:锁定用户,即“lock”。在 /etc/shadow 的第一列前加“!”使密码无效,只有 root 用户可以使用这个选项
-u:解锁用户,即“unlock”,作用与-l选项相反,只有 root 用户能够使用
-S:查询用户密码的相关信息,也就是 /etc/shadow 文件的内容
-n mindays:密码修改后多长时间内不能再修改密码,即 /etc/shadow 第 4 列的内容
-x maxdays:密码有效期,即 /etc/shadow 第 5 列的内容
-w warndays:密码过期前的警告天数,即 /etc/shadow 第 6 列的内容
-i inactivedays:密码失效日期,即 /etc/shadow 第 7 列的内容
-c comment:关于用户的简短描述,也就是 /etc/passwd 第 5 列的内容
[root@localhost ~]# passwd ji // 以root用户身份修改zys用户的密码
更改用户 ji的密码 。
新的 密码:
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
用户修改自己的密码:
注意:普通用户修改密码有三点不同
第一,普通用户只能修改自己的密码
第二,普通用户修改密码前必须输入原密码
第三,普通用户设置的密码必须满足密码复杂性要求
[ji@localhost ~]$ passwd // 为自己修改密码
更改用户 ji的密码 。
为 ji 更改 STRESS 密码。
(当前)UNIX 密码: //在这里输入原密码
新的 密码: //在这里输入新密码
无效的密码: 密码少于 8 个字符 //新密码不满足复杂性要求
新的 密码: //重新输入新密码
重新输入新的 密码: //再次输入新密码
passwd:所有的身份验证令牌已经成功更新。
修改用户信息-usermod
用法和 useradd 非常类似!
删除用户-userdel
[root@localhost ~]# userdel -r ji 删除用户shaw,并删除用户主目录
[root@localhost ~]# grep ji /etc/passwd
[root@localhost ~]# grep ji /etc/shadow
[root@localhost ~]# grep ji /etc/group
[root@localhost ~]# ls -d /home/ ji
ls: 无法访问/home/ ji: 没有那个文件或目录 //用户主目录一同被删除
创建用户组 - groupadd 命令
使用 -g 选项手动指定用户组ID
[root@localhost ~]# groupadd jiji // 新增用户组
[root@localhost ~]# grep jiji /etc/group //在/etc/group文件中添加用户组信息
jiji:x:1001:
修改用户组信息 - groupmod 命令
功能:修改用户组信息(不建议更改)
使用 -g 选项修改GID
使用 -n 选项修改组名
[root@localhost ~]# grep jiji /etc/group
jiji:x:1001: // 原GID为1001
[root@localhost ~]# groupmod -g 1100 jiji // 修改GID
[root@localhost ~]# grep jiji /etc/group
jiji:x:1100: // GID已修改为1100
[root@localhost ~]# groupmod -n jih jiji //修改组名
[root@localhost ~]# grep jih /etc/group
jih:x:1100: //组名已修改为jih
删除用户组 - groupdel 命令
不能删除用户的主组!
[root@localhost ~]# grep jih /etc/group //查找用户组jih
jih:x:1100:
[root@localhost ~]# groupdel jih //删除用户组jihr
[root@localhost ~]# grep jihr /etc/group //删除成功
[root@localhost ~]# groupdel an //删除主组
groupdel:不能移除用户“an”的主组
id 和 groups 命令
id 命令功能:查看用户的 UID、GID 和附加组信息
groups 命令功能:显示用户的组信息,与 id -Gn 命令效果相同
[root@localhost ~]# id an //查看an用户的相关信息
uid=1000(an) gid=1000(an) 组=1000(an)
[root@localhost ~]# groupadd ji
[root@localhost ~]# usermod -G ji an // 将an用户添加到ji组中
[root@localhost ~]# id an
uid=1000(an) gid=1000(an) 组=1000(an),1001(ji)
[root@localhost ~]# groups an //查看用户组信息
an : an ji
groupmems 命令
功能:把用户添加到或移出用户组
选项 | 功能说明 |
-a username | 把用户添加到组中 |
-d username | 从组中移除用户 |
-g grpname | 目标用户组 |
-l | 显示组成员 |
-p | 删除组内所有用户 |
[root@localhost ~]# groupmems -lg ji // 查看用户组内有哪些用户
an
[root@localhost ~]# groupmems -d an -g ji // 从ji组中移除用户an
[root@localhost ~]# groupmems -lg ji //用户组ji为空
[root@localhost ~]#
newgrp 命令
功能:修改用户的有效组,作为创建文件的属组
[root@localhost ~]# groupmems -a an -g ji // 向ji组中添加用户an [root@localhost ~]# groupmems -lg ji an [root@localhost ~]# su an [an@localhost root]$ cd ~ [an@localhost ~]$ cd 20220430 [an@localhost 20220430]$ groups an // 当前登录用户是an an : an ji // 主组是an,同时属于附加组ji [an@localhost 20220430]$ touch a [an@localhost 20220430]$ newgrp ji // 设置devteam为有效用户组 [an@localhost 20220430]$ touch b [an@localhost 20220430]$ ls -l 总用量 0 -rw-rw-r--. 1 an an 0 4月 30 11:23 a // a的属组是an -rw-r--r--. 1 an ji 0 4月 30 11:24 b // b的属组是ji