如果你已经折腾完前面两章,能熟练地用 cd、ls、cp、vim 在 Linux 系统里做基本操作,那恭喜,你已经跨过了“装好系统、能用终端”的第一道坎。但这会儿你大概率有个感觉:一会儿要 sudo,一会儿权限不足,看着 drwxr-xr-x 一脸懵,新建用户也不知道从哪下手,装个软件全是依赖地狱,更别提服务器上跑个服务怎么找问题。
第三章的价值,就是帮你把这些“半懂不懂”的东西彻底焊死。这一章我会从用户体系、文件权限、文本处理与查找、进程与服务、软件安装五个维度,用实际运维中一定会遇到的场景串起来。内容不追求大而全,但要让你学完能真正面对一台“脏乱差”的Linux服务器时,敢动手、知道去哪查、知道为什么这么做。坦白说,跨过这一章,你就从“会用Linux的人”变成了“能管理Linux的人”,这也是面试和实际工作中最明显的一道分水岭。
1. 新建用户与用户组:账户体系是系统管理的第一课
1.1 先搞清楚为什么 Linux 要搞这么多用户
很多人刚接触 Linux 会有一个疑惑:我在自己电脑上装个系统,就我一个人用,为什么还要分用户?这个困惑在你第一次登录云服务器时会被瞬间击碎——因为这台服务器上很可能有十几个账户,有运维的、开发的、跑程序的,甚至还有系统自己创建的 nobody、www-data 这类账户。
Linux 天生就是多用户操作系统,它的设计初衷就是一台机器上同时服务很多人。而这种多用户模型带来的好处是:权限隔离。每个人有自己的家目录、自己的文件、自己的进程,互相看不到,也改不动。这就是整个 Linux 安全模型的根基。我见过不少新手拿到 root 权限后,什么事情都 root 一把梭,结果一条 rm 命令下去,把整个系统的文件删了个七七八八,这种事故在运维圈里不算新鲜。所以学用户管理,第一层意义是理解隔离,第二层意义是保护自己。
1.2 useradd 参数拆解:一次完整的新建用户操作
Linux 新建用户有两个命令,一个是 useradd,一个是 adduser。Debian/Ubuntu 系里 adduser 是一个交互式脚本,会一步步问你密码、全名等;而 useradd 是原生的系统调用命令,所有参数一次性指定,不指定就不会帮你创建家目录。日常脚本化操作和服务器管理,我建议你熟练掌握 useradd。
先看一个完整的示例:
bash复制sudo useradd -m -d /home/zhangsan -s /bin/bash -G wheel zhangsan
sudo passwd zhangsan
这行命令干了四件事:
-m:自动创建家目录 /home/zhangsan,不写这个,用户登录后连 home 都没有;-d:指定家目录位置,默认就是 /home/用户名,但有时你需要把家目录放到数据盘,比如 /data/home/zhangsan;-s:指定登录 shell,/bin/bash 是交互式用户的标配,如果是跑服务用的专用账户,可以用 /usr/sbin/nologin 禁止它登录;-G:把用户加入附加用户组,wheel 组(CentOS/RHEL)或 sudo 组(Ubuntu)代表可以执行 sudo 命令。
如果你是在 Ubuntu 上,-G sudo 而不是 -G wheel,因为不同发行版管理 sudo 权限的组名不一样。这正是很多人踩坑的地方——在 Ubuntu 上给用户加 wheel 组,结果用户并没有 sudo 权限。
1.3 用户信息存在哪里:三份文件的字段逻辑
新建完用户后,我建议你立刻看三个文件,它们就是整个用户体系的“数据库”:
/etc/passwd:保存用户基本信息,一行一个用户,冒号分隔 7 个字段。比如zhangsan:x:1000:1000::/home/zhangsan:/bin/bash,依次是用户名、密码占位符 x、UID、GID、注释信息、家目录、登录 shell。密码那栏显示 x,是因为真正的密码挪到了 shadow 文件。/etc/shadow:保存密码哈希和密码策略。只有 root 能读,字段包括加密后的密码、最近修改时间、最短修改间隔、过期时间等。/etc/group:保存用户组信息。格式是组名:组密码:GID:组成员。
这三个文件一定要记住,因为很多权限问题排查到最后,根源就是这里某个字段写错了。比如 UID 冲突、GID 不存在、shell 路径错误,都会导致用户无法正常登录或无法使用某些功能。
1.4 修改与删除用户时的常见坑
用户建好之后,改信息用 usermod,改密码用 passwd,删除用 userdel。几个实测下来容易出问题的点:
usermod -l newname oldname可以改用户名,但注意家目录和邮箱不会自动跟着改,要手动处理;userdel zhangsan默认不删家目录,会留下一堆垃圾文件;userdel -r zhangsan才连家目录和邮件池一起删。但生产环境务必谨慎,先确认这个用户的文件有没有价值再删;passwd -l zhangsan是锁定账户(在密码前加 !),passwd -u zhangsan解锁。临时禁止用户登录,优先用这个而不是直接删用户。
1.5 用 sudo 而不是永远 root:权限边界与个人习惯
最后想聊聊 sudo。很多初学者不理解,我都有 root 了,为什么还要建普通用户再 sudo?原因有三点:第一,root 的操作不会留下清晰审计记录,出事没法追查;第二,root 的误操作代价被放得极大,一条 rm -rf / 和对普通用户来说影响有限;第三,sudo 可以精细化授权——你可以指定某个用户只能执行 systemctl restart nginx,而不能干别的。
配置 sudo 权限的文件是 /etc/sudoers,修改它一定要用 visudo 命令,因为这个命令会做语法检查,防止你写错导致整个 sudo 瘫痪。常见的配置是 %wheel ALL=(ALL) ALL,意思是 wheel 组的成员可以在所有主机上以所有用户身份执行所有命令。给特定用户指定命令权限可以写成:
bash复制zhangsan ALL=(ALL) /usr/bin/systemctl restart nginx
这样 zhangsan 只能重启 nginx,其他 sudo 命令一律拒绝。这就是最小权限原则在账户体系里的体现。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件权限的完整拆解:从 drwxr-xr-x 到 SUID/ACL
2.1 从 ls -l 读出的第一个判断:文件类型
ls -l 输出的第一列,比如 drwxr-xr-x,是由 10 个字符组成的。第一个字符代表文件类型,后面 9 个字符是三组权限位。很多教程把这两件事混在一起讲,我建议你先分开记。
第一个字符常见的有:
| 字符 | 含义 | 示例 |
|---|---|---|
| - | 普通文件 | 文本、 |
