Files
odboy aa1f592bf3 feat: 新增 proc.list/user.list/pkg.list 命令
proc.list 列出所有进程(ps aux/tasklist)
user.list 列出系统用户(getent passwd/net user)
pkg.list 列出已安装软件包(dpkg/rpm/apk/brew/winget)
2026-11-03 21:28:15 +08:00

166 lines
4.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 用户管理
跨平台的用户权限管理命令,简化 Linux 和 macOS 上繁琐的 root/sudo 权限操作。
## 命令一览
| 命令 | 用途 | 实际执行 |
| --- | --- | --- |
| `kopsc user list` | 列出系统用户 | Linux/macOS: `getent passwd` 或 `/etc/passwd`<br>Windows: `net user` |
| `kopsc user grant <用户名>` | 授予用户 root/sudo 权限 | Linux: `usermod -aG wheel/sudo <用户名>`<br>macOS: `dseditgroup -o edit -t user -a <用户名> admin`<br>Windows: `net localgroup Administrators <用户名> /add` |
| `kopsc user revoke <用户名>` | 移除用户的 root/sudo 权限 | Linux: `gpasswd -d <用户名> wheel/sudo`<br>macOS: `dseditgroup -o edit -t user -d <用户名> admin`<br>Windows: `net localgroup Administrators <用户名> /delete` |
| `kopsc user info [用户名]` | 查看用户详细信息 | Linux/macOS: `id` + `/etc/passwd` + `groups`<br>Windows: `net user` |
## 用法
### 列出系统用户
```bash
kopsc user list
```
列出系统中所有用户账户。Linux/macOS 优先使用 `getent passwd`,回退到读取 `/etc/passwd`;Windows 使用 `net user`。
### 授予用户 root/sudo 权限
```bash
# 预览将执行的操作
kopsc user grant alice
# 确认执行(需要当前用户已有 sudo/管理员权限)
kopsc user grant alice --yes
# 简写
kopsc user grant alice -y
```
**执行后效果**:
- **Linux**:用户 `alice` 被添加到 `wheel` 组(CentOS/RHEL)或 `sudo` 组(Debian/Ubuntu),可以使用 `sudo` 执行管理员命令
- **macOS**:用户 `alice` 被添加到 `admin` 组,获得管理员权限
- **Windows**:用户 `alice` 被添加到 `Administrators` 组,获得管理员权限
### 移除用户的 root/sudo 权限
```bash
# 预览将执行的操作
kopsc user revoke alice
# 确认执行
kopsc user revoke alice --yes
```
**执行后效果**:
- **Linux**:用户 `alice` 从 `wheel` 或 `sudo` 组移除,失去 sudo 权限
- **macOS**:用户 `alice` 从 `admin` 组移除,失去管理员权限
- **Windows**:用户 `alice` 从 `Administrators` 组移除,失去管理员权限
## 注意事项
1. **需要管理员权限**:执行这些命令的当前用户必须已有 sudo/管理员权限
2. **重新登录生效**:权限变更需要用户重新登录后才能生效
3. **破坏性命令**:这两个命令都需要 `--yes` 确认,避免误操作
4. **自动检测发行版**:Linux 上会自动检测应该使用 `wheel` 组还是 `sudo` 组
## 平台差异
### Linux
不同发行版使用不同的管理员组:
- **CentOS/RHEL/Rocky/AlmaLinux**:使用 `wheel` 组
- **Debian/Ubuntu/Mint**:使用 `sudo` 组
kopsc 会自动检测系统中存在的组,优先使用 `wheel`,其次是 `sudo`。
### macOS
macOS 使用 `admin` 组管理管理员权限,通过 `dseditgroup` 命令操作。
### Windows
Windows 使用 `Administrators` 本地组,通过 `net localgroup` 命令操作。
## 示例场景
### 场景 1:新入职的运维工程师需要 sudo 权限
```bash
# 创建用户(系统命令)
sudo useradd -m -s /bin/bash ops01
# 授予 sudo 权限(kopsc 命令)
kopsc user grant ops01 --yes
# 通知用户重新登录
echo "请重新登录以启用 sudo 权限"
```
### 场景 2:离职员工需要移除管理员权限
```bash
# 移除管理员权限
kopsc user revoke former_employee --yes
# 可选:禁用账户(系统命令)
sudo usermod -L former_employee
```
### 场景 3:批量管理用户权限
```bash
# 批量授权
for user in alice bob charlie; do
kopsc user grant $user --yes
done
# 批量撤销
for user in alice bob charlie; do
kopsc user revoke $user --yes
done
```
## 故障排查
### 问题:提示"未找到 wheel 或 sudo 组"
**原因**:系统使用了非标准的管理员组名称
**解决**:
1. 查看系统的管理员组:`cat /etc/group | grep -E '^(wheel|sudo|admin)'`
2. 手动执行命令:`sudo usermod -aG <组名> <用户名>`
### 问题:执行后用户仍无法使用 sudo
**原因**:权限变更需要重新登录才能生效
**解决**:让用户退出并重新登录,或执行 `su - <用户名>` 切换到该用户
### 问题:提示权限不足
**原因**:当前用户没有 sudo/管理员权限
**解决**:使用已有管理员权限的账户执行,或临时使用 `sudo` 前缀
## 查看用户信息(user.info)
```bash
# 查看当前用户信息
kopsc user info
# 查看指定用户信息
kopsc user info alice
```
输出示例:
```
用户: uid=501(alice) gid=20(staff) groups=20(staff),80(admin),204(_developer)
UID: 501
GID: 20
描述: Alice Wang
家目录: /Users/alice
Shell: /bin/zsh
组: staff admin _developer
```
显示用户的 UID、GID、所属组、描述信息、家目录、默认 Shell 等。不指定用户名时显示当前用户信息。