From b2a5edef74253514fd28b14da0a4ed1eabef7479 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=85=8E=E9=A5=BC=E6=9E=9C=E5=AD=90=E5=8D=B7=E9=B2=A8?= =?UTF-8?q?=E9=B1=BC=E8=BE=A3=E6=A4=92?= Date: Tue, 1 Jul 2025 15:10:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=B1=E5=BA=A6=E4=BF=AE=E5=A4=8D=E6=9D=83?= =?UTF-8?q?=E9=99=90=E9=97=AE=E9=A2=98=EF=BC=8C=E5=88=9B=E5=BB=BA=E5=AE=8C?= =?UTF-8?q?=E6=95=B4=E7=9A=84=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84=E5=B9=B6?= =?UTF-8?q?=E8=AE=BE=E7=BD=AE=E9=80=92=E5=BD=92=E6=9D=83=E9=99=90=EF=BC=8C?= =?UTF-8?q?=E7=A1=AE=E4=BF=9D=E7=94=A8=E6=88=B7=E5=9C=A8=E6=89=A7=E8=A1=8C?= =?UTF-8?q?Cursor=E7=9B=B8=E5=85=B3=E6=93=8D=E4=BD=9C=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E9=A1=BA=E5=88=A9=E8=BF=9B=E8=A1=8C=E3=80=82=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E4=BA=86=E8=84=9A=E6=9C=AC=E4=BB=A5=E5=A2=9E=E5=BC=BA=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E6=9D=83=E9=99=90=E7=AE=A1=E7=90=86=E5=92=8C=E6=89=80?= =?UTF-8?q?=E6=9C=89=E6=9D=83=E9=AA=8C=E8=AF=81=EF=BC=8C=E6=8F=90=E5=8D=87?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=BD=93=E9=AA=8C=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/run/cursor_mac_free_trial_reset.sh | 108 +++++++++++++++++---- scripts/run/cursor_mac_id_modifier.sh | 42 ++++++-- 2 files changed, 121 insertions(+), 29 deletions(-) diff --git a/scripts/run/cursor_mac_free_trial_reset.sh b/scripts/run/cursor_mac_free_trial_reset.sh index a05c330..cd7f8f7 100644 --- a/scripts/run/cursor_mac_free_trial_reset.sh +++ b/scripts/run/cursor_mac_free_trial_reset.sh @@ -115,22 +115,78 @@ remove_cursor_trial_folders() { echo done - # 🔧 重要:预创建必要的目录结构,避免权限问题 - log_info "🔧 [修复] 预创建必要的目录结构以避免权限问题..." + # 🔧 重要:深度修复权限问题 + log_info "🔧 [深度修复] 正在进行全面的权限修复..." local cursor_support_dir="$HOME/Library/Application Support/Cursor" local cursor_home_dir="$HOME/.cursor" - # 创建主要目录 - mkdir -p "$cursor_support_dir" 2>/dev/null || true - mkdir -p "$cursor_home_dir" 2>/dev/null || true - mkdir -p "$cursor_home_dir/extensions" 2>/dev/null || true + # 创建完整的目录结构(包括Cursor可能需要的所有子目录) + local directories=( + "$cursor_support_dir" + "$cursor_support_dir/User" + "$cursor_support_dir/User/globalStorage" + "$cursor_support_dir/User/workspaceStorage" + "$cursor_support_dir/User/History" + "$cursor_support_dir/logs" + "$cursor_support_dir/CachedData" + "$cursor_support_dir/CachedExtensions" + "$cursor_support_dir/CachedExtensionVSIXs" + "$cursor_home_dir" + "$cursor_home_dir/extensions" + ) + + log_info "📁 [创建] 创建完整的目录结构..." + for dir in "${directories[@]}"; do + if mkdir -p "$dir" 2>/dev/null; then + log_debug "✅ 创建目录: $dir" + else + log_warn "⚠️ 创建目录失败: $dir" + fi + done + + # 设置递归权限(确保所有子目录都有正确权限) + log_info "🔐 [权限] 设置递归权限..." + chmod -R 755 "$cursor_support_dir" 2>/dev/null || true + chmod -R 755 "$cursor_home_dir" 2>/dev/null || true + + # 特别处理:确保当前用户拥有这些目录 + log_info "👤 [所有权] 确保目录所有权正确..." + chown -R "$(whoami)" "$cursor_support_dir" 2>/dev/null || true + chown -R "$(whoami)" "$cursor_home_dir" 2>/dev/null || true + + # 验证权限设置 + log_info "🔍 [验证] 验证权限设置..." + if [ -w "$cursor_support_dir" ] && [ -w "$cursor_home_dir" ]; then + log_info "✅ [成功] 权限验证通过" + else + log_warn "⚠️ [警告] 权限验证失败,可能仍存在问题" + fi - # 设置正确的权限 - chmod 755 "$cursor_support_dir" 2>/dev/null || true - chmod 755 "$cursor_home_dir" 2>/dev/null || true - chmod 755 "$cursor_home_dir/extensions" 2>/dev/null || true + # 🔍 权限诊断 + log_info "🔍 [诊断] 执行权限诊断..." + echo " 📁 目录权限检查:" + for dir in "${directories[@]}"; do + if [ -d "$dir" ]; then + local perms=$(ls -ld "$dir" | awk '{print $1, $3, $4}') + echo " ✅ $dir: $perms" + else + echo " ❌ $dir: 不存在" + fi + done + + # 🔍 权限诊断 + log_info "🔍 [诊断] 执行权限诊断..." + echo " 📁 目录权限检查:" + for dir in "${directories[@]}"; do + if [ -d "$dir" ]; then + local perms=$(ls -ld "$dir" | awk '{print $1, $3, $4}') + echo " ✅ $dir: $perms" + else + echo " ❌ $dir: 不存在" + fi + done - log_info "✅ [完成] 目录结构预创建完成" + log_info "✅ [完成] 深度权限修复完成" echo # 显示操作统计 @@ -165,19 +221,31 @@ restart_cursor_and_wait() { return 1 fi - # 🔧 确保目录权限正确 - log_info "🔧 [权限] 确保目录权限正确..." + # 🔧 启动前最后一次权限确认 + log_info "🔧 [最终权限] 启动前最后一次权限确认..." local cursor_support_dir="$HOME/Library/Application Support/Cursor" local cursor_home_dir="$HOME/.cursor" - # 再次确认目录存在并设置权限 - mkdir -p "$cursor_support_dir" 2>/dev/null || true - mkdir -p "$cursor_home_dir" 2>/dev/null || true - mkdir -p "$cursor_home_dir/extensions" 2>/dev/null || true + # 再次确认完整目录结构存在 + local directories=( + "$cursor_support_dir" + "$cursor_support_dir/User" + "$cursor_support_dir/User/globalStorage" + "$cursor_support_dir/logs" + "$cursor_support_dir/CachedData" + "$cursor_home_dir" + "$cursor_home_dir/extensions" + ) + + for dir in "${directories[@]}"; do + mkdir -p "$dir" 2>/dev/null || true + done - chmod 755 "$cursor_support_dir" 2>/dev/null || true - chmod 755 "$cursor_home_dir" 2>/dev/null || true - chmod 755 "$cursor_home_dir/extensions" 2>/dev/null || true + # 设置强制权限 + chmod -R 755 "$cursor_support_dir" 2>/dev/null || true + chmod -R 755 "$cursor_home_dir" 2>/dev/null || true + chown -R "$(whoami)" "$cursor_support_dir" 2>/dev/null || true + chown -R "$(whoami)" "$cursor_home_dir" 2>/dev/null || true # 启动Cursor log_info "🚀 [启动] 正在启动Cursor..." diff --git a/scripts/run/cursor_mac_id_modifier.sh b/scripts/run/cursor_mac_id_modifier.sh index d5a0b8e..62d31e6 100644 --- a/scripts/run/cursor_mac_id_modifier.sh +++ b/scripts/run/cursor_mac_id_modifier.sh @@ -140,6 +140,18 @@ remove_cursor_trial_folders() { log_warn "⚠️ [警告] 权限验证失败,可能仍存在问题" fi + # 🔍 权限诊断 + log_info "🔍 [诊断] 执行权限诊断..." + echo " 📁 目录权限检查:" + for dir in "${directories[@]}"; do + if [ -d "$dir" ]; then + local perms=$(ls -ld "$dir" | awk '{print $1, $3, $4}') + echo " ✅ $dir: $perms" + else + echo " ❌ $dir: 不存在" + fi + done + log_info "✅ [完成] 深度权限修复完成" echo @@ -175,19 +187,31 @@ restart_cursor_and_wait() { return 1 fi - # 🔧 确保目录权限正确 - log_info "🔧 [权限] 确保目录权限正确..." + # 🔧 启动前最后一次权限确认 + log_info "🔧 [最终权限] 启动前最后一次权限确认..." local cursor_support_dir="$HOME/Library/Application Support/Cursor" local cursor_home_dir="$HOME/.cursor" - # 再次确认目录存在并设置权限 - mkdir -p "$cursor_support_dir" 2>/dev/null || true - mkdir -p "$cursor_home_dir" 2>/dev/null || true - mkdir -p "$cursor_home_dir/extensions" 2>/dev/null || true + # 再次确认完整目录结构存在 + local directories=( + "$cursor_support_dir" + "$cursor_support_dir/User" + "$cursor_support_dir/User/globalStorage" + "$cursor_support_dir/logs" + "$cursor_support_dir/CachedData" + "$cursor_home_dir" + "$cursor_home_dir/extensions" + ) + + for dir in "${directories[@]}"; do + mkdir -p "$dir" 2>/dev/null || true + done - chmod 755 "$cursor_support_dir" 2>/dev/null || true - chmod 755 "$cursor_home_dir" 2>/dev/null || true - chmod 755 "$cursor_home_dir/extensions" 2>/dev/null || true + # 设置强制权限 + chmod -R 755 "$cursor_support_dir" 2>/dev/null || true + chmod -R 755 "$cursor_home_dir" 2>/dev/null || true + chown -R "$(whoami)" "$cursor_support_dir" 2>/dev/null || true + chown -R "$(whoami)" "$cursor_home_dir" 2>/dev/null || true # 启动Cursor log_info "🚀 [启动] 正在启动Cursor..."