Skip to content

Commit 619ec79

Browse files
committed
docs(linux): 新增Linux用户管理、权限管理和开发服务器最佳实践速查表
添加三篇Linux相关速查表文档: 1. 用户管理速查表,涵盖用户/组操作、sudo权限和账号安全 2. 权限管理速查表,包含基本权限、ACL和Capabilities 3. 开发服务器最佳实践,提供安全基线、部署和监控指南
1 parent cfef41c commit 619ec79

4 files changed

Lines changed: 261 additions & 0 deletions

File tree

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
## 目标
2+
-`c:\home\env\powershellScripts\docs\cheatsheet\linux` 下新增 3 篇 Cheatsheet:
3+
1) 用户管理
4+
2) 权限与 ACL/Capabilities 管理
5+
3) Linux 作为开发服务器的最佳实践
6+
- 维持现有目录命名风格(英文目录、文件名可中英文混用),与已存在的 `network/``server/` 等结构保持一致。
7+
8+
## 目录与文件结构
9+
- `linux/user/user_management.md`
10+
- `linux/permission/permission_management.md`
11+
- `linux/server/development_server_best_practices.md`
12+
13+
## 文档内容大纲
14+
15+
### 1) 用户管理(`user_management.md`
16+
- 基本概念:`/etc/passwd``/etc/shadow``/etc/group`、登录 shell、home 目录、`/etc/skel`
17+
- 用户增删改查:`adduser` vs `useradd``passwd``usermod``userdel`、批量创建策略
18+
- 组管理:`groupadd``groupdel``groupmod``gpasswd`、主组/附属组、`id`/`groups`
19+
- 账号安全:锁定/解锁 `passwd -l/-u`、过期策略 `chage`、禁用登录 shell、强密码策略(PAM 简述)
20+
- Sudo 管理:`visudo``/etc/sudoers``/etc/sudoers.d/`、最小权限原则、常见规则示例
21+
- 会话与审计:`who``last``lastlog``journalctl -u ssh``faillog`、失败登录排查
22+
- 常见排错:家目录权限错误、shell 不存在、`nologin``PATH` 问题
23+
24+
### 2) 权限与 ACL/Capabilities 管理(`permission_management.md`
25+
- 权限模型:拥有者/组/其他,读写执行;符号/八进制表示法
26+
- 权限命令:`chmod``chown``chgrp``umask`(持久化到 shell 配置)
27+
- 特殊位:setuid、setgid、sticky;`find -perm` 检查
28+
- ACL:`getfacl`/`setfacl`、默认 ACL、与传统权限的关系与优先级
29+
- 文件属性:`chattr`/`lsattr`(不可变等)
30+
- Linux Capabilities:`getcap`/`setcap`,最小权限替代 setuid 的场景
31+
- 安全域:SELinux/AppArmor 概览、查看/调整模式的基本命令与排错思路
32+
- SSH/服务文件权限:`~/.ssh` 目录与文件权限、`systemd` 单元文件权限建议
33+
34+
### 3) 开发服务器最佳实践(`development_server_best_practices.md`
35+
- 基础选择:发行版(Ubuntu LTS 等)、时区/Locale、主机名约定
36+
- 安全基线:仅密钥登录、禁用 root 登录、端口与 `ufw`/`nftables``fail2ban`、自动更新 `unattended-upgrades`
37+
- 用户与 sudo:分层用户、最小权限、`sudoers` 规范、审计策略
38+
- 包与环境:`apt` 基本流程、`logrotate``journald``timesyncd`/NTP、磁盘与日志容量监控
39+
- 运行时栈:Node(`nvm`)、Python(`pyenv`/venv)、Rust(`rustup`)、容器(`docker`/rootless `podman`
40+
- 部署与服务:`systemd` 单元编写规范、健康检查、回滚策略、灰度发布思路
41+
- 网络与代理:SSH 隧道、反向代理(与已有 `server/caddy/` 相关)、内网访问策略
42+
- 远程开发:`OpenSSH` + VS Code Remote、`tmux`、常用终端工具(与 `terminal/` 目录呼应:`fzf`/`zoxide`
43+
- 监控与告警:`node_exporter` + Prometheus 基线、备份策略与恢复演练
44+
45+
## 与现有文档的关联
46+
- 参考并交叉链接:`linux/apt.md`(包管理)、`linux/env.md`(环境与变量)、`linux/server/caddy/*`(反向代理/静态站点)
47+
- 保持术语与命令风格一致,命令示例使用简洁、直接可复制的形式。
48+
49+
## 交付方式
50+
- 创建上述目录与文件,并填充内容(中文为主,命令与路径保持英文)
51+
- 每篇文档以“速查表”结构呈现:概念简述 + 常用命令块 + 注意事项/坑点 + 示例
52+
-`linux/` 下不改动现有文件命名,新增独立文档便于模块化维护
53+
54+
## 验收标准
55+
- 目录结构按计划创建;3 篇文档均完成初版并可直接使用
56+
- 每篇至少包含:核心概念、10+ 常用命令示例、常见错误与排错建议
57+
- 与现有相关文档有明确交叉链接;风格统一、便于快速阅读复制
58+
59+
## 后续维护建议
60+
- 根据团队使用场景追加发行版差异章(如 Debian/AlmaLinux)
61+
- 将高频命令整合为脚本片段(未来可迁移到 `scripts/`
62+
- 定期安全基线复盘与更新(SSH、防火墙、容器根less 化推进)
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# Linux 权限与 ACL/Capabilities 速查表
2+
3+
## 概览
4+
- 权限层级:拥有者(user)/组(group)/其他(other)
5+
- 表示法:符号(`u/g/o``r/w/x`)与八进制(`chmod 640`
6+
- 扩展机制:ACL(细粒度用户/组权限)、Capabilities(可替代部分 setuid)
7+
8+
## 基本权限
9+
- 查看权限:`ls -l``namei -l 路径`
10+
- 修改权限:
11+
- 符号法:`chmod u=rw,g=r,o=--- file`
12+
- 八进制:`chmod 640 file`
13+
- 拥有者与组:`chown alice:developers file``chgrp developers file`
14+
- 默认权限:`umask`(临时:`umask 027`;持久化:写入 `~/.profile``/etc/profile`
15+
16+
## 特殊位
17+
- setuid:可执行文件以文件拥有者身份运行(安全风险)
18+
- setgid:目录使新建文件继承目录组;可执行以组身份运行
19+
- sticky:目录中只有文件拥有者可删除(如 `/tmp`
20+
- 检查/设置:
21+
- 八进制高位:`chmod 4755 file`(4=setuid,2=setgid,1=sticky)
22+
- 符号位:`chmod u+s file``chmod g+s dir``chmod +t dir`
23+
- 搜索特殊权限:`find / -perm -4000 -type f -exec ls -l {} +`(审计 setuid)
24+
25+
## ACL(访问控制列表)
26+
- 查看:`getfacl file`
27+
- 赋予特定用户/组:
28+
- `setfacl -m u:alice:rw file`
29+
- `setfacl -m g:developers:r file`
30+
- 默认 ACL(目录对子文件生效):`setfacl -m d:u:alice:rwX dir`
31+
- 删除条目:`setfacl -x u:alice file`
32+
- 清空 ACL:`setfacl -b file`
33+
- 注意:ACL 与传统权限共同作用,优先匹配具体条目
34+
35+
## 文件系统属性(`chattr`/`lsattr`
36+
- 不可变:`sudo chattr +i file`(即使 root 也不可更改/删除)
37+
- 只追加:`sudo chattr +a logfile`(仅允许追加写入)
38+
- 查看:`lsattr file`
39+
- 适用:ext 系列文件系统
40+
41+
## Linux Capabilities
42+
- 查看:`getcap /path/to/bin`
43+
- 赋予:`sudo setcap cap_net_bind_service=+ep /usr/local/bin/myapp`
44+
- 场景:允许非 root 绑定低端口等,替代 setuid 的部分需求
45+
- 清除:`sudo setcap -r /usr/local/bin/myapp`
46+
47+
## SELinux / AppArmor(概览)
48+
- 模式查看:
49+
- SELinux:`getenforce``sestatus`
50+
- AppArmor:`aa-status`
51+
- 切换(临时/持久化需谨慎):`setenforce 0/1`
52+
- 审计排错:查看相关日志(`/var/log/audit/audit.log``journalctl`
53+
54+
## SSH 与系统配置文件的权限建议
55+
- `~/.ssh`:目录 `700``authorized_keys` `600``config` `600`
56+
- systemd 单元:`/etc/systemd/system/*.service` 保持 root 可写,应用目录最小权限
57+
- 私密配置:使用最小可读原则,避免组/其他可读
58+
59+
## 常见排错
60+
- 权限不足但 ACL 生效:确认 ACL 条目与默认 ACL 是否覆盖
61+
- setuid/setgid 异常:检查挂载选项与安全策略是否屏蔽
62+
- Capabilities 无效:确认文件系统/内核支持、二进制是否符合要求
63+
64+
## 参考
65+
- 相关文档:`../env.md`(环境与变量)、`../apt.md`(包管理)
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Linux 开发服务器最佳实践速查表
2+
3+
## 目标
4+
- 构建稳定、安全、可维护的开发服务器基线
5+
- 提供最小权限、自动化更新、可观测性与便捷远程开发
6+
7+
## 安全基线
8+
- 仅密钥登录:`/etc/ssh/sshd_config``PasswordAuthentication no``PermitRootLogin no`
9+
- 端口与防火墙:`ufw default deny`、仅开放必要端口;或使用 `nftables`
10+
- 防爆破:`fail2ban`(监控 SSH 日志、合理的 ban 策略)
11+
- 自动更新:`unattended-upgrades`(安全更新自动安装,邮件通知)
12+
- 系统时间与日志:启用 `systemd-timesyncd``journalctl``logrotate` 配置
13+
14+
## 系统与包管理
15+
- 选择发行版:优先 LTS(如 Ubuntu LTS)
16+
- 基础包:`build-essential``curl``git``htop`/`btop``vim`/`neovim`
17+
- 本地化:时区 `timedatectl set-timezone`、Locale 统一(避免构建差异)
18+
- 磁盘与健康:`smartctl``df -h``du -sh`、inode 与日志占用监控
19+
- 参考:`../env.md``../apt.md`
20+
21+
## 用户与权限
22+
- 分层用户:管理员(sudo)、普通开发、CI/服务用户(受限权限)
23+
- 最小权限:`sudoers` 精细化(使用 `/etc/sudoers.d/`),拒绝 `ALL`
24+
- 目录与权限:统一 umask;共享目录使用 setgid 与组策略;敏感目录使用 `chattr +i`
25+
26+
## 运行时与容器
27+
- Node:`nvm` 管理多版本;默认使用 LTS;隔离项目 node_modules
28+
- Python:`pyenv`+`venv`;避免系统 Python 污染
29+
- Rust:`rustup`(稳定工具链)
30+
- 容器:优先 rootless(`podman`)或限制权限的 `docker`;最小镜像,固定 tag
31+
- 私有仓库与拉取策略:凭据管理、镜像扫描、网络策略(代理/出口控制)
32+
33+
## 部署与服务管理(systemd)
34+
- 单元文件规范:指定用户、工作目录、环境变量、Restart 策略(如 `on-failure`
35+
- 健康检查:使用 `ExecStartPre``ExecStartPost``ExecReload`;失败告警
36+
- 日志:`StandardOutput=journal`,结合 `journalctl -u service -f`
37+
- 回滚与灰度:保留旧版本、分批更新、反向代理路由控制(见 `caddy/`
38+
39+
## 网络与代理
40+
- 反向代理:`Caddy`/`Nginx`(证书自动管理、限速、缓存)
41+
- SSH 隧道:临时开放内部端口;跨网络安全访问
42+
- DNS/hosts:统一命名策略(如 `dev-<team>-<service>`
43+
44+
## 监控与日志
45+
- 资源监控:`node_exporter` + Prometheus;基础报警(CPU、内存、磁盘、负载)
46+
- 日志聚合:集中化(如 Loki/ELK);应用日志标准化(JSON、结构化)
47+
- 追踪与指标:OpenTelemetry 基线(采样、导出)
48+
49+
## 远程开发与效率
50+
- VS Code Remote SSH;`tmux` 会话复用;`fzf``zoxide``ripgrep` 快速检索
51+
- 包管理与脚本:统一脚本目录,避免手工命令分散与漂移
52+
- 代理与网络:必要时配置开发代理(如 Clash),分流策略与白名单
53+
54+
## 备份与恢复
55+
- 配置与数据分层备份:`/etc`、应用配置、数据库与持久化目录
56+
- 备份策略:定期/保留周期、异地/跨账户;恢复演练(文档化步骤)
57+
58+
## 快速检查清单
59+
- [ ] SSH 仅密钥、禁 root;`ufw`/`fail2ban` 生效
60+
- [ ] 自动安全更新启用,系统时间同步
61+
- [ ] 用户分层与最小权限;共享目录权限有明确策略
62+
- [ ] 运行时通过 `nvm`/`pyenv`/`rustup` 管理;容器 rootless/最小镜像
63+
- [ ] 部署以 systemd 管理,日志结构化;具备回滚与灰度能力
64+
- [ ] 监控与报警基线就绪;备份策略可演练
65+
66+
## 参考
67+
- 相关文档:`../env.md``../apt.md``../server/caddy/caddy.md``../server/caddy/静态站点最佳实践.md`
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# Linux 用户管理速查表
2+
3+
## 概览
4+
- 关键文件:`/etc/passwd``/etc/shadow``/etc/group``/etc/skel`
5+
- 常用工具:`adduser``useradd``usermod``userdel``passwd``groupadd``gpasswd``id``groups`
6+
- 推荐:优先使用交互友好的 `adduser`(Debian/Ubuntu);批量/脚本用 `useradd`
7+
8+
## 基本查询
9+
- 当前身份:`id``whoami`
10+
- 查看用户:`getent passwd``getent passwd 用户名`
11+
- 查看组:`getent group``getent group 组名`
12+
- 查看附属组:`groups 用户名`
13+
14+
## 创建用户
15+
- 交互创建(含家目录与初始配置):
16+
- `sudo adduser alice`
17+
- 非交互创建(更可控):
18+
- `sudo useradd -m -s /bin/bash -c "Alice" alice`
19+
- 设置密码:`echo 'alice:StrongPass' | sudo chpasswd`
20+
- 指定主组与附属组:
21+
- 主组:`sudo useradd -m -g developers alice`
22+
- 附属组:`sudo usermod -aG docker,sudo alice`
23+
- 使用 `/etc/skel` 模板:自动复制默认文件到家目录
24+
25+
## 修改与删除
26+
- 修改登录 shell:`sudo chsh -s /bin/zsh alice`
27+
- 修改家目录/注释等:`sudo usermod -m -d /home/alice alice``sudo usermod -c "Alice Dev" alice`
28+
- 删除用户:
29+
- 保留家目录:`sudo userdel alice`
30+
- 删除家目录:`sudo userdel -r alice`
31+
32+
## 组管理
33+
- 新建组:`sudo groupadd developers`
34+
- 删除组:`sudo groupdel developers`
35+
- 重命名:`sudo groupmod -n devs developers`
36+
- 管理组成员:
37+
- 加入:`sudo gpasswd -a alice developers`
38+
- 移除:`sudo gpasswd -d alice developers`
39+
40+
## Sudo 权限
41+
- 编辑规则:`sudo visudo`(安全检查);或在 `/etc/sudoers.d/` 新增片段
42+
- 常用示例:
43+
- 允许组免密执行特定命令:
44+
- `%deploy ALL=(root) NOPASSWD: /usr/bin/systemctl restart myapp`
45+
- 只允许某命令:
46+
- `alice ALL=(ALL) /usr/bin/journalctl -u myapp`
47+
- 最小权限原则:只授予必要命令,避免 `ALL` 与通配符
48+
49+
## 账号安全与生命周期
50+
- 锁定/解锁:`sudo passwd -l alice``sudo passwd -u alice`
51+
- 过期策略:`sudo chage -E 2026-01-01 alice``sudo chage -M 90 -W 7 alice`
52+
- 禁用登录:`sudo usermod -s /usr/sbin/nologin alice`
53+
- 强密码策略:使用 PAM(如 `pam_pwquality`)与系统策略
54+
55+
## 会话与审计
56+
- 在线用户:`who`、最近登录:`last`、从不登录:`lastlog`
57+
- SSH 日志:`journalctl -u ssh -e`、失败登录统计:`faillog -a`
58+
- 变更审计(建议):`auditd` 基线配置与规则
59+
60+
## 常见问题排查
61+
- 家目录权限错误:`sudo chown -R alice:alice /home/alice``chmod 700 /home/alice`
62+
- SSH 登录失败:检查 `~/.ssh` 权限(目录 700,文件 600)、`AuthorizedKeysFile` 设置
63+
- shell 不存在:`which bash`/`zsh`,确认 `/etc/shells` 中存在
64+
- PATH 异常:检查 `/etc/profile``~/.profile``~/.bashrc`,以及 `umask` 设置
65+
66+
## 参考
67+
- 相关文档:`../env.md`(环境变量)、`../apt.md`(包管理)

0 commit comments

Comments
 (0)