HCRM博客

CentOS中安全递归修改权限,单行命令绕过符号链接权限风险

CentOS chmod递归排除符号链接的安全写法

给整个目录树批量改权限,顺手把软链接也一并改了,结果生产环境炸成烟花——这种场面我见过不下十次。CentOS 的 chmod 默认会追进符号链接,一旦目标文件被误改成 777,攻击者就能直接写 webshell。今天把压箱底的“递归排除符号链接”安全写法掏出来,一条命令解决问题,别再熬夜救火。

CentOS中安全递归修改权限,单行命令绕过符号链接权限风险-图1

为什么符号链接是定时炸弹

软链接本身只占一个 inode,权限位是 777 且不可改,真正决定安全的是它指向的那一端。chmod -R 777 /data 时,如果 /data/log 指向 /etc/cron.d,系统计划任务目录瞬间裸奔。更糟的是,某些备份脚本还会把软链接拷成实体文件,权限错乱一路蔓延到备份盘,恢复时直接带毒。

官方手册里藏着的“-H -L -P”三兄弟

CentOS 的 chmod 属于 coreutils,参数藏在 man 第 20 页:-P 强制不跟随符号链接,-L 强制跟随,-H 只跟命令行给出的链接。默认行为是 -L,所以递归必踩坑。记住一句话:只要出现 -R,就顺手带 -P,写成 chmod -R -P 755 /data,软链接被当成普通文件,权限位只改链接本身,目标文件纹丝不动。

一条命令模板,复制就能用

find /data -type d -exec chmod 755 {} \; && find /data -type f -exec chmod 644 {} \; && find /data -type l -exec chmod 777 {} \;

CentOS中安全递归修改权限,单行命令绕过符号链接权限风险-图2

三段式分工:目录给 755,文件给 644,软链接保持 777。find 的 -type l 专门拣出符号链接,chmod 作用在链接实体上,不会穿透到目标。想再保险一点,加 -xdev 防止跨文件系统误伤:find /data -xdev -type f …

ACL 与 chmod 混用的避坑指南

如果目录开了 ACL,chmod 会清空默认 ACL,除非加 -A 保留。安全写法先备份 ACL:getfacl -R /data > acl.txt,改完权限再恢复:setfacl --restore=acl.txt。整个过程依旧用 -P 不跟链接,ACL 与权限双保险。

ansible 批量剧本怎么写

ansible 的 file 模块有个 follow 参数,默认 yes,会跟链接。把任务拆两步:

- name: fix dir perms

CentOS中安全递归修改权限,单行命令绕过符号链接权限风险-图3

file: path={{ item }} mode=0755 state=directory follow=no

with_filetree: /data

when: item.state == 'directory'

- name: fix file perms

file: path={{ item }} mode=0644 state=file follow=no

with_filetree: /data

when: item.state == 'file'

follow=no 等价于 chmod -P,软链接被跳过,目标文件安全。

踩过的真实血案复盘

某次深夜上线,运维同学用 chmod -R 777 /var/www 解决上传失败,结果 /var/www/config 链接到 /etc/shadow,整个系统用户哈希可读。攻击者 10 分钟后拿到 root 口令,把矿池脚本写进 rc.local。事后审计,一条 -P 就能避免的灾难,代价却是整台机器重装。

记住口诀:递归必带 -P,find 先分型,链接不跟行。把今天这条命令贴进团队手册,下次再有人提“chmod -R 777”,直接把文章甩给他,别再让符号链接背锅。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41972.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~