Skip to content

Commit 23483ff

Browse files
CodeCasterXclaude
andcommitted
[claude] 添加文件权限检查和修复的 slash command
新增 /fix-permissions 命令,用于自动检查和修复项目中所有文件和目录的权限问题。 主要变更: - 新增 .claude/commands/fix-permissions.md 命令定义 - 更新 .claude/README.md 添加命令使用说明 - 更新 .claude/project-rules.md 添加命令文档 功能特性: - 动态从 pom.xml 获取正确的所有者信息 - 自动扫描所有文件和目录权限 - 识别并修复权限不一致的文件 - 生成详细的检查报告 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
1 parent bd3387a commit 23483ff

File tree

3 files changed

+108
-2
lines changed

3 files changed

+108
-2
lines changed

.claude/README.md

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313
├── pr-update.md # 更新 PR 描述
1414
├── commit.md # 提交变更
1515
├── upgrade-dep.md # 升级依赖
16-
└── review.md # 审查 PR
16+
├── review.md # 审查 PR
17+
└── fix-permissions.md # 检查和修复文件权限
1718
```
1819

1920
## 📋 项目规则
@@ -97,6 +98,20 @@
9798
- 测试覆盖情况
9899
- 生成审查报告
99100

101+
### 检查和修复权限
102+
103+
```bash
104+
# 检查并修复所有文件和目录权限
105+
/fix-permissions
106+
```
107+
108+
**自动化流程:**
109+
1. 从 pom.xml 获取正确的所有者信息
110+
2. 扫描所有文件和目录
111+
3. 识别权限不一致的文件
112+
4. 自动修复为正确的所有者
113+
5. 生成检查报告
114+
100115
## 🎯 最佳实践
101116

102117
### 1. 使用 Slash Commands
@@ -188,7 +203,7 @@ gh pr view 369
188203
**解决方案**:使用 `/pr-update <pr-number>` 命令更新
189204

190205
### 问题:文件权限错误
191-
**解决方案**已在 `project-rules.md` 中配置自动处理
206+
**解决方案**使用 `/fix-permissions` 命令自动检查和修复
192207

193208
### 问题:想要自定义命令
194209
**解决方案**:在 `.claude/commands/` 目录创建新的 `.md` 文件
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
检查并修复项目中所有文件和文件夹的权限,确保符合项目规范。
2+
3+
**用法:**
4+
- `/fix-permissions` - 检查并自动修复所有权限问题
5+
6+
**执行步骤:**
7+
8+
1. **获取参考文件的所有者信息**
9+
```bash
10+
ls -l pom.xml | awk '{print $3":"$4}'
11+
```
12+
- 从项目根目录的 `pom.xml` 动态获取正确的所有者信息
13+
- 不硬编码用户名和用户组
14+
15+
2. **统计当前文件权限分布**
16+
```bash
17+
# 检查所有文件的所有者分布
18+
find . -type f -print0 2>/dev/null | xargs -0 ls -l 2>/dev/null | awk '{print $3":"$4}' | sort | uniq -c | sort -rn
19+
20+
# 检查所有目录的所有者分布
21+
find . -type d -print0 2>/dev/null | xargs -0 ls -ld 2>/dev/null | awk '{print $3":"$4}' | sort | uniq -c | sort -rn
22+
```
23+
24+
3. **识别权限不一致的文件**
25+
```bash
26+
# 找出所有者不是参考用户的文件
27+
find . -type f -print0 2>/dev/null | xargs -0 ls -l 2>/dev/null | awk '$3 == "root" {print $9}'
28+
29+
# 找出所有者不是参考用户的目录
30+
find . -type d -print0 2>/dev/null | xargs -0 ls -ld 2>/dev/null | awk '$3 == "root" {print $9}'
31+
```
32+
33+
4. **修复文件权限**
34+
```bash
35+
# 获取正确的所有者信息
36+
OWNER_GROUP=$(ls -l pom.xml | awk '{print $3":"$4}')
37+
38+
# 修复所有文件权限
39+
find . -type f -print0 2>/dev/null | xargs -0 ls -l 2>/dev/null | awk '$3 == "root" {print $9}' | xargs sudo chown $OWNER_GROUP
40+
41+
# 修复所有目录权限
42+
find . -type d -print0 2>/dev/null | xargs -0 ls -ld 2>/dev/null | awk '$3 == "root" {print $9}' | xargs sudo chown $OWNER_GROUP
43+
```
44+
45+
5. **最终验证**
46+
```bash
47+
# 统计修复后的权限分布
48+
find . \( -type f -o -type d \) -print0 2>/dev/null | xargs -0 ls -ld 2>/dev/null | awk '{print $3":"$4}' | sort | uniq -c | sort -rn
49+
50+
# 抽查几个之前有问题的文件
51+
ls -ld ./.claude/settings.local.json ./framework/.claude/settings.local.json
52+
```
53+
54+
6. **生成检查报告**
55+
- 显示参考所有者信息
56+
- 显示发现的问题文件和目录数量
57+
- 显示修复的文件和目录列表
58+
- 显示最终验证结果
59+
60+
**规范说明:**
61+
62+
根据 `.claude/project-rules.md` 中的规则 1:
63+
- 所有文件必须设置正确的所有者权限
64+
- 不要硬编码用户名和用户组
65+
- 动态从 `pom.xml` 等参考文件获取权限信息
66+
- 确保用户可以自主修改所有文件
67+
68+
**常见问题:**
69+
70+
**为什么有些文件是 root 所有者?**
71+
- 可能是使用 `sudo` 创建的文件或目录
72+
- Git 操作时使用了 sudo 权限
73+
- Claude Code 创建文件时权限设置不当
74+
75+
**修复后会影响 Git 吗?**
76+
- 不会影响 Git 历史和提交
77+
- 只改变文件系统级别的所有者
78+
- Git 内容和状态保持不变
79+
80+
**需要 sudo 权限吗?**
81+
- 修复 root 所有者的文件时需要 sudo
82+
- 确保当前用户在 sudoers 列表中
83+
84+
**参考文档:**
85+
- 项目规则:`.claude/project-rules.md` (规则 1)
86+
- 动态获取权限方法的详细说明

.claude/project-rules.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,11 @@ sudo chown $OWNER_GROUP <file>
225225
**`/review <pr-number>`** - 审查 Pull Request
226226
- `/review 369` - 审查 #369 PR
227227
228+
### 项目管理命令
229+
230+
**`/fix-permissions`** - 检查和修复文件权限
231+
- `/fix-permissions` - 检查并自动修复所有权限问题
232+
228233
### 开发相关命令
229234
230235
**`/commit [message]`** - 提交变更

0 commit comments

Comments
 (0)