如何编写文件权限修改脚本

wen 实用脚本 28

基础chmod使用脚本

#!/bin/bash
# 基本权限修改脚本
echo "=== 文件权限修改脚本 ==="
# 设置文件为所有者读写、组只读、其他人只读
chmod 644 file.txt
# 设置目录及其内容权限
chmod -R 755 my_directory/
# 使用符号模式
chmod u+x script.sh  # 给所有者添加执行权限
chmod g+w file.txt   # 给组添加写权限
chmod o-r file.txt   # 移除其他人的读权限

批量修改脚本

#!/bin/bash
# 批量修改指定类型文件的权限
TARGET_DIR="/path/to/directory"
FILE_EXTENSION="*.sh"
echo "正在修改 $TARGET_DIR 中的 $FILE_EXTENSION 文件权限..."
# 批量添加执行权限
find "$TARGET_DIR" -name "$FILE_EXTENSION" -type f -exec chmod +x {} \;
# 批量修改为特定权限
find "$TARGET_DIR" -name "*.php" -type f -exec chmod 644 {} \;
find "$TARGET_DIR" -name "*.html" -type f -exec chmod 755 {} \;

交互式权限修改脚本

#!/bin/bash
echo "=== 交互式文件权限修改工具 ==="
# 获取用户输入
read -p "请输入文件/目录路径: " FILE_PATH
if [ ! -e "$FILE_PATH" ]; then
    echo "错误: 路径不存在!"
    exit 1
fi
read -p "请输入权限模式 (如: 755, 644, 777): " PERMISSION
# 确认操作
echo "即将修改: $FILE_PATH"
echo "新权限: $PERMISSION"
read -p "确认修改? (y/n): " CONFIRM
if [ "$CONFIRM" = "y" ] || [ "$CONFIRM" = "Y" ]; then
    if [ -d "$FILE_PATH" ]; then
        chmod -R "$PERMISSION" "$FILE_PATH"
    else
        chmod "$PERMISSION" "$FILE_PATH"
    fi
    echo "权限修改成功!"
else
    echo "操作已取消"
fi

安全的文件权限设置脚本

#!/bin/bash
# 安全配置文件权限
set_permissions_safely() {
    local TARGET=$1
    local TYPE=$2
    echo "安全配置权限: $TARGET"
    case $TYPE in
        "script")
            # 脚本文件: 所有者可执行,其他人只读
            chmod 755 "$TARGET"
            ;;
        "config")
            # 配置文件: 严格权限
            chmod 600 "$TARGET"
            ;;
        "public")
            # 公开文件: 所有人可读
            chmod 644 "$TARGET"
            ;;
        "private")
            # 私有文件: 仅所有者可访问
            chmod 700 "$TARGET"
            ;;
        *)
            echo "未知的文件类型: $TYPE"
            return 1
            ;;
    esac
}
# 使用示例
set_permissions_safely "script.sh" "script"
set_permissions_safely "config.ini" "config"

递归修改脚本

#!/bin/bash
# 递归修改目录权限
modify_directory_permissions() {
    local BASE_DIR=$1
    local DIR_PERM=$2      # 目录权限
    local FILE_PERM=$3     # 文件权限
    echo "正在处理目录: $BASE_DIR"
    # 修改目录权限
    find "$BASE_DIR" -type d -exec chmod "$DIR_PERM" {} \;
    # 修改文件权限
    find "$BASE_DIR" -type f -exec chmod "$FILE_PERM" {} \;
    echo "完成!"
}
# 使用:目录755,文件644
modify_directory_permissions "/var/www/html" 755 644

常用权限模板

#!/bin/bash
# 常用权限配置模板
case $1 in
    "web")
        # Web目录标准权限
        find /var/www/html -type d -exec chmod 755 {} \;
        find /var/www/html -type f -exec chmod 644 {} \;
        ;;
    "secure")
        # 安全配置
        chmod 600 /etc/shadow
        chmod 600 /etc/gshadow
        chmod 644 /etc/passwd
        chmod 644 /etc/group
        ;;
    "dev")
        # 开发环境
        chmod 755 *.sh
        chmod 644 *.py
        chmod 644 *.js
        ;;
    *)
        echo "用法: $0 {web|secure|dev}"
        exit 1
        ;;
esac

使用建议

  1. 权限值参考

    如何编写文件权限修改脚本

    • 755:目录和可执行文件
    • 644:普通文件
    • 600:敏感配置文件
    • 700:私有文件
  2. 安全注意事项

    • 避免使用 777 权限
    • 使用 -R 参数时注意目录结构
    • 修改前最好备份权限
  3. 执行脚本

    # 先给脚本添加执行权限
    chmod +x modify_permissions.sh

然后执行

./modify_permissions.sh


根据具体需求选择合适的脚本模板,注意在生产环境操作前先在测试环境验证。

抱歉,评论功能暂时关闭!