Linux 用户与组管理及权限控制

15 篇文章 0 订阅
7 篇文章 0 订阅
用户分类与 UID 范围

在 CentOS/RHEL 7 系统中,用户分为以下三类:

  1. 管理员用户(root):UID 为 0,是最高的特权用户,拥有对系统的所有资源进行管理的权限。
  2. 系统用户:UID 范围为 1 至 999,用于运行系统服务或后台进程,这类用户一般不允许直接登录。
  3. 普通用户: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 用户与组管理及权限控制的实际应用。合理地使用这些命令和技巧,可以有效地保护系统的安全。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值