【八个月网安课程】第二周·周二:文件权限 rwx 与数字表示、chmod/chown/chgrp

发布时间:2026/8/18 13:15:06
【八个月网安课程】第二周·周二:文件权限 rwx 与数字表示、chmod/chown/chgrp 以下是第二周周二学习内容的详细展开聚焦 Linux 文件权限、数字表示、chmod/chown/chgrp以及特殊权限 SUID。今天将结合昨天创建的用户进行实操为后续的权限维持与提权学习打下核心基础。第二周·周二文件权限 rwx 与数字表示、chmod/chown/chgrp 今日学习目标达成效果能准确描述Linux 中用户u、组g、其他人o的权限模型以及 r读、w写、x执行对文件和目录的不同含义能熟练进行权限的数字八进制与符号表示互转例如能将rwxr-x--x转换为 751将 640 转换为rw-r-----能解释4755、2755、1777 等特殊权限数字的含义重点吃透 SUID (4) 的安全机制与风险能独立使用chmod以符号模式和数字模式修改文件/目录权限使用chown、chgrp更改文件属主和属组能用命令find / -perm -4000查找系统中所有设置了 SUID 的可执行文件并分析其对系统安全的影响能结合上周的知识理解为什么对关键文件设置最小权限是安全基线之一比如/etc/shadow的权限为何是640或000。 一、Linux 权限模型基础Linux 将访问文件或目录的请求分为三类主体属主User, u文件的创建者所有者。属组Group, g文件所属的用户组该组内的所有用户共享这部分权限。其他人Others, o既不是属主也不在属组内的所有用户。对每个主体系统定义了三种基本权限权限字符文件上的含义目录上的含义r(读)可以查看文件内容cat,more可以列出目录下的文件列表lsw(写)可以修改文件内容vi,可以在目录下创建、删除、重命名文件需要 x 配合x(执行)可以执行该文件如二进制程序、脚本可以进入该目录cd并访问其内部文件即作为路径解析安全视角一个目录如果没有 x 权限即使有 r 权限也无法列出详细内容因为无法进入目录访问 inode 信息。对敏感配置文件如/etc/shadow设置 000 或 640可防止非授权用户读取。恶意脚本如果被赋予了 x 权限并放在可执行路径中就是典型的权限滥用。用ls -l可以查看文件的权限、属主、属组。输出示例-rwxr-xr-- 1 pentest admin 4096 Jan 1 12:00 myscript.sh分解说明第一个字符-表示普通文件d为目录l为软链接。接下来九个字符分成三组rwx属主权限、r-x属组权限、r--其他人权限。 二、权限的数字表示八进制权限也可以用三位或四位八进制数字表示这是chmod数字模式的基础也是渗透测试中必须烂熟于心的“权限数值”。每个权限对应一个数值r 4w 2x 1。每组将权限数字相加即得该组权限值。常用数字组合数字权限串含义7rwx读写执行6rw-读写5r-x读执行4r–只读3-wx写执行少用2-w-只写1–x只执行0—无权限三位数字权限依次代表属主、属组、其他人。例如755→rwxr-xr-x属主全权限属组和其他人读执行644→rw-r--r--属主读写其他人只读600→rw-------仅属主可读写常用于私钥文件700→rwx------仅属主有全部权限常用于个人脚本安全示例SSH 私钥~/.ssh/id_rsa必须为 600否则 SSH 会拒绝使用。系统日志/var/log/syslog通常是 640 或 644但要防止普通用户随意清除可能会设为更严权限。 三、特殊权限SUID、SGID、Sticky Bit重点 SUID三位数字前面还可以有一个特殊权限数字组成四位数字如4755。特殊权限数字值作用对象含义SUID(Set User ID)4可执行文件任何用户执行该文件时进程的权限暂时提升为文件属主的权限而不是执行者自身的权限SGID(Set Group ID)2可执行文件 / 目录文件执行时进程获得文件属组的权限目录在该目录下创建的新文件自动继承该目录的属组而非创建者的主组Sticky Bit(粘滞位)1目录仅目录有效。在该目录下只有文件属主或 root才能删除或重命名自己的文件即使用户对目录有写权限典型如/tmp权限 1777今日核心SUID 权限数字 4例如/usr/bin/passwd通常权限为-rwsr-xr-x即 4755。注意属主的 x 变为 s表示 SUID 被设置且属主原本有执行权限。如果属主原本没有 x会显示为大写 S代表无效的 SUID。普通用户执行passwd命令时需要修改/etc/shadow文件而该文件仅 root 可写。passwd命令的属主是 root 且设置了 SUID所以用户执行passwd时临时获得了 root 权限才能修改 shadow 文件。执行结束后进程权限恢复。安全风险如果系统中存在不合理的 SUID 二进制文件例如某个命令被错误地设置了 SUID root攻击者可以利用它来提升权限。这也是后阶段权限维持与提权的重要技巧今天你只需理解原理并学会如何查找它们。测试题涉及的 4755 含义第一个数字 4 表示设置了 SUID 位。后面 755 表示属主 rwx (7)属组 r-x (5)其他人 r-x (5)。完整权限字符串-rwsr-xr-x。同理2755SGID rwxr-xr-x →-rwxr-sr-x。1777Sticky rwxrwxrwx →drwxrwxrwt(目录)。 四、chmod 命令详解chmod用来修改文件或目录的权限支持符号模式和数字模式。1. 符号模式语法chmod [who][/-/][permissions] 文件whou属主、g属组、o其他人、a所有人默认操作符添加权限-移除权限设置为指定权限权限r、w、x、sSUID/SGID、tsticky例子chmodux script.sh# 给属主添加执行权限chmodgo-w file.txt# 移除属组和其他人的写权限chmodarw report.txt# 所有人只留读写删除执行chmodus /path/to/prog# 设置SUID若属主原本有x则显示schmodgs /shared/dir# 设置SGIDchmodt /tmp/mydir# 设置粘滞位2. 数字模式更常用、精确语法chmod [模式数字] 文件用四位数字或三位数字。四位时第一位是特殊权限位SUID4, SGID2, Sticky1可累加如 6SUIDSGID。例子chmod755script.sh# rwxr-xr-xchmod600id_rsa# rw-------chmod4755mybackdoor# rwsr-xr-x (SUID)chmod1777/tmp/sharedir# rwxrwxrwt (粘滞位)常用递归选项-Rchmod -R 755 mydir/对目录及内部所有文件递归设置权限使用时需谨慎可能把所有文件都加 x。 五、chown 与 chgrp 命令chown修改文件的属主和属组。语法chown [属主][:属组] 文件示例chownpentest file.txt# 将属主改为 pentestchownpentest:admin file.txt# 同时改属主和属组为 adminchown:admin file.txt# 只改属组等同于 chgrp admin file.txtchown-Rpentest:pentest /home/pentest# 递归修改chgrp专门修改文件属组。示例chgrp developers project/安全提示普通用户只能将自己的文件属主改给其他用户吗其实 Linux 通常禁止非特权用户更改文件的属主即使该文件是自己的这可以防止逃避磁盘配额等。但 root 可以随意改。部分系统普通用户可以将文件属主改为同组的其他用户但典型发行版已禁止。利用 chown 可以将文件送给需要的最小权限用户避免越权。✍️ 六、动手实践权限实验与 SUID 查找前提需要 Linux 系统最好有昨天的用户pentest和 root 权限或 sudo。实践 1理解 rwx 对文件和目录的意义# 以 root 或普通用户登录建议用 pentest 用户su- pentestcd~echoecho hellotest.shls-ltest.sh# 默认可能是 644 或 664# 尝试执行无x权限./test.sh# 提示权限拒绝chmodux test.sh ./test.sh# 成功输出 hello# 测试目录权限mkdirtestdirtouchtestdir/file.txtchmod444testdir# 只有读权限lstestdir# 能列出文件名但可能无法查看属性详细信息因无xcdtestdir# 失败权限拒绝chmod555testdir# 加xcdtestdirls-l# 成功cd..rmtestdir/file.txt# 需要写权限可测试 chmod 755实践 2测试特殊权限 SUID关键实验我们编写一个简单的 C 程序或 Shell 脚本来理解 SUID。但 shell 脚本的 SUID 通常被现代系统忽略所以我们使用cp命令或者用passwd命令演示并查找系统 SUID 文件。了解系统 SUID 文件# 查看 passwd 命令的权限ls-l/usr/bin/passwd# 输出-rwsr-xr-x 1 root root ... /usr/bin/passwd# 注意属主 x 变为 s这就是 SUID。使用 find 查找所有 SUID 文件今天的测试题命令find/-perm-4000-typef2/dev/null-perm -4000匹配权限至少包含 4000即 SUID 位设置的文件。-type f只查找普通文件排除目录等。2/dev/null屏蔽因权限不足产生的错误信息。你可能会找到/usr/bin/passwd、/usr/bin/su、/usr/bin/sudo、/usr/bin/ping等。观察它们的权限理解为什么它们需要 SUID。安全实验使用 SUID 提权原理演示可选需谨慎如果你是 root可以临时创建一个 SUID root 的二进制来感受威力实验后立即删除# 以 root 执行cp/bin/bash /tmp/rootshellchmod4755/tmp/rootshellls-l/tmp/rootshell# -rwsr-xr-x root root然后切换到普通用户 pentestsu- pentest /tmp/rootshell-p# -p 保留特权现在你将直接获得 root shellwhoami# 显示 rootexit实验完毕后务必删除rm -f /tmp/rootshell。这个实验让你直接明白为何 SUID 文件必须严格控制。实践 3使用 chown 和 chgrp 管理文件所有权# 以 root 或 sudo 进行touch/tmp/testfilechownpentest:pentest /tmp/testfilels-l/tmp/testfile# 确认属主属组改变# 尝试让普通用户修改属主会失败su- pentestchownroot /tmp/testfile# 操作不被允许实践 4配置一个只有 root 能查看的文件模拟影子文件sudotouch/tmp/secret.txtechomy secret|sudotee/tmp/secret.txtsudochmod600/tmp/secret.txt# 尝试以普通用户读取cat/tmp/secret.txt# 权限拒绝 七、课后测试题与解析测试题 1解释权限数字 4755 的含义。参考答案第一位数字4表示设置了SUID特殊权限。后三位755分别代表属主权限为rwx7属组权限为r-x5其他人权限为r-x5。完整权限字符串为-rwsr-xr-x。该权限通常用于属主为 root 的可执行文件使得任何执行该文件的用户都能临时获得 root 权限进程有效 UID 变为 0例如/usr/bin/passwd。测试题 2如何找到系统中所有设置了 SUID 权限的文件写出完整命令并解释各部分。参考答案find/-perm-4000-typef2/dev/nullfind /从根目录开始搜索。-perm -4000查找权限位至少包含 4000 的文件即 SUID 位为 1。模式中的-表示“所有指定位都被设置”而不是精确匹配。-type f仅查找普通文件避免目录、设备文件等。2/dev/null将标准错误通常是“Permission denied”重定向到空设备只显示成功访问的结果使输出干净。附加题如果一个可执行文件的权限为-rwxrwxr-x属主是 root那么普通用户执行它时能获得 root 权限吗为什么参考答案不能。因为没有设置 SUID 位权限字符串中属主部分没有s。普通用户执行该程序时进程的权限仍然是该用户自己的权限除非通过 sudo 等方式。SUID 是提权的关键。✅ 今日学习效果自检清单我能解释文件权限九位字符的意义并准确理解 rwx 对文件和目录的差异我能瞬间将 644、755、600、777 等数字转换为权限字符串反之亦然我知道 4755 中 4 的特殊含义是 SUID能举出至少一个系统中典型 SUID 程序如 passwd我能够使用chmod符号模式和数字模式修改权限并使用chown/chgrp更改所有权我执行了find / -perm -4000 -type f 2/dev/null并看到了系统中的 SUID 文件列表我理解 SUID 文件的安全风险若被攻击者利用可直接提权我成功完成了文件和目录权限实验并能复现“权限拒绝”与“成功执行”⚠️ 阶段避坑重点不要随意给文件 777 权限这是最常见的错误为图省事开放所有权限等于放弃了权限隔离。不要对脚本文件滥用 SUID多数 Linux 出于安全原因会忽略 Shell 脚本的 SUID 位应使用编译好的二进制并严格控制。查找 SUID 文件时不要忽略2/dev/null否则满屏的“Permission denied”会淹没真正结果。修改chown时确保理解影响将文件属主错误地移交给其他用户可能导致原属主失去访问权限需要 root 才能恢复。目录的 x 权限是基础很多新手为了安全去掉目录的 x 权限导致连cd都进不去实际上合理的做法是通过正确的属主属组和权限来控制访问。明天周三我们将学习文件操作命令ls、cd、cp、mv、find、grep 与重定向这些命令将频繁应用到你今天创建的实验文件和目录上请保留实验环境明天会直接用它们来练习批量查找和内容过滤为日志分析打下基础。