HCRM博客

CentOS批量修改文件权限脚本示例

CentOS chmod批量修改全部文件权限的脚本范例

服务器里几千个文件权限乱七八糟,手动一个个改?手指会抽筋。把下面这段脚本粘进终端,一杯咖啡没喝完,整站权限就整整齐齐了。

CentOS批量修改文件权限脚本示例-图1

为什么权限会乱

解压带Windows习惯的压缩包、多人共用账号、误操作复制,都会把目录带成644、可执行文件带成700。Web服务立刻报403,SSH私钥立刻被系统拒绝。与其事后救火,不如一次写死规则,以后一键还原。

先想清楚:目录与文件得分治

目录需要x位才能cd进去,文件却多数不需要执行。把两者混为一谈,要么网站打不开,要么脚本无法运行。脚本里必须分开处理,find命令的-type参数就是干这个的。

脚本正文:三行搞定,可回滚

新建fixperm.sh,把下面内容原封不动粘进去:

CentOS批量修改文件权限脚本示例-图2

#!/bin/bash

先记录原始权限,万一翻车还能回滚

find /var/www -printf '%m %p\n' > /root/perm.$(date +%s).bak

目录统一755

find /var/www -type d -exec chmod 755 {} +

文件统一644,但*.sh保持750

CentOS批量修改文件权限脚本示例-图3

find /var/www -type f ! -name '*.sh' -exec chmod 644 {} +

find /var/www -type f -name '*.sh' -exec chmod 750 {} +

私钥直接600,谁也别想偷看

find /var/www -name '.key' -o -name 'id_rsa' -exec chmod 600 {} +

保存后chmod +x fixperm.sh,执行前把/var/www换成你实际目录。跑完再ls -l看一眼,世界瞬间清爽。

想更狠?把脚本做成系统服务

把fixperm.sh扔进/usr/local/sbin,再写个最小化的systemd单元:

[Unit]

Description=Fix web permissions

After=network.target

[Service]

Type=oneshot

ExecStart=/usr/local/sbin/fixperm.sh

RemainAfterExit=yes

启用后每次重启自动纠偏,再也不怕同事手滑。

常见翻车点提醒

1. 不要把根目录/当路径,脚本一旦写错,系统直接原地爆炸。

先备份权限,perm.bak文件是后悔药。

有些框架要求缓存目录777,提前在白名单里用-path排除,别让脚本又给你改回755。

如果用了SELinux,chmod后还得restorecon -Rv,否则依旧403。

一条命令快速验证

跑完脚本,用find /var/www -type f -perm /u+x | grep -v '.sh'检查,只要回显为空,就说明没有偷偷摸摸的 Executable 文件混在普通文件里。

把脚本再升级:支持参数化

给脚本加个$1,就能批量处理任意路径:

TARGET=${1:-/var/www}

以后./fixperm.sh /data/mysite,想改哪就改哪,脚本复用率瞬间翻倍。

懒人版:直接复制粘贴

如果你连vim都不想开,整条命令一次性执行:

curl -sSL https://pastebin.com/raw/xxxxxx | bash -s /var/www

前提是你信得过源,最好把链接换成自己仓库,安全比方便更重要。

权限这玩意儿,平时没人理,一炸就炸全网。把脚本丢进定时任务,每周日凌晨跑一次,比任何应急手册都靠谱。记住:备份、分批、分类型,三件套永远不过时。

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

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

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