用户分类与 UID 范围
在 CentOS/RHEL 7 系统中,用户分为以下三类:
- 管理员用户(root):UID 为 0,是最高的特权用户,拥有对系统的所有资源进行管理的权限。
- 系统用户:UID 范围为 1 至 999,用于运行系统服务或后台进程,这类用户一般不允许直接登录。
- 普通用户:UID 从 1000 开始,用于日常操作,这类用户可以登录系统但权限受限,主要用于非系统管理任务。
用户与组管理命令
useradd:创建新用户
useradd [参数] 用户名
常用参数:
-u
:指定用户的 UID。-g
:指定用户的基本组。-G
:指定用户的附加组。-d
:指定用户的家目录。-s
:指定用户登录时使用的 shell 环境。-m
:自动创建用户家目录。-e
:指定用户的终止时间。-f
:指定用户过期多少天后永久停权。-M
:不创建家目录。
groupadd:创建新用户组
groupadd [参数] 组名
usermod:修改已存在的用户信息
usermod [参数] 用户名
userdel:删除用户
userdel [参数] 用户名
groupdel:删除用户组
groupdel 组名
权限管理
Linux 系统中的权限管理主要是通过对文件或目录的权限设置来实现的。权限控制分为所有者(u)、所属组(g)和其他人(o)三类,权限包括读(r)、写(w)和执行(x)三种操作。
-
chown:改变文件或目录的所有者和组
chown [所有者]:[所属组] 文件/目录
示例:
chown cjc:cjc file.txt
-
chmod:修改文件或目录的权限
chmod [模式] 文件名
示例:
chmod u=rw,g=r,o=r file.txt
-
特殊权限
- SUID(Set User ID):当文件具有 SUID 位时,无论哪个用户执行这个文件,都会以文件所有者的身份运行,而不是以当前执行用户的权限运行。
- SGID(Set Group ID):当文件具有 SGID 位时,普通用户执行该文件时,会临时获得该文件所属组的权限。
- Sticky Bit:当目录具有 Sticky Bit 位时,用户只能删除自己在该目录中创建的文件,但无法删除其他用户的文件。
Linux 提权
-
sudo:sudo 工具允许用户执行需要较高权限的任务,而无需知道 root 密码。
sudo [选项] [命令]
常用选项:
-i
:模拟成为 root 用户的 shell。-s
:在当前 shell 中执行命令。-u
:指定用户执行命令。-k
:清除用户的 sudo 密码缓存。
-
SUID 提权:如果某个程序具有 SUID 位,那么即使普通用户执行该程序也能以 root 权限运行,从而实现提权。
find / -perm -4000 -type f 2>/dev/null
上面的命令可以找出具有 SUID 权限的文件。
-
SGID 提权:类似 SUID,如果某个程序具有 SGID 位,那么执行该程序时会临时获得所属组的权限。
find / -perm -2000 -type f 2>/dev/null
上面的命令可以找出具有 SGID 权限的文件。
-
Sticky Bit 提权:当一个目录具有 Sticky Bit 位时,用户只能删除自己在该目录中创建的文件,但无法删除其他用户的文件。
chmod +t directory
为目录添加 Sticky Bit 权限。
-
内核漏洞:系统内核可能存在漏洞,攻击者可以利用这些漏洞进行提权。
-
配置错误:管理员配置错误也可能导致提权风险,如过于宽松的 sudo 权限。
-
文件权限滥用:如果配置文件的权限设置不当(例如
/etc/passwd
或/etc/shadow
文件),攻击者可能会利用这些文件执行恶意操作,改变系统账户的密码。
通过以上的用户与组管理及权限控制机制,Linux 系统能够有效地管理用户账户,保护系统安全。同时,合理的权限设置也能够保障数据的安全性和完整性。
实践案例
让我们通过一些实际的案例来看看如何应用这些命令。
创建用户并设置权限
假设我们需要创建一个新的用户 xiaoming
并赋予一定的权限:
# 创建用户 xiaoming
useradd xiaoming
# 设置 xiaoming 的家目录为 /home/xiaoming 并赋予读写执行权限
mkdir /home/xiaoming
chown xiaoming:xiaoming /home/xiaoming
chmod 700 /home/xiaoming
# 设置 xiaoming 的密码
echo "xiaoming:xiaoming" | chpasswd
创建组并管理成员
现在我们创建一个新的用户组 students
并将用户 xiaoming
加入到这个组中:
# 创建组 students
groupadd students
# 将用户 xiaoming 添加到 students 组
usermod -aG students xiaoming
使用 SUID 和 SGID 权限
假设有一个名为 myapp
的可执行文件需要以 root 权限运行:
# 创建 myapp 文件并赋予执行权限
echo "#!/bin/bash" > myapp
chmod +x myapp
# 设置 SUID 权限
chmod u+s myapp
# 确认文件权限
ls -l myapp
使用 Sticky Bit
为了让 /tmp
目录中的用户只能删除自己的文件,我们可以这样做:
# 设置 /tmp 目录的 Sticky Bit
chmod +t /tmp
通过上述实践案例,可以看到 Linux 用户与组管理及权限控制的实际应用。合理地使用这些命令和技巧,可以有效地保护系统的安全。