Browse Source
增强Cursor目录权限管理功能,新增确保目录权限正确的函数,优化了配置文件生成后的权限检查和恢复机制。确保在修改过程中提供清晰的操作反馈,提升了用户体验和脚本的安全性。同时,修复了Python执行结果解析和验证逻辑,确保修改成功后配置文件的只读保护有效。
master
增强Cursor目录权限管理功能,新增确保目录权限正确的函数,优化了配置文件生成后的权限检查和恢复机制。确保在修改过程中提供清晰的操作反馈,提升了用户体验和脚本的安全性。同时,修复了Python执行结果解析和验证逻辑,确保修改成功后配置文件的只读保护有效。
master
2 changed files with 260 additions and 11 deletions
@ -0,0 +1,139 @@ |
|||
#!/bin/bash |
|||
|
|||
# Cursor权限测试脚本 |
|||
# 用于验证修复后的权限设置是否正确 |
|||
|
|||
# 颜色定义 |
|||
RED='\033[0;31m' |
|||
GREEN='\033[0;32m' |
|||
YELLOW='\033[1;33m' |
|||
BLUE='\033[0;34m' |
|||
NC='\033[0m' # No Color |
|||
|
|||
# 日志函数 |
|||
log_info() { |
|||
echo -e "${GREEN}[INFO]${NC} $1" |
|||
} |
|||
|
|||
log_warn() { |
|||
echo -e "${YELLOW}[WARN]${NC} $1" |
|||
} |
|||
|
|||
log_error() { |
|||
echo -e "${RED}[ERROR]${NC} $1" |
|||
} |
|||
|
|||
# 测试权限函数 |
|||
test_cursor_permissions() { |
|||
echo |
|||
log_info "🔍 [测试] 开始测试Cursor目录权限..." |
|||
|
|||
local cursor_support_dir="$HOME/Library/Application Support/Cursor" |
|||
local cursor_home_dir="$HOME/.cursor" |
|||
|
|||
# 关键目录列表 |
|||
local directories=( |
|||
"$cursor_support_dir" |
|||
"$cursor_support_dir/User" |
|||
"$cursor_support_dir/User/globalStorage" |
|||
"$cursor_support_dir/logs" |
|||
"$cursor_support_dir/CachedData" |
|||
"$cursor_support_dir/User/workspaceStorage" |
|||
"$cursor_support_dir/User/History" |
|||
"$cursor_home_dir" |
|||
"$cursor_home_dir/extensions" |
|||
) |
|||
|
|||
local all_ok=true |
|||
|
|||
echo |
|||
log_info "📁 [检查] 目录存在性和权限检查:" |
|||
|
|||
for dir in "${directories[@]}"; do |
|||
if [ -d "$dir" ]; then |
|||
local perms=$(ls -ld "$dir" | awk '{print $1}') |
|||
local owner=$(ls -ld "$dir" | awk '{print $3}') |
|||
local group=$(ls -ld "$dir" | awk '{print $4}') |
|||
|
|||
# 检查是否可写 |
|||
if [ -w "$dir" ]; then |
|||
echo -e " ✅ $dir" |
|||
echo -e " 权限: $perms | 所有者: $owner | 组: $group | 可写: 是" |
|||
else |
|||
echo -e " ❌ $dir" |
|||
echo -e " 权限: $perms | 所有者: $owner | 组: $group | 可写: 否" |
|||
all_ok=false |
|||
fi |
|||
else |
|||
echo -e " ❌ $dir (不存在)" |
|||
all_ok=false |
|||
fi |
|||
done |
|||
|
|||
echo |
|||
|
|||
# 测试创建文件 |
|||
log_info "📝 [测试] 测试文件创建权限..." |
|||
|
|||
local test_file="$cursor_support_dir/logs/test_permission_$(date +%s).txt" |
|||
if touch "$test_file" 2>/dev/null; then |
|||
log_info "✅ [成功] 可以在logs目录创建文件" |
|||
rm -f "$test_file" 2>/dev/null |
|||
else |
|||
log_error "❌ [失败] 无法在logs目录创建文件" |
|||
all_ok=false |
|||
fi |
|||
|
|||
# 测试配置文件权限 |
|||
local config_file="$cursor_support_dir/User/globalStorage/storage.json" |
|||
if [ -f "$config_file" ]; then |
|||
log_info "📋 [检查] 配置文件权限:" |
|||
local config_perms=$(ls -l "$config_file" | awk '{print $1}') |
|||
local config_owner=$(ls -l "$config_file" | awk '{print $3}') |
|||
echo " 文件: $config_file" |
|||
echo " 权限: $config_perms | 所有者: $config_owner" |
|||
|
|||
if [ -r "$config_file" ]; then |
|||
log_info "✅ [成功] 配置文件可读" |
|||
else |
|||
log_error "❌ [失败] 配置文件不可读" |
|||
all_ok=false |
|||
fi |
|||
else |
|||
log_warn "⚠️ [警告] 配置文件不存在: $config_file" |
|||
fi |
|||
|
|||
echo |
|||
|
|||
# 总结 |
|||
if [ "$all_ok" = true ]; then |
|||
log_info "🎉 [结果] 所有权限测试通过!" |
|||
return 0 |
|||
else |
|||
log_error "❌ [结果] 权限测试失败,存在问题" |
|||
echo |
|||
log_info "💡 [建议] 运行以下命令修复权限:" |
|||
echo -e "${BLUE}sudo chown -R \$(whoami) \"$HOME/Library/Application Support/Cursor\"${NC}" |
|||
echo -e "${BLUE}sudo chown -R \$(whoami) \"$HOME/.cursor\"${NC}" |
|||
echo -e "${BLUE}chmod -R u+w \"$HOME/Library/Application Support/Cursor\"${NC}" |
|||
echo -e "${BLUE}chmod -R u+w \"$HOME/.cursor\"${NC}" |
|||
return 1 |
|||
fi |
|||
} |
|||
|
|||
# 主函数 |
|||
main() { |
|||
echo -e "${GREEN}========================================${NC}" |
|||
echo -e "${GREEN} Cursor 权限测试脚本${NC}" |
|||
echo -e "${GREEN}========================================${NC}" |
|||
|
|||
test_cursor_permissions |
|||
|
|||
echo |
|||
echo -e "${GREEN}========================================${NC}" |
|||
echo -e "${GREEN} 测试完成${NC}" |
|||
echo -e "${GREEN}========================================${NC}" |
|||
} |
|||
|
|||
# 执行主函数 |
|||
main "$@" |
Write
Preview
Loading…
Cancel
Save
Reference in new issue