本文目录导读:

我来提供一个自动修复文件权限的Shell脚本,适用于Linux系统:
基础版本 - 修复目录和文件权限
#!/bin/bash
# 自动修复文件权限脚本
# 用法: ./fix_permissions.sh [目标目录]
# 设置目标目录,默认为当前目录
TARGET_DIR="${1:-.}"
# 检查目标目录是否存在
if [ ! -d "$TARGET_DIR" ]; then
echo "错误: 目录 '$TARGET_DIR' 不存在"
exit 1
fi
echo "开始修复权限: $TARGET_DIR"
# 修复目录权限: 755 (rwxr-xr-x)
find "$TARGET_DIR" -type d -exec chmod 755 {} \;
echo "✓ 目录权限已修复为 755"
# 修复文件权限: 644 (rw-r--r--)
find "$TARGET_DIR" -type f -exec chmod 644 {} \;
echo "✓ 文件权限已修复为 644"
echo "权限修复完成!"
高级版本 - 包含多种修复选项
#!/bin/bash
# 自动修复文件权限脚本 - 高级版
# 功能: 修复目录、文件、脚本、配置文件等的权限
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 默认配置
TARGET_DIR="${1:-.}"
OWNER="${2:-$(whoami)}"
GROUP="${3:-$(id -gn)}"
# 显示帮助信息
show_help() {
echo "用法: $0 [目标目录] [所有者] [组]"
echo ""
echo "选项:"
echo " -h, --help 显示帮助信息"
echo " -v, --verbose 详细输出模式"
echo ""
echo "示例:"
echo " $0 修复当前目录"
echo " $0 /var/www 修复 /var/www 目录"
echo " $0 /home/user/www user www 修复目录并设置所有者"
exit 0
}
# 处理参数
VERBOSE=0
while [[ $# -gt 0 ]]; do
case $1 in
-h|--help)
show_help
;;
-v|--verbose)
VERBOSE=1
shift
;;
*)
if [ -z "$TARGET_DIR" ] || [ "$TARGET_DIR" = "." ]; then
TARGET_DIR=$1
elif [ -z "$OWNER" ]; then
OWNER=$1
elif [ -z "$GROUP" ]; then
GROUP=$1
fi
shift
;;
esac
done
# 检查目录
if [ ! -d "$TARGET_DIR" ]; then
echo -e "${RED}错误: 目录 '$TARGET_DIR' 不存在${NC}"
exit 1
fi
echo -e "${YELLOW}开始修复权限:${NC} $TARGET_DIR"
echo -e "${YELLOW}所有者:${NC} $OWNER:$GROUP"
echo "----------------------------------------"
# 进度显示函数
progress() {
if [ $VERBOSE -eq 1 ]; then
echo -e "${GREEN}$1${NC}"
fi
}
# 1. 修复目录权限为 755
echo -n "修复目录权限... "
find "$TARGET_DIR" -type d -exec chmod 755 {} \; 2>/dev/null
progress "✓ 目录权限已设置为 755 (rwxr-xr-x)"
# 2. 修复普通文件权限为 644
echo -n "修复文件权限... "
find "$TARGET_DIR" -type f ! -name "*.sh" ! -name "*.pl" ! -name "*.py" ! -name "*.rb" \
! -name "*.exe" ! -name "*.bin" -exec chmod 644 {} \; 2>/dev/null
progress "✓ 文件权限已设置为 644 (rw-r--r--)"
# 3. 修复脚本文件权限为 755
echo -n "修复脚本文件权限... "
find "$TARGET_DIR" -type f \( -name "*.sh" -o -name "*.pl" -o -name "*.py" \
-o -name "*.rb" -o -name "*.exe" -o -name "*.bin" \) -exec chmod 755 {} \; 2>/dev/null
progress "✓ 脚本文件权限已设置为 755 (rwxr-xr-x)"
# 4. 修复配置文件权限为 640
echo -n "修复配置文件权限... "
find "$TARGET_DIR" -type f \( -name "*.conf" -o -name "*.cfg" -o -name "*.ini" \
-o -name "*.config" \) -exec chmod 640 {} \; 2>/dev/null
progress "✓ 配置文件权限已设置为 640 (rw-r-----)"
# 5. 修复密钥文件权限为 600
echo -n "修复密钥文件权限... "
find "$TARGET_DIR" -type f \( -name "*.key" -o -name "*.pem" -o -name "*.cert" \
-o -name "id_rsa" -o -name "id_dsa" \) -exec chmod 600 {} \; 2>/dev/null
progress "✓ 密钥文件权限已设置为 600 (rw-------)"
# 6. 设置所有者
if [ -n "$OWNER" ] && [ -n "$GROUP" ]; then
echo -n "设置文件所有者... "
chown -R "$OWNER:$GROUP" "$TARGET_DIR" 2>/dev/null
if [ $? -eq 0 ]; then
progress "✓ 所有者已设置为 $OWNER:$GROUP"
else
echo -e "${RED}✗ 设置所有者失败(需要root权限)${NC}"
fi
fi
echo "----------------------------------------"
echo -e "${GREEN}权限修复完成!${NC}"
# 显示修复统计
echo ""
echo "文件权限统计:"
DIR_COUNT=$(find "$TARGET_DIR" -type d | wc -l)
FILE_COUNT=$(find "$TARGET_DIR" -type f | wc -l)
echo " 目录数: $DIR_COUNT"
echo " 文件数: $FILE_COUNT"
Web应用专用版本
#!/bin/bash
# Web应用文件权限修复脚本
# 适用于 Laravel, WordPress, Drupal 等PHP应用
APP_DIR="${1:-/var/www/html}"
if [ ! -d "$APP_DIR" ]; then
echo "错误: 目录不存在"
exit 1
fi
# Web服务器用户
WEB_USER="www-data" # Ubuntu/Debian
# WEB_USER="nginx" # CentOS/RHEL
# WEB_USER="apache" # 其他
echo "修复Web应用权限: $APP_DIR"
# 1. 目录权限
find "$APP_DIR" -type d -exec chmod 755 {} \;
echo "目录权限: 755"
# 2. 文件权限
find "$APP_DIR" -type f -exec chmod 644 {} \;
echo "文件权限: 644"
# 3. 可写目录(上传、缓存、日志等)
if [ -d "$APP_DIR/storage" ]; then
chmod -R 775 "$APP_DIR/storage"
echo "Storage目录: 775 (可写)"
fi
if [ -d "$APP_DIR/bootstrap/cache" ]; then
chmod -R 775 "$APP_DIR/bootstrap/cache"
echo "Cache目录: 775 (可写)"
fi
if [ -d "$APP_DIR/wp-content/uploads" ]; then
chmod -R 775 "$APP_DIR/wp-content/uploads"
echo "Uploads目录: 775 (可写)"
fi
# 4. 设置所有权
chown -R "$WEB_USER:$WEB_USER" "$APP_DIR"
echo "所有者: $WEB_USER"
echo "修复完成!"
使用示例
# 1. 保存脚本 chmod +x fix_permissions.sh # 2. 基本使用 - 修复当前目录 ./fix_permissions.sh # 3. 修复指定目录 ./fix_permissions.sh /var/www/myapp # 4. 高级版本 - 带详细输出 ./fix_permissions.sh -v /home/user/projects # 5. 指定所有者和组 ./fix_permissions.sh /var/www/www user www-data # 6. Web应用专用 ./fix_permissions_web.sh /var/www/html # 7. 使用crontab定期执行 # crontab -e # 每天凌晨3点修复 # 0 3 * * * /path/to/fix_permissions.sh /var/www/html
注意事项
- 备份重要数据:在执行权限修复前,建议备份重要文件
- 测试环境先行:先在测试环境验证脚本
- 权限要求:某些操作需要root权限
- 特殊文件:注意保留特殊文件的原始权限设置
- 安全考虑:不要过度开放权限,遵循最小权限原则
这个脚本可以根据你的具体需求进行调整,比如添加更多文件类型、修改默认权限设置等。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播