Documentation Index
Fetch the complete documentation index at: https://docs.bicola.me/llms.txt
Use this file to discover all available pages before exploring further.
本页覆盖部署中和”身份”相关的命令:建账号、改密码、加入用户组(如 Rocky Linux 的
wheel)、用 sudo 提权、配置环境变量。生产环境绝大多数操作都不该用 root,理解这一组命令是基础。1. 用户账号管理
useradd / userdel / passwd / usermod — 增删改用户
useradd / userdel / passwd / usermod — 增删改用户
who am I(自我确认)
who am I(自我确认)
用户、UID 与 /etc/passwd
用户、UID 与 /etc/passwd
每个用户在
不需要登录的服务账户:
/etc/passwd 里一行,字段以 : 分隔:| 关键字段 | 说明 |
|---|---|
| UID | 用户 ID。0 是 root;< 1000 一般是系统账户;>= 1000 是普通用户 |
| GID | 主组 ID(对应 /etc/group) |
| 登录 shell | 设为 /usr/sbin/nologin 即「能存在但不能登录」,常用于服务账户 |
2. 用户组与管理员权限(以 Rocky Linux 为例)
Linux 通过 「用户组」 实现权限的批量管理 —— 把权限授予一个组,组内所有成员立即获得。本节用 Rocky Linux 演示用户、组、sudo 权限三者的关系,这套模型同样适用于 RHEL / CentOS / AlmaLinux。
2.1 用户、组、权限:三个关键文件
每个用户都属于至少一个主组,可以加入多个附加组。| 文件 | 内容 | 谁能读 |
|---|---|---|
/etc/passwd | 用户列表(一行一个) | 所有人 |
/etc/group | 用户组列表 | 所有人 |
/etc/shadow | 加密后的用户密码 | 仅 root |
/etc/sudoers | 谁能用 sudo、能用 sudo 干什么 | 仅 root |
2.2 wheel 组:Rocky Linux 的「管理员组」
不同发行版的「管理员组」叫法不同:| 发行版 | 管理员组名 |
|---|---|
| Rocky Linux / RHEL / CentOS / AlmaLinux | wheel |
| Ubuntu / Debian | sudo |
wheel 这个名字源自 BSD 传统,意思是「掌握方向盘的人」。在 Rocky Linux 上,把用户加进 wheel 组 ≈ 给它 sudo 权限(具体规则见 2.4 节的 /etc/sudoers)。
2.3 让 aimee 拥有 sudo 权限:完整流程
2.4 看清谁有管理员权限:/etc/sudoers
/etc/sudoers 是 sudo 权限的总规则文件。先 cat 看一下默认内容:
%wheel ALL=(ALL) ALL 怎么读:
#includedir /etc/sudoers.d(虽然以 # 开头但不是注释,是 sudoers 特殊语法)会加载该目录下所有规则文件。生产环境推荐把自定义规则放进独立文件,不要直接动 /etc/sudoers:
2.5 「管理员权限」具体能干什么
sudo 拿到的是 root 权限。在 Linux 里,root 几乎无所不能:
| 类别 | 例子 |
|---|---|
| 系统配置 | 改 /etc/ 下任何文件、dnf install 装卸软件包 |
| 用户管理 | 增删改用户和组、改任何人密码 |
| 服务管理 | systemctl 启停服务、改 .service 文件 |
| 网络与防火墙 | 配置网卡、firewall-cmd 规则 |
| 文件系统 | 挂载分区、读写所有人的文件 |
| 进程 | 杀死任何进程、改进程优先级 |
| 内核 | 加载内核模块、改 sysctl 参数 |
chattr +i 不可变属性等)。
2.6 用户组与文件权限的关系
回顾文件权限中的rwxr-xr-x 三段:第一段是所有者、第二段是所属组、第三段是其他人。这就是用户组存在的最大意义 —— 让一个文件的访问权限可以被一群人共享。
典型场景:让 aimee 和 bob 协作维护 /opt/myapp/。
对比:sudo 权限 vs 文件组权限
| 维度 | sudo(管理员权限) | 用户组(文件权限) |
|---|---|---|
| 控制什么 | 命令的执行能力(提权) | 文件 / 目录的读写执行 |
| 配置在哪 | /etc/sudoers、/etc/sudoers.d/ | 文件本身的元数据(chgrp / chmod) |
| 颗粒度 | 可精细到单条命令 | 仅 r / w / x 三种 |
| 典型场景 | 让 deploy 用户能 systemctl restart nginx | 让团队共享 /opt/myapp/ |
2.7 用户组管理速查
3. sudo / su — 提权
sudo (superuser do) — 单条命令提权(推荐)
sudo (superuser do) — 单条命令提权(推荐)
sudo 而不是直接登 root:| 维度 | sudo | root 登录 |
|---|---|---|
| 审计 | /var/log/auth.log 留下完整操作记录 | 几乎无追溯 |
| 误操作风险 | 每次都要敲 sudo,多一道意识 | 随时一发不可收拾 |
| 权限粒度 | /etc/sudoers 可精细配置(哪个用户能执行哪些命令) | 全开 |
su (substitute user) — 切换身份
su (substitute user) — 切换身份
新系统通常默认禁用 root 直接
su -(root 密码未设),用 sudo -i 替代。sudo 权限的精细配置 → 见 2.4 节
sudo 权限的精细配置 → 见 2.4 节
本章节聚焦
sudo / su 命令的使用。如何配置谁能 sudo、能 sudo 干什么(包括 /etc/sudoers、visudo、wheel 组),已在 2.4 看清谁有管理员权限 与 2.7 用户组管理速查 中完整覆盖。4. 环境变量
很多部署问题来自环境变量没设对(最经典:command not found 是 PATH 没配)。
查看当前环境变量
查看当前环境变量
临时设置(仅当前 shell 有效)
临时设置(仅当前 shell 有效)
export 的含义:让子进程也能看到这个变量。不 export 的话,启动的应用读不到。永久设置(每次登录都生效)
永久设置(每次登录都生效)
把
改完后让它立即生效:
export 写进登录 shell 的初始化文件:| 文件 | 适用 | 加载时机 |
|---|---|---|
~/.bashrc | bash 用户每次开终端都加载 | 每次新开 bash(最常用) |
~/.profile 或 ~/.bash_profile | 登录 shell | 每次登录一次 |
~/.zshrc | zsh 用户 | 每次新开 zsh |
/etc/environment | 系统级(所有用户) | 系统启动 |
/etc/profile.d/*.sh | 系统级,登录时加载 | 每次登录 |
$PATH 是什么
$PATH 是什么
$PATH 是用 : 分隔的目录列表,shell 在这些目录里找你输入的命令:$PATH 里。可以:- 用绝对路径调用:
/opt/myapp/bin/myapp - 把目录加进
$PATH:export PATH=/opt/myapp/bin:$PATH - 持久化:把上一行写到
~/.bashrc,下次登录依然有效
部署常见环境变量
部署常见环境变量
| 变量 | 用途 |
|---|---|
PATH | 命令搜索路径 |
HOME | 当前用户家目录 |
USER / LOGNAME | 当前用户名 |
SHELL | 当前 shell 路径 |
LANG / LC_* | 语言与本地化(中文系统设 zh_CN.UTF-8) |
TZ | 时区,如 Asia/Shanghai |
JAVA_HOME | Java 安装路径 |
NODE_ENV | Node.js 应用环境(development / production) |
LD_LIBRARY_PATH | 动态链接库搜索路径 |
Environment= 字段传应用的环境变量: