centos7中的用户管理
一、用户及用户组的相关文件和字段含义
1、用户及用户组相关文件
2、相关字段含义
(1)/etc/passwd
-
以冒号:分隔,分为七个字段
-
第一字段:用户名
-
第二字段:密码占位符,
-
第三字段:UID 用户ID
-
第四字段:GID 所在用户组ID
- 第五字段:用户注释信息
- 第六字段:用户家目录
- 第七字段:用户的登录SHELL工具
root:x:0:0:root:/root:/bin/bash
(2)/etc/shadow
-
以冒号:分隔,分为九个字段
-
第一字段:用户名
-
第二字段:加密后的密码,!!表示没有密码
-
第三字段:最近一次更改密码的时间,记录的是当前时间距离Unix元年的天数
-
第四字段:密码最少使用天数,0表示无限制
-
第五字段:密码最长使用天数,99999表示无限制。
-
第六字段:密码距离过期天数的预警时间。
-
第七字段:密码过期后的宽恕时间,在此时间内用户可以更改密码,过了此时间后系统会禁用 此用户,不能再登录。
-
第八字段:账号过期时间,如果值为空则表示永久可用。
-
第九字段:保留字段,未使用。
[root@yun01 ~]# head -1 /etc/shadow
root:$6$6aPxAKAtPTf9ql3k$maYcCgs81k7eCdYk8p2KFFBJ4ahoIfQ3PnNr.kNkgj4Prd1zkcHkgaxNB91MzmiV/MAV6QMlGYEAh03a/WS7N/::0:99999:7:::
(3)/etc/group
-
组信息文件,分成四个字段
-
第一字段:组名称。
-
第二字段:组密码占位符。
-
第三字段:GID。
-
第四字段:显示该组作为哪个用户的附加组,多个用逗号分隔。
[root@yun01 ~]# cat /etc/group
root:x:0:
(4)/etc/gshadow
-
组密码文件,分为四段
-
第一段:组名称。
-
第二段:组密码,如果是空或者!表示没有密码。
-
第三段:用户组管理者,空表示没有管理者,如果有多个用逗号分隔。
-
第四段:显示该用户组作为哪个用户的附加组,若有多个用逗号分隔。
[root@yun01 ~]# head -1 /etc/gshadow
root:::
(5)/etc/skel3
- 存放用户家目录模板文件,新用户家目录内的初识内容从该目录内复制。
[root@yun01 ~]# ll -a /etc/skel/
总用量 24
drwxr-xr-x. 2 root root 62 3月 6 10:42 .
drwxr-xr-x. 74 root root 8192 3月 13 12:57 ..
-rw-r--r--. 1 root root 18 4月 1 2020 .bash_logout
-rw-r--r--. 1 root root 193 4月 1 2020 .bash_profile
-rw-r--r--. 1 root root 231 4月 1 2020 .bashrc
(6) /var/spool/mail/
- 用户邮箱文件所在目录
[root@yun01 ~]# ll -a /var/spool/mail
总用量 0
drwxrwxr-x. 2 root mail 18 3月 12 00:24 .
drwxr-xr-x. 8 root root 87 3月 6 10:43 ..
-rw-rw----. 1 hwz1 mail 0 3月 12 00:00 hwz1
在Linux系统中是通过UID和GID来区分不同用户和组的,用户的名称是给人类看的,系统仅仅能够识别 ID这样的数字。
3、UID与GID
(1)UID:用户ID,唯一标识一个用户的数字。
- 在CentOS 系统中UID为0的用户为管理员root用户,CentOS 7之前UID1-499为系统用户,为 了满足文件或服务启动的需要,一般不能登录,UID500之后为普通用户。CentOS 7中UID1- 200为运行系统自带进程的系统用户,201-999为安装程序的系统用户。1000+为普通用户。
(2)GID:组ID,唯一标识一个组的数字。
- 每个用户可以属于多个组,用户必须有一个主组,其他为用户的附加组。每个组里可以包含多个用户。
二、用户管理命令
1、添加新用户
(1)语法
-
添加新用户 useradd 用户名
-
添加新用户到某个组 useradd -g 组名 用户名
(2)示例
# 添加用户zhangsan
[root@yun01 ~]# useradd zhangsan
# 添加新用户lisi到zhangsan组
useradd -g zhangsan lisi
2、passwd设置用户密码
(1)语法
- passwd 用户名
(2)示例
[root@yun01 ~]# passwd lisi
更改用户 lisi 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
3、id查看用户ID及组ID相关信息
(1)语法
- id 用户名
(2)示例
[root@yun01 ~]# id lisi
uid=1003(lisi) gid=1002(zhangsan) 组=1002(zhangsan)
[root@yun01 ~]# id zhangsan
uid=1002(zhangsan) gid=1002(zhangsan) 组=1002(zhangsan)
[root@yun01 ~]#
4、su切换用户
(1)语法
- su 用户名
(2)示例
[root@yun01 ~]# su zhangsan
[zhangsan@yun01 root]$ su lisi
密码:
[lisi@yun01 root]$ exit
exit
[zhangsan@yun01 root]$ exit
exit
[root@yun01 ~]#
[root@yun01 ~]# su - lisi ## 区别在于不加 - 直接在当前目录,加 - 在该用户的家目录
上一次登录:三 3月 13 14:30:57 CST 2024pts/0 上
[lisi@yun01 ~]$
[lisi@yun01 ~]$ su root -c ls /root ## 管理员身份运行,要输入管理员密码,没有输出
密码:
[lisi@yun01 ~]$
(3)注意
- 在root用户下切换到普通用户不需要输入密码,可以直接切换;普通用户与普通用户之间切换,需要输入被切换用户的用户密码;普通用户切换到root用户需要输入root用户的密码。
- 切换用户后,需要输入exit才能退出当前用户,不然该用户进程一直在后台运行。
5、userdel删除用户
(1)语法
-
userdel 用户名 # 仅删除用户但不删除用户主目录
-
userdel -r 用户名 # 用户和用户主目录都删除;-r 删除用户的同时,删除与用户相关的所有的文件
(2)示例
[root@yun01 ~]# userdel zhangsan
userdel:组“zhangsan”没有移除,因为它包含其它成员。
[root@yun01 ~]# id zhangsan
id: zhangsan: no such user
[root@yun01 ~]# userdel -r lisi
[root@yun01 ~]# id lisi
id: lisi: no such user
[root@yun01 ~]# ls /home
hwz1 zhangsan
6、who查看登陆用户信息
(1)语法
-
显示自身用户名称 whoami
-
显示登陆用户的用户名以及登陆信息 who am i
(2)示例
[root@yun01 ~]# whoami
root
[root@yun01 ~]# who am i
root pts/0 2024-03-13 13:54 (192.168.200.1)
[root@yun01 ~]# who i am
root pts/0 2024-03-13 13:54 (192.168.200.1) # 两者都可查看登录信息
7、sudo命令
(1)概念
-
在CentOS 7中,
sudo
是一个非常重要的命令,用于让普通用户以超级用户的权限来执行特定的命令。sudo
的含义是 “superuser do”,它允许授权的用户以另一个用户的身份来执行命令,通常是以超级用户(root)的身份来执行特定的系统管理任务。 -
当在 CentOS 7 中使用
sudo
命令时,它允许授权的用户以超级用户 (root) 的身份来执行特定的命令。这种方式可以有效地限制普通用户对系统的访问和操作权限,同时减少了在 root 用户下操作可能带来的安全风险。 -
在 CentOS 7 中,
sudo
命令的使用是基于/etc/sudoers
配置文件的,管理员可以在该文件中对特定用户或用户组设置哪些命令可以以超级用户权限执行,以及是否需要密码验证等安全设置。 -
使用
sudo
命令可以减少在 root 用户下操作可能带来的安全风险,主要有以下几个方面:
- 最小权限原则:通过使用
sudo
,管理员可以按需授权普通用户执行特定命令,而不必将完整的 root 权限授予他们。这样做可以遵循最小权限原则,即用户只能获得完成其任务所需的最低权限级别,而不会无意中执行危险或潜在有害的操作。这有助于减少系统遭受恶意行为或错误操作的风险。 - 记录和审计:通过使用
sudo
执行命令,可以更好地记录和审计用户的活动。因为每个通过sudo
执行的命令都会在系统的日志文件中留下记录,管理员可以轻松追踪和监视用户的操作。这对于安全审计、故障排除和追踪问题非常有帮助。 - 密码策略和安全性:使用
sudo
可以设置密码策略,并确保只有经过授权的用户才能以 root 权限执行命令。管理员可以在/etc/sudoers
文件中配置是否需要输入密码来使用sudo
,以及设置密码过期时间和强度要求。这有助于提高系统的整体安全性。 - 防止误操作:在 root 用户下执行命令时,一个小的误操作可能会导致灾难性的结果。而使用
sudo
可以限制普通用户执行危险命令的能力,减少了因误操作而引发的系统故障或数据损坏的风险。
总体而言,使用 sudo
命令可以在保持系统安全性的同时,为管理员提供更好的控制权限和追踪用户活动的能力,减少不必要的风险和潜在的安全威胁。
(2)语法
-
sudo [选项] [-u 用户名 | 用户组] 命令
-
-b 将后续的命令放到背景中让系统自行运行,不对当前的 shell 环境产生影响。
-
-u 后面可以接欲切换的用户名,若无此项则代表切换身份为 root 。
-
-l 此选项的用法为 sudo -l,用于显示当前用户可以用 sudo 执行那些命令。
-
(3)示例
[hwz1@yun01 root]$ sudo ls /root
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] hwz1 的密码:
hwz1 不在 sudoers 文件中。此事将被报告。
[hwz1@yun01 root]$
# 我们没有配置 /etc/sudoers 文件,系统默认是不允许的
# 配置 /ect/sudoers 文件
[root@yun01 ~]# su hwz1
[hwz1@yun01 root]$ sudo ls /root
[sudo] hwz1 的密码:
4 Desktop f2 file1 newfilename test.c test.txt tmp.tar.gz xcz
anaconda-ks.cfg f1 f3 my passwd test.sh text1 vitest ztest
[hwz1@yun01 root]$
# hwz1 ALL=(ALL) NOPASSWD:ALL 配置成采用sudo命令时,不需要输入密码
8、usermod修改用户
(1)语法
- usermod [选项] [参数] 用户名
(2)示例
[root@yun01 ~]# usermod -L hwz1
[root@yun01 ~]# usermod -U hwz1
三、用户组管理命令
- 每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户 组的规定有所不同, 如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
- 用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的 更新。
1、groupadd新增组
(1)语法
- groupadd 组名
(2)示例
[root@yun01 ~]# groupadd test1
[root@yun01 ~]# tail -1 /etc/group
test1:x:1003:
2、groupdel删除组
(1)语法
- groupdel 组名
(2)示例
[root@yun01 ~]# groupdel test1
[root@yun01 ~]# tail -1 /etc/group
zhangsan:x:1002:
[root@yun01 ~]#
3、groupmod修改组
(1)语法
-
groupmod -n 新组名 老组名
-
-n 指定工作组的新组名
(2)示例
[root@yun01 ~]# groupadd test1
[root@yun01 ~]# groupmod -n test2 test1
[root@yun01 ~]# tail -1 /etc/group
test2:x:1003:
[root@yun01 ~]#
# 将组名test1 改为 test2
4、gpasswd把用户添加进组或从组中删除
(1)语法
- gpasswd [选项] 组名
(2)示例
[root@yun01 ~]# gpasswd -a hwz1 test2
正在将用户“hwz1”加入到“test2”组中
[root@yun01 ~]#
-
groupmod -n 新组名 老组名
-
-n 指定工作组的新组名
(2)示例
[root@yun01 ~]# groupadd test1
[root@yun01 ~]# groupmod -n test2 test1
[root@yun01 ~]# tail -1 /etc/group
test2:x:1003:
[root@yun01 ~]#
# 将组名test1 改为 test2
4、gpasswd把用户添加进组或从组中删除
(1)语法
- gpasswd [选项] 组名
[外链图片转存中…(img-bdqMiMMH-1710376419026)]
(2)示例
[root@yun01 ~]# gpasswd -a hwz1 test2
正在将用户“hwz1”加入到“test2”组中
[root@yun01 ~]#