- 前言
- useradd 创建用户
- usermod 修改用户信息
- userdel 删除用户
- groupadd 创建新的用户组
- groupdel 删除用户组
- passwd 修改用户密码
- chage 修改用户密码有效期
- 批量更新用户密码
- su 切换用户
- visudo 编辑sudoers文件
- sudo 以另一个用户身份执行命令
- id 显示用户与用户组信息
- w 显示已登录用户信息
- 显示已登录用户信息
- users 显示已登录用户
- whoami 显示当前登录的用户
- last 显示用户登录列表
- lastb 显示用户登录失败的记录
- lastlog 显示所有用户最近登录记录
上一篇中已经预告,我们这篇主要说一说Linux中用户相关的命令。
可能各位小伙伴用的Windows会比较多一点,在Windows操作系统中,我们知道有Administrator用户,Administrator 是Windows系统中的管理员用户,有着最高的权限。
用户登录Administrator后可以创建Gust等用户,修改密码并且给Gust用户分配相应的权限。
同样的在Linux中,root就相当于Administrator用户,具有着最高权限。登录root 用户可以创建用户、修改用户密码、给用户分配角色等等。
下面思维导图中列出了我们需要掌握的19个命令
1、简介
useradd 命令用户创建新的用户或者更改用户信息
2、原理
3、语法格式
useradd [参数选项] [用户名]
或
useradd -D [参数选项]
4、参数说明
① 不加选项-D参数
② 加-D选项参数
5、实践操作
① 不加任何参数添加用户
# 创建xiezhrspace 用户
[root@xiezhr ~]# useradd xiezhrspace
# /home/ 路径下新生成一个xiezhrspace 目录。这个就是xiezhrspace用户的家目录
[root@xiezhr ~]# ls -ld /home/xiezhrspace
drwx------ 2 xiezhrspace xiezhrspace 4096 Aug 29 23:05 /home/xiezhrspace
在前面我们说过创建一个新用户会在/etc/shadow、/etc/group 和/etc/gshsdow 文件中生成相关信息,具体是不是这样的呢?
我们去看一看(●’◡’●)
# 在创建用户时候没有指定密码,但是shadow还是生成了一行信息
[root@xiezhr ~]# grep -w xiezhrspace /etc/shadow
xiezhrspace:!!:19233:0:99999:7:::
# 创建用户时,默认会创建与用户名同名的用户组
[root@xiezhr ~]# grep -w xiezhrspace /etc/group
xiezhrspace:x:1002:
#组密码文件中也会增加一条信息
[root@xiezhr ~]# grep -w xiezhrspace /etc/gshadow
xiezhrspace:!::
② 创建一个组,并将新建用户归于这个组
# 创建一个gid 为808 的用户组
[root@xiezhr ~]# groupadd -g 808 xiezhrgroup
# 创建一个uid为908的用户xietest,并将用户归于xiezhrgroup组
[root@xiezhr ~]# useradd -g xiezhrgroup -u 908 xietest
# 查看用户信息
[root@xiezhr ~]# id xietest
uid=908(xietest) gid=808(xiezhrgroup) groups=808(xiezhrgroup)
③ -M -s参数的使用(在生产环境中部署Nginx、MySQL等服务经常使用)
# -M 不创建见目录
# -s 指定登录后的Shell
# /sbin/nologin 表示禁止登陆
[root@xiezhr ~]# useradd -M -s /sbin/nologin xiaofang
[root@xiezhr ~]# ls -ld /home/xiaofang
ls: cannot access /home/xiaofang: No such file or directory
[root@xiezhr ~]# grep -w xiaofang /etc/passwd
xiaofang:x:1003:1003::/home/xiaofang:/sbin/nologin
/etc/passwd 文件说明
1、简介
usermod 命令用于修改系统已经存在的用户账号信息
2、语法格式
usermod [参数选项] [用户名]
3、参数选项
4、实践操作
将前面创建的xiezhr 用户的用户注释修改为“测试用户”,UID 修改为888,归属修改为用户组root、xiezhr 成员,其Shell类型为/sbin/nologin,设置家目录为/home/xiezhr 用户过期时间为2022-10-02 ,过期后15天停权
[root@xiezhr ~]# usermod -u 888 -s /sbin/nologin -c "测试用户" -G root -e "2022/10/02" -f 30 -d /home/xiezhr xiezhr
[root@xiezhr ~]# grep -w xiezhr /etc/passwd
xiezhr:x:888:1001:测试用户:/home/xiezhr:/sbin/nologin
[root@xiezhr ~]# id xiezhr
uid=888(xiezhr) gid=1001(xiezhr) groups=1001(xiezhr),0(root)
[root@xiezhr ~]# grep -w xiezhr /etc/shadow
xiezhr:!!:19233:0:99999:7:30:19267:
[root@xiezhr ~]# chage -l xiezhr
Last password change : Aug 29, 2022
Password expires : never
Password inactive : never
Account expires : Oct 02, 2022
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
userdel 删除用户
1、简介
userdel 命令用户删除指定的用户及与该用户相关的文件
2、语法格式
userdel [参属选项] [用户名]
3、参数选项
4、实践操作
① 不加参数删除用户
[root@xiezhr home]# tail -4 /etc/passwd
xiezhr:x:888:1001:测试用户:/home/xiezhr:/sbin/nologin
xiezhrspace:x:1002:1002::/home/xiezhrspace:/bin/bash
xietest:x:908:808::/home/xietest:/bin/bash
xiaofang:x:1003:1003::/home/xiaofang:/sbin/nologin
[root@xiezhr home]# ll /home/xietest/ -ld
drwx------ 2 xietest xiezhrgroup 4096 Aug 29 23:16 /home/xietest/
[root@xiezhr home]# userdel xietest
[root@xiezhr home]# grep -w xietest /etc/passwd
[root@xiezhr home]# ll /home/xietest/ -ld
drwx------ 2 908 xiezhrgroup 4096 Aug 29 23:16 /home/xietest/
② 加 -r 参数删除用户及加目录
[root@xiezhr home]# ls -ld /home/xiezhr001/
drwx------ 2 xiezhr001 xiezhr001 4096 Sep 4 19:50 /home/xiezhr001/
[root@xiezhr home]# grep -w xiezhr001 /etc/passwd
xiezhr001:x:1005:1005::/home/xiezhr001:/bin/bash
[root@xiezhr home]# userdel -r xiezhr001
[root@xiezhr home]# grep -w xiezhr001 /etc/passwd
[root@xiezhr home]# ls -ld /home/xiezhr001/
ls: cannot access /home/xiezhr001/: No such file or directory
注意
- 在实际工作中,尽量不要使用userdel删除用户,只需要在/etc/passwd里注释用户就可以了。
- 在使用-r参数一定要慎重,-r参数会将家目录下所有文件和目录都删除,该过程是不可逆的
1、简介
groupadd 用于创建新的用户组。实际工作中一般也不用,因为useradd命令在创建用户的时候也会创建一个同名的用户组
2、语法格式
groupadd [参数选项] [用户组]
3、参数选项
4、实践操作
指定gid添加用户组
# 添加GID为123的test1用户组
[root@xiezhr ~]# groupadd -g 123 test
[root@xiezhr ~]# tail -l /etc/group
test:x:123:
[root@xiezhr ~]# tail -l /etc/gshadow
test:!::
groupdel 删除用户组
1、简介
groupdel 命令用户删除指定的用户组,一般不用
2、语法格式
groupdel [用户组]
3、实践操作
删除test用户组
[root@xiezhr ~]# groupdel test
[root@xiezhr ~]# grep -w test /etc/group
passwd 修改用户密码
1、简介
passwd 命令用于修改用户密码及密码过期使劲啊等,工作中会经常用到。
普通用户和超级用户都可以运行passwd命令,普通用户只能更改自身密码,超级用户root则可以设置或修改所有用户的密码
2、语法格式
passwd [参数选项] [用户名]
3、参数选项
4、实践操作
① 修改用户自身密码
[root@xiezhr ~]# passwd # 修改root用户自身密码
Changing password for user root.
New password: # 输入修改的密码,系统不会显示
Retype new password: # 再次输入密码
passwd: all authentication tokens updated successfully. # 设置成功了
② 设置及修改普通用户密码
[root@xiezhr ~]# passwd xiezhr
Changing password for user xiezhr.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
③ 显示账号密码信息
[root@xiezhr ~]# passwd -S xiezhr
xiezhr PS 2022-09-05 0 99999 7 30 (Password set, MD5 crypt.)
④一条命令修改密码
[root@xiezhr ~]# echo "123456"|passwd --stdin xiezhr
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 、参数选项
[root@xiezhr ~]# chage -m 7 -M 60 -W 10 -I 30 xiezhr
批量更新用户密码
1、简介
chpasswd 命令用于从标准输入中读取一定格式的用户名、密码来批量更新用户的密码,格式为“用户名:密码“
2、语法格式
chpasswd [参数选项]
3、参数选项
[root@xiezhr ~]# chpasswd # 输入chpasswd后,回车
xiezhr:123456 # 格式为用户名:密码
testxiezhr:123456 # 一行一个
# 新行按Ctrl+D 结束
su 切换用户
1、简介
su 命令用户将当前用户切换到指定用户或以指定用户的身份执行命令或程序
2、语法格式
su [参数选项] [用户名]
3、参数选项
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 – 用户名“ 不但可以切换到对应用户,还能将环境变量一起切换**
1、简介
visudo命令是专门用来编辑 /etc/sudoers这个文件的,同时提供语法检查等功能。 /etc/sudoers文件是sudo命令的配置文件。sudo命令在下一个命令你会看到。而为什么不用vi/vim来直接编辑/etc/sudoers文件呢? 因为如果使用vim 编辑sudoer文件时没有语法校验,编辑错了会导致授权无法生效
2、语法格式
visudo [参数选项]
3、参数选项
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身份添加和删除用户权限
上面操作说明
② 通过-c参数校验语法是否正确
通过① 我们已经对xiezhr用户和testxiezhr用户做了不同的授权,那么怎么判断授权的语法是否正确呢
[root@xiezhr ~]# visudo -c
/etc/sudoers: parsed OK
/etc/sudoers.d/90-cloud-init-users: parsed OK
直接root用户下操作不就可以了么?为什么要通过sudo授权呢?
我们希望一个用户具有root权限去干活,但是又不希望这个用户威胁系统安全。
1、简介
sudo 命令可以让普通用户拥有超级用户的权限去执行指定的命令或程序。普通用户不需要知道root密码就可以得到授权,授权我们在上面已经说过
2、语法格式
sudo [参数选项]
3、参数选项
4、sudo 工作原理
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时,如果需要输入密码。此时输入密码是当前用户的密码
1、简介
id 命令可以显示指定用户的ID(UID)和组ID(GID)等有效信息
2、语法格式
id [参数选项] [用户名]
3、参数选项
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、参数选项
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命令执行结果说明
- 第一行依次显示当前的系统时间、系统从启动到现在已经运行的时间、登录到系统中的用户数和系统平均负载
② -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、参数选项
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)
以上显示的各项含义
名称 [状态] 线路 时间 [活动] [进程标识] (主机名)
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、参数选项
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、参数说明
[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 命令用于显示用户最近登录的记录,便于查看系统是否异常
2、实践操作
[root@xiezhr ~]# lastlog
Username Port From Latest
root pts/6 Sun Sep 11 22:45:57 +0800 2022
bin **Never logged in**
daemon **Never logged in**
adm **Never logged in**
lp **Never logged in**
test **Never logged in**
testxiezhr pts/0 Thu Sep 8 21:53:58 +0800 2022
testuser pts/6 Sun Sep 11 22:42:24 +0800 2022
注意:
当有从不登录的用户突然登录系统了,就要考虑是不是有用户入侵系统了
这期内容就到这,下期根据思维导图就到Linux磁盘与文件系统相关命令的使用了。
涉及到的命令有: fdisk、df、mount、dd、unmount、sync、等等
敬请期待哦(●’◡’●)
专栏目录:快速上手Linux核心命令专栏目录
上一篇:快速上手Linux核心命令(十一):Linux安装软件
下一篇:快速上手Linux核心命令(十二):磁盘与文件系统相关命令(博主正在玩命更新中)
原文链接:https://www.cnblogs.com/xiezhr/p/17343430.html
【感谢龙石为本站提供数据质量管理系统,http://www.longshidata.com/pages/quality.html】