快速上手Linux核心命令(十一):Linux用户相关命令_run useradd -g inspur -m inspur -u 2000

Changing password for user xiezhr.
passwd: all authentication tokens updated successfully.


⑤ 设置xiezhr用户7天内不能更改密码,60天以后必须修改密码,过期10天通知用户,过期30天后禁止用户登录



[root@xiezhr ~]# passwd -n 7 -x 60 -w 10 -i 30 xiezhr
Adjusting aging data for user xiezhr.
passwd: Success


#### chage 修改用户密码有效期


1、简介



> 
> chage 命令用于查看或修改用户密码有效期
> 
> 
> 


2、语法格式



chage [参数选项] [用户名]


3 、参数选项




| 参数 | 参数说明 |
| --- | --- |
| -d | 设置上一次密码更改的日期 |
| -E | 账号过期的日期。日期格式:YYYY-MM-DD |
| -I | 设置密码过期多少天后禁用账户 |
| -l | 显示账号有效期信息 |
| -m | 密码可更改的最小天数。默认为0,即任何时候都可以修改 |
| -M | 密码保持有效的最大天数 |
| -W | 密码到期前,提前收到警告信息天数 |


4、实践操作  
 设置xiezhr用户7天内不能更改密码,60天以后必须修改密码,过期10天通知xiezhr 用户,过期30天后禁止用户登录



[root@xiezhr ~]# chage -m 7 -M 60 -W 10 -I 30 xiezhr


#### 批量更新用户密码


1、简介



> 
> chpasswd 命令用于从标准输入中读取一定格式的用户名、密码来批量更新用户的密码,格式为“用户名:密码“
> 
> 
> 


2、语法格式



chpasswd [参数选项]


3、参数选项




| 参数 | 参数说明 |
| --- | --- |
| -c | 默认格式是明文密码,使用-e参数则需要加密的密码 |


4、实践操作  
 批量修改密码



[root@xiezhr ~]# chpasswd # 输入chpasswd后,回车
xiezhr:123456 # 格式为用户名:密码
testxiezhr:123456 # 一行一个
# 新行按Ctrl+D 结束


#### su 切换用户


1、简介



> 
> su 命令用户将当前用户切换到指定用户或以指定用户的身份执行命令或程序
> 
> 
> 


2、语法格式



su [参数选项] [用户名]


3、参数选项




| 参数 | 参数说明 |
| --- | --- |
| -, -l, --login | 切换用户的同时,将用户的家目录/系统环境等重新按切换后的用户初始化 |
| -c | 向Shell 传递单个命令 |


4、实践操作  
 ① 切换到普通用户



切换到testxiezhr用户,不用输入密码即可切换

[root@xiezhr ~]# su - testxiezhr


②切换到root用户



虽然已经切换到了root用户,但是家目录还是testxiezhr。环境变量还是testxiezhr用户的,**这种切换问题很严重**

[testxiezhr@xiezhr ~]$ su root
Password: # 普通用户切换到root用户需要输入密码
[root@xiezhr testxiezhr]# pwd
/home/testxiezhr

正确切换方式

[root@xiezhr testxiezhr]# exit
exit
[testxiezhr@xiezhr ~]$ su - root
Password: # 需要输入密码
Last login: Mon Sep 5 21:13:39 CST 2022 on pts/3
[root@xiezhr ~]# pwd
/root


**注意:**  
 [x] “su 用户名” 虽然能切换到对应用户,但切换后的环境变量信息还是切换之前用户的  
 [√] \*\* ”su - 用户名“ 不但可以切换到对应用户,还能将环境变量一起切换\*\*


#### visudo 编辑sudoers文件


1、简介



> 
> visudo命令是专门用来编辑 /etc/sudoers这个文件的,同时提供语法检查等功能。 /etc/sudoers文件是sudo命令的配置文件。sudo命令在下一个命令你会看到。而为什么不用vi/vim来直接编辑/etc/sudoers文件呢? 因为如果使用vim 编辑sudoer文件时没有语法校验,编辑错了会导致授权无法生效
> 
> 
> 


