云计算基础-3:Linux 用户权限管理

发布时间:2026/6/1 10:08:37

云计算基础-3:Linux 用户权限管理 云计算基础-3Linux 用户权限管理本文系统整理了 Linux 系统中用户权限管理的核心知识包括基本权限 UGO、ACL 权限以及特殊权限三大模块配合大量实战案例帮助读者全面掌握 Linux 权限管理。 博客原文链接Breeze一、为什么需要权限管理在日常生活中权限无处不在QQ 空间的红钻特权游戏 VIP 会员特权腾讯视频/爱奇艺会员特权在 Linux 系统中权限管理同样重要——它决定了哪个用户能以什么方式访问哪个文件。这就是权限的核心本质。二、基本权限 UGO2.1 权限对象Linux 将权限对象分为三类对象缩写含义属主u (user)文件的主人属组g (group)文件所属的用户组其他人o (other)除主人和组员之外的用户所有人a (all)u g o2.2 权限类型权限符号数字含义读r4查看文件内容写w2修改文件内容执行x1运行程序或脚本2.3 查看权限使用ls -l命令查看文件权限[rootlocalhost ~]# ls -l /root/1.txt-rw-r--r--.1root root1795月2514:27 /root/1.txt逐段解读- rw- r-- r-- . 1 root root 179 5月 25 14:27 /root/1.txt │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ └─ 文件名和路径 │ │ │ │ │ │ │ │ │ └─ 最后修改时间 │ │ │ │ │ │ │ │ └─ 文件大小 │ │ │ │ │ │ │ └─ 文件属组 │ │ │ │ │ │ └─ 文件属主 │ │ │ │ │ └─ 硬链接数 │ │ │ │ └─ SELinux 扩展属性标记 │ │ │ └─ 其他人的权限 │ │ └─ 属组的权限 │ └─ 属主的权限 └─ 文件类型- 普通文件d 目录l 链接等2.4 设置权限 —— chmod 命令chmodchange mode用于修改文件权限有两种方式方式一符号模式chmod 对象(u/g/o/a) 赋值符(/-/) 权限类型(r/w/x) 文件/目录示例注意观察ll file1后文件权限变化# 1. 创建文件并查看默认权限[rootlocalhost ~]# cd /tmp/[rootlocalhost tmp]# touch file1[rootlocalhost tmp]# ll file1-rw-r--r--.1root root05月909:43 file1# 2. 编写一个脚本程序[rootlocalhost tmp]# vim file1echohello 2026read-p请输入您的姓名nameecho哈哈$name是猪# 3. 为属主添加执行权限[rootlocalhost tmp]# chmod ux file1[rootlocalhost tmp]# ll file1-rwxr--r--.1root root855月909:49 file1# 4. 运行测试 —— 成功[rootlocalhost tmp]# ./file1hello2026请输入您的姓名4567 哈哈4567是猪# 5. 去除权限后运行 —— 失败[rootlocalhost tmp]# chmod u-x file1[rootlocalhost tmp]# ll file1-rw-r--r--.1root root855月909:49 file1[rootlocalhost tmp]# ./file1-bash: ./file1: 权限不够更多符号模式练习chmodarwx file1# 所有人 读写执行chmoda- file1# 所有人 没有权限chmodugrw,or file1# 属主属组 读写其他人 只读方式二数字模式r4 w2 x1# 743 属主(421rwx) 属组(4r) 其他(3rx)[rootlocalhost tmp]# ll file1-rw-r--r--.1root root855月909:49 file1[rootlocalhost tmp]#[rootlocalhost tmp]# chmod 743 file1[rootlocalhost tmp]#[rootlocalhost tmp]# ll file1-rwxr---wx.1root root855月909:49 file12.5 修改属主和属组 —— chown 命令chownchange owner用于更改文件的所有者# 语法chown用户名.组名 文件# 同时修改属主和属组chown用户名 文件# 只改属主chown.组名 文件# 只改属组# 示例[rootlocalhost ~]# chown alice.hr file1 # 改属主、属组[rootlocalhost ~]# chown alice file1 # 只改属主[rootlocalhost ~]# chown .hr file1 # 只改属组# -R 选项递归修改目录中所有文件[rootlocalhost ~]# chown -R alice.hr dir1/chgrpchange group专门用于修改文件所属组[rootlocalhost ~]# chgrp it file1 # 改文件属组[rootlocalhost ~]# chgrp -R it dir1/ # 递归修改目录属组2.6 综合实战案例需求对文件file10.txt设置以下权限属主user100读写执行7属组jishuzu含 user200只读4其他人没有权限0完整操作步骤# 1. 进入 /tmp 目录[rootlocalhost tmp]# cd /tmp# 2. 创建文件[rootlocalhost tmp]# touch file10.txt[rootlocalhost tmp]# ll file10.txt-rw-r--r--.1root root05月910:13 file10.txt# 默认权限主人读写组读其他人读# 3. 准备测试账号[rootlocalhost tmp]# useradd user100[rootlocalhost tmp]# useradd user200[rootlocalhost tmp]# useradd user300[rootlocalhost tmp]# groupadd jishuzu[rootlocalhost tmp]# usermod -aG jishuzu user200[rootlocalhost tmp]# id user200uid6671(user200)gid6672(user200)组6672(user200),6674(jishuzu)# 4. 授予权限740[rootlocalhost tmp]# chmod 740 file10.txt[rootlocalhost tmp]# ll file10.txt-rwxr-----.1root root05月910:13 file10.txt# 5. 修改属主和属组[rootlocalhost tmp]# chown user100.jishuzu file10.txt[rootlocalhost tmp]# ll file10.txt-rwxr-----.1user100 jishuzu05月910:13 file10.txt测试结果验证测试用户读写执行结果user100属主✅✅✅全部成功user200属组✅❌❌只能查看user300其他人❌❌❌全部失败我们给文件赋予了740的权限user100和jishuzu分别作为该文件的属主属组分别有着7rwx和4x的权限。user200加入了jishuzu就自然享受到了4r的权限而user300几不属于该文件的属主也不属于属组jishuzu就被划分到其他人的权限0中。三、基本权限 ACL3.1 UGO 的局限性思考使用 chmod 能针对多个独立用户设置不同的文件权限吗user01 rwx file1 user02 rw file1 user03 r file1 user04 rwx file1 user05 rw file1答案是不能UGO 只能设置一个用户、一个组和其他人三种对象的权限。ACLAccess Control List文件权限管理正是为此而生——它可以为不同的用户设置不同的基本权限。3.2 ACL 语法setfacl-mu:alice:rw /home/test.txt# 命令 设置 用户:用户名:权限 文件对象3.3 设置 ACL 权限# 准备文件[rootlocalhost ~]# touch /home/test.txt[rootlocalhost ~]# ll /home/test.txt-rw-r--r--.1root root05月1111:17 /home/test.txt# 设置用户 alice 和 jack 的 ACL 权限[rootlocalhost ~]# useradd alice[rootlocalhost ~]# useradd jack[rootlocalhost ~]# setfacl -m u:alice:rw /home/test.txt[rootlocalhost ~]# setfacl -m u:jack:- /home/test.txt# 设置其他人的权限[rootlocalhost ~]# setfacl -m o::rw /home/test.txt3.4 查看 ACL 权限[rootlocalhost ~]# getfacl /home/test.txtgetfacl: Removing leading/from absolute path names# file: home/test.txt ← 文件名# owner: root ← 属主root# group: root ← 属组rootuser::rw- ← 用户属主rw- user:alice:rw- ← 用户 alicerw- user:jack:--- ← 用户 jack--- group::r-- ← 组属组r-- mask::rw- ← 掩码rw- other::rw- ← 其他人rw-3.5 删除 ACL 权限# 增加 hr 组对 test.txt 的读取权限[rootlocalhost ~]# setfacl -m g:hr:r /home/test.txt[rootlocalhost ~]# getfacl /home/test.txtgetfacl: Removing leading/from absolute path names# file: home/test.txt# owner: root# group: rootuser::rw- user:alice:rw- user:jack:--- group::r-- group:hr:r-- mask::rw- other::rw-# 删除 hr 组的 ACL 权限[rootlocalhost ~]# setfacl -x g:hr /home/test.txt[rootlocalhost ~]# getfacl /home/test.txtgetfacl: Removing leading/from absolute path names# file: home/test.txt# owner: root# group: rootuser::rw- user:alice:rw- user:jack:--- group::r-- mask::rw- other::rw-# 删除所有 ACL 权限[rootlocalhost ~]# setfacl -b /home/test.txt[rootlocalhost ~]# getfacl /home/test.txtgetfacl: Removing leading/from absolute path names# file: home/test.txt# owner: root# group: rootuser::rw- group::r-- other::rw-3.6 UGO 与 ACL 对比特性UGOACL可设置的用户数1 个用户 1 个组多个独立用户灵活性低高命令chmod / chownsetfacl / getfacl适用场景简单权限管理精细权限管理四、特殊权限4.1 SUIDSet UID含义当一个程序设置了 SUID 权限后普通用户执行该程序时会临时获得该程序属主的权限。思考一个安全场景# root 用户查看自己创建的文件 —— 成功root → /usr/bin/cat(root)→ /root/file1.txt → ✅# 普通用户 alice 查看 root 的文件 —— 失败alice → /usr/bin/cat(alice)→ /root/file1.txt → ❌ 权限不够分析root运行是超管的权限普通用户运行时是普通用户的权限一些文件是普通用户无法访问的。SUID 提权演示# 1. 查看 cat 程序原始权限[rootlocalhost ~]# ll /usr/bin/cat-rwxr-xr-x.1root root5416010月312018/usr/bin/cat# 2. 为 cat 程序添加 SUID 权限[rootlocalhost ~]# chmod us /usr/bin/cat[rootlocalhost ~]# ll /usr/bin/cat-rwsr-xr-x.1root root5416010月312018/usr/bin/cat# ↑ 注意这里的 s 标志# 3. 普通用户运行 cat —— 暂时获得 root 权限[rootlocalhost ~]# su - alice[alicelocalhost ~]$cat/root/file1.txt123465# 结果普通用户成功看到了 root 的内容 ⚠️# ⚠️ 重要测试完成后必须删除 SUID 权限[rootlocalhost ~]# chmod u-s /usr/bin/cat[rootlocalhost ~]# ll /usr/bin/cat-rwxr-xr-x.1root root5416010月312018/usr/bin/cat⚠️安全提醒SUID 权限非常强大使用不当会带来严重的安全风险请务必谨慎使用并及时撤销。4.2 文件属性 chattr用途用于锁定文件防止被意外修改或删除。# 1. 创建新文件查看默认属性[rootlocalhost ~]# touch file100[rootlocalhost ~]# lsattr file100-------------- file100# 2. 添加不可修改属性i[rootlocalhost ~]# chattr i file100# 3. 查看属性[rootlocalhost ~]# lsattr file100----i--------- file100# 4. 尝试删除 —— 失败[rootlocalhost ~]# rm -rf file100rm: cannot removefile100:Operation not permitted# 5. 还原属性[rootlocalhost ~]# chattr -i file100常用属性属性描述a (append)允许在文件中进行追加操作A不允许更新文件的访问时间c (compressed)启用这个属性时文件在磁盘上会自动压缩d (dump)不能使用 dump 命令备份文件D设置了文件夹的 D 属性时更改会同步保存在磁盘上e (extent format)表明该文件使用磁盘上的块的映射扩展i (immutable)在文件上启用这个属性时不能更改、重命名或者删除这个文件j (journaling)设置了这个属性时文件的数据首先保存在日志中然后再写入文件S (synchronous)设置了这个属性时变更会同步保存到磁盘上chattr 属性中可以使用的不同的选项-R递归地修改文件夹和子文件夹的属性-Vchattr 命令会输出带有版本信息的冗余信息-f忽略大部分错误信息问题及实战案例设置文件属性(特别权限)针对所有用户root是否会收到影响呢root用户作为Linux系统的超管对文件系统可以说是掌握着绝对的控制权同时也伴随着风险例如误删误改等无法恢复的操作下面案例来证明文件属性是否对root用户生效。# 1. root 用户创建测试文件[rootlocalhost ~]# touch test.txt[rootlocalhost ~]# echo 111111 test.txt# 查看默认权限方便与修改后对比[rootlocalhost ~]# lsattr test.txt---------------- test.txt# 2. 设置不可变属性[rootlocalhost ~]# chattr i test.txt[rootlocalhost ~]# lsattr test.txt----i----------- test.txt# 3. root 尝试修改/删除全部失败[rootlocalhost ~]# echo 222222 test.txtbash: test.txt: 权限不够[rootlocalhost ~]# rm -rf test.txtrm: 无法删除test.txt:不允许的操作[rootlocalhost ~]# chmod 777 test.txtchmod: 更改test.txt的权限: 不允许的操作# 4. root 唯一能做的移除属性后再操作[rootlocalhost ~]# chattr -i test.txt[rootlocalhost ~]# rm -rf test.txtroot 用户不受限制的唯一地方是可以自由添加、修改、移除任何文件的 chattr 属性。这意味着chattr 属性是防误操作和限制普通用户的有效手段但不能用来防御已经获得 root 权限的攻击者攻击者可以直接chattr -i移除属性真正防御 root 级别的攻击需要结合其他机制如文件系统只读挂载、IMA/EVM 完整性校验、安全模块如 AppArmor/SELinux4.3 进程掩码 umask概述新建文件和目录的默认权限会受到 umask 的影响umask 表示要减掉的权限。# 查看当前 umask[rootlocalhost ~]# umask0022# 目录777 - 022 755 (rwxr-xr-x)# 文件666 - 022 644 (rw-r--r--)# 在默认 umask 下创建文件和目录[rootlocalhost ~]# touch file800[rootlocalhost ~]# mkdir dir800[rootlocalhost ~]# ll -d dir800 file800drwxr-xr-x.2root root65月1114:11 dir800/ -rw-r--r--.1root root05月1114:11 file800临时修改 umask# 修改 umask 为 000[rootlocalhost ~]# umask 000[rootlocalhost ~]# mkdir dir900[rootlocalhost ~]# touch file900[rootlocalhost ~]# ll -d dir900 file900drwxrwxrwx.2root root65月1114:12 dir900/ -rw-rw-rw-.1root root05月1114:12 file900# 目录777 - 000 777 (rwxrwxrwx)# 文件666 - 000 666 (rw-rw-rw-)注意umask 的修改是临时的重启后恢复默认值。永久修改需要将 umask 写入/etc/profile或~/.bashrc。永久修改 umask# 1. 用root权限编辑/etc/profilevim/etc/profile# 2. 在文件**末尾**添加以下内容以umask 022为例umask000# 3. 保存退出vim中按Esc输入:wq回车# 4. 让当前会话立即生效无需重启source/etc/profile# 5. 验证umask# 输出0000五、命令速查表命令用途示例chmod修改文件权限chmod 755 file.txt/chmod ux file.txtchown修改文件属主/属组chown user.group file.txtchgrp修改文件属组chgrp group file.txtsetfacl设置 ACL 权限setfacl -m u:alice:rw file.txtgetfacl查看 ACL 权限getfacl file.txtlsattr查看文件属性lsattr file.txtchattr修改文件属性chattr i file.txtumask查看/修改进程掩码umask 022六、总结Linux 权限管理是系统运维的核心技能之一。本文从三个层次进行了全面讲解基本权限 UGO—— 通过chmod和chown命令管理属主、属组和其他人的读写执行权限适用于大多数日常场景。ACL 权限—— 通过setfacl和getfacl实现更细粒度的权限控制可以为不同的用户设置不同的权限。特殊权限—— 包括 SUID 提权、chattr 文件锁定和 umask 默认权限掩码用于满足更高级的安全管理需求。掌握这些知识后你将能够有效地管理 Linux 系统的安全边界确保数据和文件得到妥善保护。

相关新闻