linux脚本:实现一个有sudo密码的用户,更改www-data所有的目录为自己的,并进入该目录执行 git pull,然后再回来把这个目录所有者改为www-data

  Server
#!/bin/bash

# 配置区(按需修改)
TARGET_DIR="/var/www/project"  # 目标目录路径
USER_NAME="有sudo密码的当前用户"            # 临时所有者用户名
DEFAULT_OWNER="www-data"      # 默认所有者

# 预检函数
precheck() {
    # 检查目录是否存在[3](@ref)
    if [ ! -d "$TARGET_DIR" ]; then
        echo "[错误] 目录 $TARGET_DIR 不存在"
        exit 1
    fi
    
    # 检查当前用户是否具有sudo权限[6](@ref)
    if ! sudo -n true 2>/dev/null; then
        echo "[提示] 需要sudo权限,请输入密码:"
        if ! sudo -v; then
            echo "[错误] 无法验证sudo权限"
            exit 1
        fi
    fi
}

# 主执行流程
main() {
    # 步骤1:修改目录所有者[1,3](@ref)
    echo "▷ 修改目录所有者为 $USER_NAME..."
    sudo chown -R "${USER_NAME}:${USER_NAME}" "$TARGET_DIR" || {
        echo "[错误] 权限修改失败"; exit 2
    }

    # 步骤2:执行Git操作[5](@ref)
    echo "▷ 进入目录执行Git更新..."
    (
        cd "$TARGET_DIR" || exit 3
        git pull || {
            echo "[警告] Git拉取失败,检查网络或仓库状态"
            exit 4
        }
    )

    # 步骤3:恢复目录权限[3,8](@ref)
    echo "▷ 恢复目录所有者为 $DEFAULT_OWNER..."
    sudo chown -R "${DEFAULT_OWNER}:${DEFAULT_OWNER}" "$TARGET_DIR" || {
        echo "[错误] 权限恢复失败"; exit 5
    }

    echo "✅ 所有操作已完成"
}

# 执行入口
precheck
main

LEAVE A COMMENT