2、语法格式



visudo [参数选项]


3、参数选项




| 参数 | 参数说明 |
| --- | --- |
| -c | 手动执行语法检查 |


4、实践操作  
 ①将xiezhr用户提权为root身份,testxiezhr 用户具有添加和删除用户的权限



以下命令相当于 vim /etc/sudoers 进行编辑sudoers文件

[root@xiezhr ~]# visudo

#在/etc/sudoers 文件中添加如下权限
xiezhr ALL=(ALL) ALL # 此行时将xiezhr用户提权为root身份
testxiezhr ALL=(ALL) /usr/sbin/useradd, /usr/sbin/userdel # 授予可以以root身份添加和删除用户权限


上面操作说明




| 待授权的用户或组 | 机器=(授权角色) | 可以执行的命令 |
| --- | --- | --- |
| testxiezhr | ALL=(ALL) | /usr/sbin/useradd,/usr/sbin/userdel |


② 通过-c参数校验语法是否正确  
 通过① 我们已经对xiezhr用户和testxiezhr用户做了不同的授权,那么怎么判断授权的语法是否正确呢



[root@xiezhr ~]# visudo -c
/etc/sudoers: parsed OK
/etc/sudoers.d/90-cloud-init-users: parsed OK


**直接root用户下操作不就可以了么?为什么要通过sudo授权呢?**  
 我们希望一个用户具有root权限去干活,但是又不希望这个用户威胁系统安全。


#### sudo 以另一个用户身份执行命令


1、简介



> 
> sudo 命令可以让普通用户拥有超级用户的权限去执行指定的命令或程序。普通用户不需要知道root密码就可以得到授权,授权我们在上面已经说过
> 
> 
> 


2、语法格式



sudo [参数选项]


3、参数选项




| 参数 | 参数说明 |
| --- | --- |
| -l | 列出当前用户可以执行的命令。只有在sudoers 文件里的用户才能使用该选项 |
| -h | 列出使用方法,并退出 |
| -H | 将环境变量中的HOME(家目录)指定为要变更身份的使用者家目录 |
| -V | 显示版本信息,并退出 |
| -v | sudo在第一次执行时,或者在N分钟内没有执行,则会询问密码,参数用于重新做一次确认 |
| -u | 以指定用户的身份执行命令 |
| -k | 清除时间戳上的实践,下次再次使用sudo时要再此输入密码 |
| -K | 与k类似,同时还删除时间戳文件 |
| -b | 在后台执行指定命令 |
| -p | 更改询问密码时的提示语 |
| -e | 不执行命令,而是修改文件,相当于sudo edit |


