From 5d33049d7b92e5ad0f592efb93d01bdcee58d13e 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: Mon, 10 Feb 2025 10:25:20 +0800 Subject: [PATCH] feat: Add SIP status check and enhance file modification safety in Cursor MAC ID modifier - Implemented comprehensive System Integrity Protection (SIP) status check - Added detailed user warnings and guidance for SIP-related risks - Enhanced file backup and modification process with sudo permissions - Improved error handling for file system permission issues - Added safety checks and user confirmation before modifying system files - Included informative messages about SIP status and recommended actions --- scripts/run/cursor_mac_id_modifier.sh | 88 ++++++++++++++++++++++----- 1 file changed, 74 insertions(+), 14 deletions(-) diff --git a/scripts/run/cursor_mac_id_modifier.sh b/scripts/run/cursor_mac_id_modifier.sh index 3299a4a..b112f67 100644 --- a/scripts/run/cursor_mac_id_modifier.sh +++ b/scripts/run/cursor_mac_id_modifier.sh @@ -299,6 +299,45 @@ generate_new_config() { modify_cursor_app_files() { log_info "正在修改 Cursor 主程序文件..." + # 检查 SIP 状态 + if csrutil status | grep -q "enabled"; then + echo + log_warn "检测到系统完整性保护(SIP)处于启用状态" + echo + echo -e "${YELLOW}什么是系统完整性保护(SIP)?${NC}" + echo "SIP 是 macOS 的一项重要安全功能,它可以:" + echo "1. 防止系统关键文件被修改" + echo "2. 保护系统进程不被注入代码" + echo "3. 限制具有 root 权限的操作" + echo "4. 保护系统免受恶意软件攻击" + echo + echo -e "${RED}关闭 SIP 的潜在风险:${NC}" + echo "1. 系统更容易受到恶意软件攻击" + echo "2. 可能导致系统不稳定" + echo "3. 降低系统整体安全性" + echo "4. 可能影响系统更新" + echo + echo -e "${YELLOW}如果您决定继续,需要:${NC}" + echo "1. 重启 Mac 并进入恢复模式(启动时按住 Command + R)" + echo "2. 打开终端,输入命令:csrutil disable" + echo "3. 重启后再运行此脚本" + echo "4. 完成修改后强烈建议重新启用 SIP(csrutil enable)" + echo + echo -e "${GREEN}安全建议:${NC}" + echo "1. 仅在必要时临时关闭 SIP" + echo "2. 完成修改后立即重新启用" + echo "3. 在关闭 SIP 期间不要浏览不信任的网站或运行不明来源的软件" + echo "4. 确保从可信来源下载和运行脚本" + echo + read -p "了解风险后,是否继续尝试修改文件?(y/N) " -n 1 -r + echo + if [[ ! $REPLY =~ ^[Yy]$ ]]; then + log_info "已取消文件修改,建议保持 SIP 开启以确保系统安全" + return 0 + fi + echo -e "${YELLOW}请记住在完成修改后重新启用 SIP 以确保系统安全${NC}" + fi + local files=("$MAIN_JS_PATH" "$CLI_JS_PATH") for file in "${files[@]}"; do @@ -311,12 +350,19 @@ modify_cursor_app_files() { local backup_file="${file}.bak" if [ ! -f "$backup_file" ]; then log_info "正在备份 $file" - cp "$file" "$backup_file" || { + if ! sudo cp "$file" "$backup_file" 2>/dev/null; then log_error "无法备份文件: $file" + echo -e "${YELLOW}可能原因:${NC}" + echo "1. 系统完整性保护(SIP)已启用" + echo "2. 文件系统权限限制" + echo + echo -e "${YELLOW}建议操作:${NC}" + echo "1. 禁用 SIP 后重试" + echo "2. 手动复制文件进行备份" continue - } - chmod 644 "$backup_file" - chown "$CURRENT_USER" "$backup_file" + fi + sudo chmod 644 "$backup_file" + sudo chown "$CURRENT_USER" "$backup_file" else log_debug "备份已存在: $backup_file" fi @@ -352,15 +398,15 @@ modify_cursor_app_files() { continue fi - # # 验证文件内容是否包含必要的代码 - # log_debug "正在验证文件内容..." - # if ! grep -q "crypto\s*\.\s*randomUUID\s*(" "$temp_file"; then - # log_debug "文件内容预览:" - # head -n 20 "$temp_file" | log_debug - # log_error "修改后的文件缺少必要的代码: $file" - # rm -f "$temp_file" - # continue - # fi + # 验证文件内容是否包含必要的代码 + log_debug "正在验证文件内容..." + if ! grep -q "crypto\s*\.\s*randomUUID\s*(" "$temp_file"; then + log_debug "文件内容预览:" + head -n 20 "$temp_file" | log_debug + log_error "修改后的文件缺少必要的代码: $file" + rm -f "$temp_file" + continue + fi #log_debug "文件验证通过" @@ -377,7 +423,21 @@ modify_cursor_app_files() { log_info "成功修改文件: $file" done - log_info "请重启Cursor,如果重启后无法打开或者报异常,请重新安装Cursor" + + log_info "如果文件修改失败,请检查系统完整性保护(SIP)状态" + log_info "您可以在终端中运行 'csrutil status' 查看当前状态" + + if csrutil status | grep -q "disabled"; then + echo + log_warn "检测到 SIP 当前已禁用" + echo -e "${YELLOW}安全提醒:${NC}" + echo "1. 请使用以下步骤重新启用 SIP:" + echo " - 重启 Mac 并进入恢复模式(Command + R)" + echo " - 打开终端,输入:csrutil enable" + echo " - 重启电脑" + echo "2. 保持 SIP 启用对系统安全性至关重要" + echo + fi } # 显示文件树结构