Linux用户与组管理
目录
一、用户与组概述
与windows类似,Linux也有用户和用户组的概念。在Linux系统中,每次登录系统都必须以一个用户的身份登录,并且登录后的权限也会根据用户身份来确定。 每一个进程在执行时,也会有其用户,该用户也和进程所能控制的资源有关。Linux系统下的每一个目录、文件,都会有其属于的用户和用户组,我们称其为属主和属组。由此可见,用户和用户组与Linux系统的运行息息相关。在实际操作使用系统时,我们往往较多关注用户与用户组。
在Linux系统中,每个用户都有自己的用户ID,称为UID,每个用户组也有自己的用户组ID,称为GID,UID和GID在Linux系统中是不可重复的。Linux系统就是通过UID和GID来对用户和组进行管理的,而对于管理员来说,往往会设置用户名和组名,这样使得用户和用户组的使用管理更人性化。
1、用户类型
-
root用户
root用户时UID和GID都等于0的用户,是Linux系统中的“上帝”,拥有最大的权限。如果深入了解Linux系统,会发现root用户真的拥有很多特权,比如:无视Linux对权限的设置而强行读、写、执行文件,切换其他用户登录不需要密码,可以强行切换到已经存在的用户,只有root可以为普通用户修改密码等等。
-
系统用户 (程序用户)
系统用户通常用于运行服务,但是此用户无家目录,也不能用于登录系统。例如,在yum安装apache、nginx等服务后,就会自动创建apache和nginx的用户和同名用户组。在CentOS6系统中,系统用户的UID范围是1-499,在CentOS7系统中,系统用户的ID是1-999。
-
程序用户没有家目录
-
nolongin 不能用shell登录
-
普通用户
普通用户只能由root用户创建,该用户拥有家目录,并且可以登录,该用户的权限由root分配。普通用户拥有指定的shell环境。
2、用户和用户组关系
在Linux系统中,每个用户必定属于一个主组(基本组),默认情况下属于与其同名的用户组,最多可以有31个附属组,从用户权限的角度看,主组和附属组其实差别不大,用户也会拥有其附属组的组相关权限。
3、用户和用户组配置文件
Linux系统下用户和用户组相关的配置文件主要有以下几个:
-
/etc/passwd
存储用户信息
tail -1 /etc/passwd
user10:x:1014:1014::/home/user10:/bin/bash
#用户名:密码占位符:用户ID:组ID:用户描述信息:用户家目录:登录shell
-
/etc/shadow
该配置文件保存了用户的密码信息 。
tail -1 /etc/shadow
user2:!!:19522:0:99999:7:::
#用户名:密码:用户创建时间:密码最短使用期限:密码最长使用期限:密码过期提醒时间:密码过期后的宽容时间:密码过期时间:没用
注意: !! 表示该用户没有设置密码。
! 表示用户密码被锁定,该用户无法登录操作系统。
-
/etc/group
该文件保存了用户组的信息 。
tail -1 /etc/group
nginx:x:982:
#组名:占位符:组ID:非基本组的组成员
-
/etc/gshadow
该文件保存了用户组的密码。
-
/etc/login.defs
该文件可以设置密码过期时间,密码最大长度限制等内容。影响的是新创建的用户密码信息。
[root@ansible ~]# cat /etc/login.defs
#
# Please note that the parameters in this configuration file control the
# behavior of the tools from the shadow-utils component. None of these
# tools uses the PAM mechanism, and the utilities that use PAM (such as the
# passwd command) should therefore be configured elsewhere. Refer to
# /etc/pam.d/system-auth for more information.
#
# *REQUIRED*
# Directory where mailboxes reside, _or_ name of file, relative to the
# home directory. If you _do_ define both, MAIL_DIR takes precedence.
# QMAIL_DIR is for Qmail
#
#QMAIL_DIR Maildir
MAIL_DIR /var/spool/mail
#MAIL_FILE .mail
# Password aging controls:
#
# PASS_MAX_DAYS Maximum number of days a password may be used.
# PASS_MIN_DAYS Minimum number of days allowed between password changes.
# PASS_MIN_LEN Minimum acceptable password length.
# PASS_WARN_AGE Number of days warning given before a password expires.
#
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
#
# Min/max values for automatic uid selection in useradd
#
UID_MIN 1000
UID_MAX 60000
# System accounts
SYS_UID_MIN 201
SYS_UID_MAX 999
#
# Min/max values for automatic gid selection in groupadd
#
GID_MIN 1000
GID_MAX 60000
# System accounts
SYS_GID_MIN 201
SYS_GID_MAX 999
#
# If defined, this command is run when removing a user.
# It should remove any at/cron/print jobs etc. owned by
# the user to be removed (passed as the first argument).
#
#USERDEL_CMD /usr/sbin/userdel_local
#
# If useradd should create home directories for users by default
# On RH systems, we do. This option is overridden with the -m flag on
# useradd command line.
#
CREATE_HOME yes
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
# This enables userdel to remove user groups if no members exist.
#
USERGROUPS_ENAB yes
# Use SHA512 to encrypt password.
ENCRYPT_METHOD SHA512
[root@localhost ~]# cat /etc/login.defs | grep -v "^$" | grep -v "^#"
MAIL_DIR /var/spool/mail
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7
UID_MIN 1000
UID_MAX 60000(653500)
SYS_UID_MIN 201
SYS_UID_MAX 999
GID_MIN 1000
GID_MAX 60000
SYS_GID_MIN 201
SYS_GID_MAX 999
CREATE_HOME yes
UMASK 077(权限反码)
USERGROUPS_ENAB yes
ENCRYPT_METHOD SHA512
-
/etc/skel目录
作用: 用户创建时默认文件的模版目录
[root@c2407 skel]# ls -a
. .. .bash_logout .bash_profile .bashrc .mozilla
文件 | 触发时机 | 主要用途 | 典型操作场景 |
---|---|---|---|
.bash_logout | 用户注销时 | 清理、日志记录 | 记录注销时间、删除临时文件 |
.bash_profile全局配置文件 | 登录Shell启动时 | 环境变量、全局启动程序 | 设置 PATH、启动 ssh-agen` |
.bashrc加载的时差 | 新终端窗口打开时 | 别名、函数、Shell选项 | 定义 alias ll='ls -la' |
.mozill | Firefox首次运行时创建 | 浏览器用户数据存储 | 备份配置、管理扩展 |
二、用户管理
1、useradd命令
创建一个新用户或更新默认新用户信息
语法:
useradd [选项] 用户名
选项:
选项 | 作用 |
---|---|
-u | 指定用户的UID。 |
-d | 指定用户的家目录,而不采用默认创建在/home中的目录。不能是已存在的目录。 |
-s | 指定用户的登录shell |
-M | 创建用户时不创建家目录 |
-g | 创建用户时指定基本组,不会创建用户的同名组 |
-G | 创建用户时指定附加组,依然会创建同名组 |
-e | 创建用户时,指定用户的失效时间。 |
案例:
1、指定用户的UID
useradd -u 54321 user1
创建UID为0的admin用户 :具有管理员权限
usreadd -o -u 0 admin
2、指定用户家目录
useradd -d /user2 user2
3、指定用户的登录shell
useradd -s /sbin/nologin user3
指定用户user5登录/bin/tcsh
[root@localhost ~]# useradd -s /bin/tcsh user5
[root@localhost ~]# cat /etc/passwd
user3:x:54359:54359::/home/user3:/bin/bash
user2:x:54360:54321::/home/user2:/bin/bash
user4:x:54361:54361::/home/user4:/bin/bash
user5:x:54362:54362::/home/user5:/bin/tcsh
4、创建用户时不创建家目录
useradd -M user4
5、创建程序用户
useradd -M -s /sbin/nologin user5
6、创建用户时指定基本组
useradd -g user5 user6
7、创建用户时指定附加组
useradd -G user5 user7
创建user4指定附加组user1
root@localhost ~]# useradd -G user1 user4
root@localhost ~]# id user4
uid=54361(user4) gid=54361(user4) 组=54361(user4),54321(user1)
8、创建用户时,指定用户的失效时间。
useradd -e 2024-04-08 user8
#验证:
tail -1 /etc/shadow
user8:!!:19820:0:99999:7::19821:
[root@localhost ~]# useradd user6 -e 2025-05-16
user5:!!:20223:0:99999:7:::
user6:!!:20223:0:99999:7::20224:
2、userdel
删除用户账户和相关文件
语法:
userdel [选项] 用户名
选项:
选项 | 作用 |
---|---|
-r, --remove | 用户主目录中的文件将随用户主目录和用户邮箱一起删除。在其它文件系统中的文件必须手动搜索并删除。 |
案例:
删除用户的同时删除在创建时产生的文件。
userdel -r user7
直接用useradd删除,要删除家目录home和邮件文件/var/spool/mail的信息
[root@localhost ~]# userdel user1
userdel:组“user1”没有移除,因为它包含其它成员。
[root@localhost ~]# cat /etc/group
user:x:1000:user
user1:x:54321:user4
kobe:x:54322:
kevin:x:54323:
alpha:x:54324:
alpha2:x:54325:
tom:x:54326:
hhh:x:54327:
kk:x:54328:
user3:x:54359:
user4:x:54361:
user5:x:54362:
user6:x:54363:
[root@localhost ~]# cd /home/
[root@localhost home]# ls
tom user user1 user2 user3 user4 user5 user6
[root@localhost home]# userdel user1
userdel:用户“user1”不存在
[root@localhost home]# ls -l
总用量 4
drwx------. 3 tom tom 78 5月 15 13:42 tom
drwx------. 15 user user 4096 5月 11 01:01 user
drwx------. 3 54321 54321 78 5月 14 20:44 user1
drwx------. 3 54360 54321 78 5月 15 14:03 user2
drwx------. 3 user3 user3 78 5月 15 14:01 user3
drwx------. 3 54361 54361 78 5月 15 14:05 user4
drwx------. 3 user5 user5 78 5月 15 14:10 user5
drwx------. 3 user6 user6 78 5月 15 14:17 user6
[root@localhost home]# cd
[root@localhost ~]# useradd user1
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
正在创建信箱文件: 文件已存在
[root@localhost ~]# cd /var/spool/mail
[root@localhost mail]# ls -l
总用量 0
-rw-rw----. 1 alpha mail 0 5月 14 20:55 alpha
-rw-rw----. 1 alpha2 mail 0 5月 14 20:55 alpha2
-rw-rw----. 1 hhh mail 0 5月 15 13:46 hhh
-rw-rw----. 1 kevin mail 0 5月 14 20:55 kevin
-rw-rw----. 1 kk mail 0 5月 15 13:51 kk
-rw-rw----. 1 kobe mail 0 5月 14 20:48 kobe
-rw-rw----. 1 rpc mail 0 5月 11 07:56 rpc
-rw-rw----. 1 tom mail 0 5月 15 13:42 tom
-rw-rw----. 1 user mail 0 5月 11 08:16 user
-rw-rw----. 1 54321 mail 0 5月 14 20:44 user1
-rw-rw----. 1 54360 mail 0 5月 15 14:03 user2
-rw-rw----. 1 user3 mail 0 5月 15 14:01 user3
-rw-rw----. 1 54361 mail 0 5月 15 14:05 user4
-rw-rw----. 1 user5 mail 0 5月 15 14:10 user5
-rw-rw----. 1 user6 mail 0 5月 15 14:17 user6
[root@localhost mail]# rm -rf user1
3、passwd命令
更改用户的密码。root用户使用时,可以更改所有用户的密码。普通用户使用时,只能更改本身的密码。
语法:
passwd [选项] 用户名
选项:
选项 | 作用 |
---|---|
-l(小写L), --lock | 锁定用户密码。 |
-S | 查看密码的锁定状态 (创建新用户没设置密码显示密码已锁定) |
-u,--unlock | 解除用户密码的锁定状态 |
-d, --delete | 将用户密码清空 |
-e,--expire | 直接让密码失效,下次登录时必须更改。 |
--stdin 标准输入 | 非交互式修改密码。 |
案例:
1、设置用户密码
passwd user9
#用户输入passwd命令后直接回车,表示更改本身的密码。
2、锁定用户密码
passwd -l user6
锁定用户 user6 的密码 。
passwd: 操作成功
#验证
tail -1 /etc/shadow
user9:!!$6$nc2k.H5O$QBVprPO4.3MoiiY90n/Yapu0YpR72sVonaR0CKuolRzYBdX9.yzW/Boq5EcQItlPSdaGF2kp5czU.xKSDHr59/:19820:0:99999:7:::
3、查看密码的锁定状态
passwd -S user9
user9 LK 2024-04-07 0 99999 7 -1 (密码已被锁定。)
[root@localhost ~]# passwd -l user2
锁定用户 user2 的密码 。
passwd: 操作成功
4、解除密码的锁定状态
passwd -u user9
解锁用户 user9 的密码。
passwd: 操作成功
##验证
passwd -S user9
user9 PS 2024-04-07 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@localhost ~]# passwd -u user2
解锁用户 user2 的密码。
passwd: 操作成功
5、清空用户密码
passwd -d user9
清除用户的密码 user9。
passwd: 操作成功
##验证
tail -1 /etc/shadow
user9::19820:0:99999:7:::
[root@localhost ~]# passwd -d user2
清除用户的密码 user2。
passwd: 操作成功
[root@localhost ~]# passwd -S user2
user2 NP 2025-05-15 0 99999 7 -1 (密码为空。)
6、强制密码失效
passwd -e user9
正在终止用户 user9 的密码。
passwd: 操作成功
[root@localhost ~]# passwd -e user3
正在终止用户 user3 的密码。
passwd: 操作成功
7、非交互式修改用户密码
echo 1 | passwd --stdin user9
[root@localhost ~]# echo 1 | passwd --stdin user2
更改用户 user2 的密码 。
passwd:所有的身份验证令牌已经成功更新。
4、usermod命令
修改一个用户账户的属性。
语法:
usermod [选项] 用户名
选项:
选项 | 作用 |
---|---|
-u | 修改用户的UID。 |
-d | 修改用户的家目录,而不采用默认创建在/home中的目录。 |
-s | 修改用户的登录shell |
-g | 修改用户基本组 |
-G | 修改用户附加组 |
-e | 修改用户的失效时间。 |
-a, --append | 追加用户到一个附加组 |
-L, --lock | 锁定用户 |
-U, --unlock | 解锁用户 |
案例:
1、锁定用户
usermod -L user1
2、解锁账户
usermod -U user1
3、追加附加组
#将用户user2附加到用户组user1里面
[root@localhost ~]# id user1
uid=1001(user1) gid=1001(user1) 组=1001(user1)
[root@localhost ~]# id user2
uid=1002(user2) gid=1002(user2) 组=1002(user2)
[root@localhost ~]# usermod -a user2 -G user1
[root@localhost ~]# id user2
uid=1002(user2) gid=1002(user2) 组=1002(user2),1001(user1)
4、更改基本组
#将用户将用户user2基本组,添加到用户组user3里面
[root@localhost ~]# usermod -g user3 user2
[root@localhost ~]# id user2
uid=1002(user2) gid=1003(user3) 组=1003(user3),1001(user1)
5、chpasswd命令
批量更新密码。
语法:
chpasswd [选项]
选项:
选项 | 作用 |
---|---|
案例:
批量修改用户密码
#创建用户密码的文本文件
vim chpasswd.txt
user1:123.com
user2:1234.com
user3:12345.com
#修改密码
cat chpasswd.txt | chpasswd
#用户user1、user2、user3.批量设置密码
[root@localhost ~]# cat passwd.txt
user1:123.com
user2:1234.com
user3:12345.com
[root@localhost ~]# cat passwd.txt | chpasswd
user:$6$1Csm8YTR7Qa3WcOK$qzDJKnbfnqoNKdw7JPLsQb27jwpxXS05IV1Dzo/NHqoceVre5zil3dtK0MAT7jpeDIqvo.OrPmJU0Bl9qM8XD/::0:99999:7:::
user1:$6$NfBs0oxUFA/a$ZaKrJbROOWM4iUTYbiiYhTXbfw2Ki0mxN6FkX1N05QE8pNEcKuU3tpXzo8cJi4aORSdfzhdadwdk365VHPxOo0:20223:0:99999:7:::
user2:$6$twVrX/.0M$mVXypcvxxLG3QdNIdO5uAW/inVWoCvyRH/if3UBh0pJd2oYguVk2P5fcMSOsAOrPss/yCVQ4ug9CL0bWcLGek/:20223:0:99999:7:::
user3:$6$7OgqQ3RR0L/tkJ$dbHdme7OLtgA/3k/Lca5riMmXpO8o/ibQqV6q0sWnUw7sFkLKSIGmhTsKK56nynD6tPmszeldTdqaeorJnoH9/:20223:0:99999:7:::
6、chage命令
更改用户密码过期信息,影响现有用户
语法:
chage [选项] 用户名
选项:
选项 | 作用 |
---|---|
-l, --list | 显示账户年龄信息 |
-m, --mindays | 修改密码的最短使用期限 |
-M, --maxdays | 修改密码的最长使用期限 |
-W, --warndays | 修改密码过期的提示时间 |
案例:
1、查看用户的密码信息
[root@localhost ~]# chage -l user1
最近一次密码修改时间 :5月 15, 2025
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
2、修改密码最短使用期限
[root@localhost ~]# chage -m 2 user1
[root@localhost ~]# chage -l user1
最近一次密码修改时间 :5月 15, 2025
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :2
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
三、组管理
1、groupadd命令
创建新组
语法:
groupadd [选项] 组名
选项:
选项 | 作用 |
---|---|
-g, --gid GID | 指定 GID |
案例:
创建新组
[root@localhost ~]# groupadd -g 12345 newgroup
[root@localhost ~]# groupadd hhhh
[root@localhost ~]# tail /etc/group
tcpdump:x:72:
user:x:1000:user
user1:x:1001:user2
user2:x:1002:
user3:x:1003:
hhhh:x:1004:
将用户添加为组成员
#将用户user1添加到用户组hhhh
[root@localhost ~]# usermod -a user1 -G hhhh
[root@localhost ~]# id user1
uid=1001(user1) gid=1001(user1) 组=1001(user1),1004(hhhh)
[root@localhost ~]# tail -5 /etc/group
user:x:1000:user
user1:x:1001:user2
user2:x:1002:
user3:x:1003:
hhhh:x:1004:user1
2、groupdel命令
删除组,有成员不能删除
语法:
groupdel [选项] 组名
选项:
选项 | 作用 |
---|---|
-f | 强制删除,但不建议 |
案例:
删除组
[root@localhost ~]# groupdel newgroup
3、groupmod命令
语法:
groupmod [选项] 组名
选项:
选项 | 作用 |
---|---|
-g, --gid GID | 修改GID |
案例:
修改组的GID
[root@localhost ~]# groupmod -g 54321 user1
4、gpasswd命令
向组内添加成员
语法:
gpasswd [选项] 组名
选项:
选项 | 作用 |
---|---|
-a, --add USER | 向组 GROUP 中添加用户 USER,单个添加 |
-M, --members USER,... | 设置组 GROUP 的成员列表,批量添加,覆盖原有成员 |
案例:
1)、单个添加
[root@localhost ~]# gpasswd -a user2 hhhh
正在将用户“user2”加入到“hhhh”组中
[root@localhost ~]# tail -5 /etc/group
user:x:1000:user
user1:x:1001:user2
user2:x:1002:
user3:x:1003:
hhhh:x:1004:user1,user2
2)、批量添加
[root@localhost ~]# gpasswd -M user3,user4,user5 root
[root@localhost ~]# cat /etc/group | grep root
root:x:0:user3,user4,user5
#将用户user3,user3批量加入用户组hhhh
[root@localhost ~]# gpasswd -M user3,user4 hhhh
[root@localhost ~]# tail -5 /etc/group
user1:x:1001:user2
user2:x:1002:
user3:x:1003:
hhhh:x:1004:user3,user4
user4:x:1005:
四、用户切换与sudo提权
1、su命令
切换用户,从root用户切换到普通用户不需要密码。普通用户之间切换需要密码,程序用户nologin不能切换。
语法:
su [-] 用户名
#切换用户不加选项[-] 没有权限,只能查看
root@localhost ~]# su user1
[user1@localhost root]$ pwd
/root
[user1@localhost root]$
选项:
选项 | 作用 |
---|---|
-, -l, --login | 切换目录用户的登录shell |
-s | 指定shell切换 |
案例:
su 与 su - 的对比
#su 不会切换目标用户的登录shell
#切换用户不加选项[-] 没有权限,只能查看
root@localhost ~]# su user1
[user1@localhost root]$ pwd
/root
[user1@localhost root]$
#su -会切换到目标用户的登录shell
[root@localhost ~]# su - user1
上一次登录:四 5月 15 18:36:56 CST 2025pts/1 上
[user1@localhost ~]$ pwd
/home/user1
[user1@localhost ~]$
s指定shell切换
[root@localhost ~]# useradd -s /sbin/nologin fff
[root@localhost ~]# ls -l /home/fff
总用量 0
[root@localhost ~]# cd /home
[root@localhost home]# ls
fff user user1 user2
[root@localhost home]# ls -l /home/
总用量 0
drwx------. 3 fff fff 78 5月 15 19:13 fff
drwx------. 3 user user 78 5月 15 19:09 user
drwx------. 3 user1 user1 78 5月 15 19:10 user1
drwx------. 3 user2 user2 78 5月 15 19:10 user2
[root@localhost home]# cd
[root@localhost ~]# su - fff
This account is currently not available.
[root@localhost ~]# cd /home
[root@localhost home]# su - fff
上一次登录:四 5月 15 19:15:34 CST 2025pts/1 上
This account is currently not available.
[root@localhost home]# cd
[root@localhost ~]# su -s /bin/bash fff
普通用户切换普通用户(需要设置密码才能切换用户)
[root@localhost ~]# su - user
上一次登录:四 5月 15 19:29:01 CST 2025pts/1 上
[user@localhost ~]$ su - user1
密码:
最后一次失败的登录:四 5月 15 19:30:03 CST 2025pts/1 上
最有一次成功登录后有 1 次失败的登录尝试。
[user1@localhost ~]$
2、sudo命令
sudo用来进行普通用户提升权限
语法:
sudo [选项] 参数
选项:
选项 | 作用 |
---|---|
-i | 切换到指定用户的登录shell。采用本身的密码提供验证。 |
注意:sudo -i root,切换到root,必须存在于sudoers文件中的普通用户才有权限。
案例:
1)切换到root用户
vim /etc/sudoers
#通过查看该文件发现当用户的附加组为wheel时,可以执行任意命令
usermod -a zhx -G wheel
[zhx@localhost ~]$ sudo -i
[root@localhost ~]# su - user
上一次登录:四 5月 15 19:53:05 CST 2025pts/1 上
[user@localhost ~]$ sudo -i
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] user 的密码:
[root@localhost ~]#
2)提升普通用户使用命令的权限
#使用ifconfig命令修改网卡的IP参数(打开虚拟机设置,添加网卡)
[user@localhost ~]$ ifconfig ens37
ens37: flags=4098<BROADCAST,MULTICAST> mtu 1500
ether 00:0c:29:18:b5:c2 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[user@localhost ~]$ ifconfig ens37 192.168.10.210
SIOCSIFADDR: 不允许的操作
SIOCSIFFLAGS: 不允许的操作
[user@localhost ~]$ sudo ifconfig ens37 192.168.10.210
[sudo] user 的密码:
[user@localhost ~]$ sudo ifconfig ens37
ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.10.210 netmask 255.255.255.0 broadcast 192.168.10.255
inet6 fe80::20c:29ff:fe18:b5c2 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:18:b5:c2 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 25 bytes 3829 (3.7 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#查找UID为0的用户
#cat /etc/passwd/ | cut -d: -f3 | gerp -E "^[0]$" | wc -l
五、用户登录信息查看
1、id命令
查看用户的基本属性,用户UID,基本组及附加组
语法:
id [OPTION]... [USER]
选项:
| 选项 | 作用 | | ---- | ---- |
案例:
[root@localhost ~]# id user
uid=1000(user) gid=1000(user) 组=1000(user),10(wheel)
2、w命令
查看当前系统登录详情
语法:
w [options]
选项:
选项 | 作用 |
---|---|
-h | 不显示表头 |
案例:
[root@localhost ~]# w
20:23:22 up 11:43, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.166.1 19:57 25:38 0.37s 0.15s bash
root pts/1 192.168.166.1 17:56 2.00s 0.70s 0.01s w
3、who命令
显示当前系统登录的摘要信息
语法:
选项:
选项 | 作用 |
---|---|
-b, --boot | 上次系统启动时间 |
-u, --users | 列出已登录的用户 |
案例:
[root@localhost ~]# who
root pts/0 2025-05-15 19:57 (192.168.166.1)
root pts/1 2025-05-15 17:56 (192.168.166.1)
1)查看系统的启动时间
[root@localhost ~]# who -b
系统引导 2025-05-15 08:40
2)查看系统登录用户
[root@localhost ~]# who -u
root pts/0 2025-05-15 19:57 00:22 53692 (192.168.166.1)
root pts/1 2025-05-15 17:56 . 38568 (192.168.166.1)
4、whoami命令
显示当前登录用户的名称
语法:
whoami
选项:
选项 | 作用 |
---|---|
案例:
[root@localhost ~]# whoami
root
5、finger命令
查看用户登录信息,默认系统不存在该命令,需要安装
[root@localhost ~]# yum install -y finger
语法:
finger
选项:
选项 | 作用 |
---|---|
案例:
[root@localhost ~]# finger
Login Name Tty Idle Login Time Office Office Phone Host
root root pts/0 43 May 15 19:57 (192.168.166.1)
root root pts/1 May 15 17:56 (192.168.166.1)
6、last命令
last命令可以查看登录用户列表,last命令实际上从日志文件/var/log/wtmp读取信息并显示用户最近的登录列表。此命令普通用户也可以执行。
查看没见过的用户登录
语法:
last
选项:
选项 | 作用 |
---|---|
案例:
[root@localhost ~]# last
root pts/1 192.168.115.1 Mon Apr 8 19:35 still logged in
root pts/2 192.168.115.1 Mon Apr 8 19:30 still logged in
root pts/1 192.168.115.1 Mon Apr 8 19:30 - 19:32 (00:02)
root pts/0 :0 Mon Apr 8 19:28 still logged in
root :0 :0 Mon Apr 8 19:28 still logged in
reboot system boot 3.10.0-1160.el7. Mon Apr 8 19:15 - 11:45 (-7:-29)
root pts/0 :0 Tue Mar 26 10:08 - 10:09 (00:00)
root :0 :0 Tue Mar 26 10:08 - crash (13+09:06)
reboot system boot 3.10.0-1160.el7. Mon Mar 25 20:08 - 11:45 (13+15:37)
wtmp begins Mon Mar 25 20:08:19 2024
var/log/wtmp 路径
echo > wtmp
7、lastb命令
lastb命令可以从日志文件/var/log/btmp中读取信息,并显示用户登录失败的记录用于发现系统登录异常。此命令要求root用户才可以执行,lastb可用参数与last命令参数相同。
语法:
last
选项:
选项 | 作用 |
---|---|
案例:
[root@localhost ~]# lastb
user1 pts/1 Thu May 15 19:30 - 19:30 (00:00)
1 ssh:notty 192.168.166.1 Mon May 12 15:14 - 15:14 (00:00)
1 ssh:notty 192.168.166.1 Mon May 12 15:14 - 15:14 (00:00)
1 ssh:notty 192.168.166.1 Mon May 12 15:14 - 15:14 (00:00)
1 ssh:notty 192.168.166.1 Mon May 12 15:14 - 15:14 (00:00)
1 ssh:notty 192.168.166.1 Mon May 12 15:14 - 15:14 (00:00)
1 ssh:notty 192.168.166.1 Mon May 12 15:14 - 15:14 (00:00)
1 ssh:notty 192.168.166.1 Mon May 12 15:13 - 15:13 (00:00)
root :0 :0 Sun May 11 01:05 - 01:05 (00:00)
user :0 :0 Sun May 11 08:22 - 08:22 (00:00)
btmp begins Sun May 11 08:22:24 2025
8、lastlog命令
统计当前系统中存在用户的登录情况
语法:
lastlog
选项:
选项 | 作用 |
---|---|
案例:
[root@localhost ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/0 192.168.166.1 四 5月 15 19:57:19 +0800 2025
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
sync **从未登录过**
shutdown **从未登录过**
halt **从未登录过**
mail **从未登录过**
operator **从未登录过**
games **从未登录过**
ftp **从未登录过**
nobody **从未登录过**
systemd-network **从未登录过**
dbus **从未登录过**
polkitd **从未登录过**
libstoragemgmt **从未登录过**
colord **从未登录过**
rpc **从未登录过**
saned **从未登录过**
saslauth **从未登录过**
abrt **从未登录过**
setroubleshoot **从未登录过**
rtkit **从未登录过**
pulse **从未登录过**
radvd **从未登录过**
chrony **从未登录过**
unbound **从未登录过**
qemu **从未登录过**
tss **从未登录过**
usbmuxd **从未登录过**
geoclue **从未登录过**
gluster **从未登录过**
gdm :0 四 5月 15 08:40:33 +0800 2025
rpcuser **从未登录过**
nfsnobody **从未登录过**
gnome-initial-setup **从未登录过**
sshd **从未登录过**
avahi **从未登录过**
postfix **从未登录过**
ntp **从未登录过**
tcpdump **从未登录过**
user pts/0 四 5月 15 19:57:34 +0800 2025
user1 pts/1 四 5月 15 19:31:34 +0800 2025
user2 **从未登录过**