4、sudo 工作原理  
 ![sudo工作原理](https://img-blog.csdnimg.cn/dd7f64c6da8345c9b9a32e7d6f00b91d.png)


5、实践操作  
 **创建一个testuser 用户,并对testuser进行sudo授权管理。授权完成后sudo操作**



1、创建testuser 用户

[root@xiezhr ~]# useradd testuser

2、将testuser 用户密码修改为******

[root@xiezhr ~]# passwd testuser
Changing password for user testuser.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

3、执行以下命令后添加 testuser ALL=(ALL) ALL 对testuser用户进行sudo授权 参照下图

[root@xiezhr ~]# visudo
testuser ALL=(ALL) ALL

4、登录testuser 用户,查看 当前用户被授予的sudo权限集合

[testuser@xiezhr ~]$ sudo -l
Matching Defaults entries for testuser on xiezhr:
!visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep=“COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS”,
env_keep+=“MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE”, env_keep+=“LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES”,
env_keep+=“LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE”, env_keep+=“LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY”,
secure_path=/sbin:/bin:/usr/sbin:/usr/bin

User testuser may run the following commands on xiezhr:
(ALL) ALL

5、登录testuser用户,执行ls /root 发现时没有权限的

[testuser@xiezhr ~]$ ls /root
ls: cannot open directory /root: Permission denied

6、当加上sudo 后 再执行ls /root (第一次需要输入testuser用户密码,上面原理图介绍过),发现可以访问/root 路径了,此时testuser 具有了

[testuser@xiezhr ~]$ sudo ls /root

We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:

#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.

[sudo] password for testuser:
bdcdb84c414c2493e5856597b89be9f0.gif


6、 sudo 小结


* 对用户进行sudo授权后,所有用户执行命令 格式为 **sudo + [命令]**
* **sudo - l** 命令可以查看当前用户被授予的sudo权限集合
* 当我们在授权用户下执行sudo时,如果需要输入密码。此时输入密码是**当前用户的密码**


#### id 显示用户与用户组信息


1、简介



> 
> id 命令可以显示指定用户的ID(UID)和组ID(GID)等有效信息
> 
> 
> 


2、语法格式



id [参数选项] [用户名]


3、参数选项




| 参数 | 参数说明 |
| --- | --- |
| -g | 显示用户所属群组的ID |
| -G | 显示用户所属附加群组的ID |
| -n | 显示用户,所属群组或附加群组的名称 |
| -r | 显示实际ID |
| -u | 显示用户ID |


4、实践操作  
 显示用户的UID和GID



id 后不跟用户,默认时当前登录用户

[root@xiezhr home]# id
uid=0(root) gid=0(root) groups=0(root)

显示指定用户信息

[root@xiezhr home]# id testxiezhr
uid=1006(testxiezhr) gid=1006(testxiezhr) groups=1006(testxiezhr)

显示当前登录用户名称

[root@xiezhr home]# id -gn
root

显示当前登录用户GID

[root@xiezhr home]# id -g
0

显示当前登录用户UID

[root@xiezhr home]# id -u
0


#### w 显示已登录用户信息


1、简介



> 
> w命令可以显示已经登录系统的用户,并显示用户正在执行的命令
> 
> 
> 


2、语法格式



w [参数选项] [用户]


3、参数选项




| 参数 | 参数说明 |
| --- | --- |
| -h | 不显示前两行标题信息 |
| -u | 忽略执行程序的名称以及CPU时间信息 |
| -s | 使用短输出格式 |


4、实践操作  
 ① 显示已登录用户信息



[testuser@xiezhr ~]$ w
21:21:42 up 609 days, 7 min, 4 users, load average: 2.66, 2.99, 3.17
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 39.130.60.62 20:33 48:22 0.02s 0.02s -bash
root pts/1 39.130.60.62 20:55 13:10 0.07s 0.02s -bash
root pts/2 39.130.60.62 21:04 16:54 0.02s 0.02s -bash
root pts/3 39.130.60.62 21:21 6.00s 0.04s 0.00s w


**w命令执行结果说明**


* 第一行依次显示当前的系统时间、系统从启动到现在已经运行的时间、登录到系统中的用户数和系统平均负载




| 列名 | 含义 |
| --- | --- |
| USER | 登录系统的用户 |
| TTY | 用户使用的TTY名称 |
| FROM | 用户从哪里登录进来,一般显示远程登录主机的IP地址或主机名 |
| LOGIN@ | 用户登录的日期和时间 |
| IDLE | 显示终端空闲的时间 |
| JCPU | 表示该终端上的所有进程及子进程使用系统的总时间 |
| PCPU | 当前活动进程使用的系统时间 |
| WHAT | 当前用户执行的进程名称和选项 |


② -h 参数



[root@xiezhr ~]# w -h
root pts/0 39.130.60.62 20:33 1:04m 0.02s 0.02s -bash
root pts/1 39.130.60.62 20:55 28:55 0.07s 0.02s -bash
root pts/2 39.130.60.62 21:04 32:39 0.02s 0.02s -bash
root pts/3 39.130.60.62 21:21 15:51 0.04s 0.02s -bash
root pts/4 39.130.60.62 21:37 3.00s 0.02s 0.00s w -h


#### 显示已登录用户信息


1、简介



> 
> who 命令用于显示已经登录系统的用户,以及系统的启动时间等信息
> 
> 
> 


2、语法格式



who [参数选项]


3、参数选项




| 参数 | 参数说明 |
| --- | --- |
| -a | 显示所有信息 |
| -b | 显示系统启动时间 |
| -d | 显示已结束的进程 |
| -H | 显示标题,默认是不显示的 |
| -l | 显示登录进程 |


4、实践操作  
 ① 不带参数显示所有信息



[root@xiezhr ~]# who
root pts/0 2022-09-11 20:33 (39.130.60.62)
root pts/1 2022-09-11 20:55 (39.130.60.62)
root pts/2 2022-09-11 21:04 (39.130.60.62)
root pts/3 2022-09-11 21:21 (39.130.60.62)
root pts/4 2022-09-11 21:37 (39.130.60.62)
root pts/5 2022-09-11 22:19 (39.130.60.62)


② 显示系统启动时间



[root@xiezhr ~]# who -b
system boot 2021-01-10 21:14


③ 显示已结束的进程



[root@xiezhr ~]# who -d


④ 显示标题



[root@xiezhr ~]# who -H
NAME LINE TIME COMMENT
root pts/0 2022-09-11 20:33 (39.130.60.62)
root pts/1 2022-09-11 20:55 (39.130.60.62)
root pts/2 2022-09-11 21:04 (39.130.60.62)
root pts/3 2022-09-11 21:21 (39.130.60.62)
root pts/4 2022-09-11 21:37 (39.130.60.62)
root pts/5 2022-09-11 22:19 (39.130.60.62)


⑤ 显示带标题的所有信息



[root@xiezhr ~]# who -H -a
NAME LINE TIME IDLE PID COMMENT EXIT
system boot 2021-01-10 21:14
run-level 3 2021-01-10 21:14
LOGIN ttyS0 2021-01-10 21:14 1009 id=tyS0
LOGIN tty1 2021-01-10 21:14 1008 id=tty1
root + pts/0 2022-09-11 20:33 01:50 23396 (39.130.60.62)
root + pts/1 2022-09-11 20:55 01:15 27638 (39.130.60.62)
root + pts/2 2022-09-11 21:04 01:19 29660 (39.130.60.62)
root + pts/3 2022-09-11 21:21 01:02 405 (39.130.60.62)
root + pts/4 2022-09-11 21:37 00:46 3587 (39.130.60.62)
root + pts/5 2022-09-11 22:19 . 11675 (39.130.60.62)


以上显示的各项含义



> 
> 名称 [状态] 线路 时间 [活动] [进程标识] (主机名)
> 
> 
> 




| 列名 | 说明 |
| --- | --- |
| NAME | 名称: 用户登录名 |
|  | 状态:表示线路对用户是否都是可写的 |
| LINE | 线路: pts/0 pts/1等等 |
| TIME | 时间:用户登录系统的时间 |
| IDLE | 活动:某用户最后一次活动到现在的时间;. 表示一分钟内线路活动 |
| PID | 进程表示:用户进程id |
| COMMENT | 主机名 |


#### users 显示已登录用户


1、简介



> 
> users 命令用于显示已经登录的用户。一个用户登录多次则会显示多次
> 
> 
> 


2、实践操作



[root@xiezhr ~]# users
root root root root root root


#### whoami 显示当前登录的用户


1、简介



> 
> whoami 命令用于显示当前登录的用户。是英文who am i 的简写
> 
> 
> 


2、实践操作



[root@xiezhr ~]# whoami
root
[root@xiezhr ~]# su - testuser
Last login: Sun Sep 11 21:21:40 CST 2022 on pts/3
[testuser@xiezhr ~]$ whoami
testuser


#### last 显示用户登录列表


1、简介



> 
> last命令用于显示最近登录的用户列表
> 
> 
> 


2、语法格式



last [参数选项]


3、参数选项




| 参数 | 参数说明 |
| --- | --- |
| - num | 指定显示结果的行数 |


4、实践操作  
 ① 不加参数显示



[root@xiezhr ~]# last
root pts/6 39.130.60.62 Sun Sep 11 22:42 still logged in
root pts/0 39.130.60.62 Sun Sep 11 22:37 still logged in
root pts/1 39.130.60.29 Sun Nov 29 09:09 - down (01:02)
root pts/0 39.130.60.29 Sun Nov 29 08:49 - down (01:23)
root pts/0 112.112.17.172 Fri Nov 6 12:50 - 15:45 (02:55)

wtmp begins Fri Nov 6 12:50:41 2020


② -num 参数,显示指定显示行数



[root@xiezhr ~]# last -5
root pts/6 39.130.60.62 Sun Sep 11 22:42 still logged in
root pts/0 39.130.60.62 Sun Sep 11 22:37 still logged in
root pts/5 39.130.60.62 Sun Sep 11 22:19 still logged in
root pts/4 39.130.60.62 Sun Sep 11 21:37 still logged in
root pts/3 39.130.60.62 Sun Sep 11 21:21 still logged in

wtmp begins Fri Nov 6 12:50:41 2020


#### lastb 显示用户登录失败的记录


1、简介



> 
> lastb命令用于显示用户登录失败的记录
> 
> 
> 


2、语法格式



lastb [参数选项]


3、参数说明




| 参数 | 参数说明 |
| --- | --- |
| -num | 指定显示结果的行数 |


4、实践操作



[root@xiezhr ~]# lastb -5
ssh:notty 159.75.56.103 Sun Sep 11 21:18 - 21:18 (00:00)
ltecl4r0 ssh:notty 45.141.84.126 Sun Sep 11 20:33 - 20:33 (00:00)
ltecl4r0 ssh:notty 45.141.84.126 Sun Sep 11 20:33 - 20:33 (00:00)
1admin0 ssh:notty 45.141.84.126 Sun Sep 11 20:32 - 20:32 (00:00)
1admin0 ssh:notty 45.141.84.126 Sun Sep 11 20:32 - 20:32 (00:00)

btmp begins Thu Sep 1 03:31:03 2022


#### lastlog 显示所有用户最近登录记录


1、简介



> 
> lastlog 命令用于显示用户最近登录的记录,便于查看系统是否异常
> 
> 
> 


### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

![](https://img-blog.csdnimg.cn/img_convert/2a03f0cf0656aa13d28c9b35b6935d36.png)

给大家整理的电子书资料:

  

![](https://img-blog.csdnimg.cn/img_convert/8dabf2f96e7cdfae7b4f24b2eb887394.png)



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**
践操作



[root@xiezhr ~]# lastb -5
ssh:notty 159.75.56.103 Sun Sep 11 21:18 - 21:18 (00:00)
ltecl4r0 ssh:notty 45.141.84.126 Sun Sep 11 20:33 - 20:33 (00:00)
ltecl4r0 ssh:notty 45.141.84.126 Sun Sep 11 20:33 - 20:33 (00:00)
1admin0 ssh:notty 45.141.84.126 Sun Sep 11 20:32 - 20:32 (00:00)
1admin0 ssh:notty 45.141.84.126 Sun Sep 11 20:32 - 20:32 (00:00)

btmp begins Thu Sep 1 03:31:03 2022


#### lastlog 显示所有用户最近登录记录


1、简介



> 
> lastlog 命令用于显示用户最近登录的记录,便于查看系统是否异常
> 
> 
> 


### 最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

### 资料预览

给大家整理的视频资料:

[外链图片转存中...(img-kTY7OxwE-1726112085738)]

给大家整理的电子书资料:

  

[外链图片转存中...(img-Zv07JKOq-1726112085739)]



**如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!**
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值