4、Linux基础命令(下):文本编辑(vim/nano)、权限管理(chmod, chown)、用户管理

好,咱们接着聊。上一章我们把文件操作和网络命令过了一遍,这一章我带你搞定三个日常开发中绕不开的话题:文本编辑、权限管理和用户管理。说白了,这三样东西你玩不转,在嵌入式Linux开发里寸步难行。

我刚开始做嵌入式那会儿,最头疼的就是在终端里改配置文件。没有图形界面,全靠键盘。后来用熟了,反而觉得比鼠标点来点去快多了。你想想看,远程连上一块开发板,几秒钟改完配置重启服务,那种掌控感,确实爽。

4.1 文本编辑器:vim 与 nano

嵌入式Linux环境里,你大概率没有图形界面。所以,学会用终端文本编辑器是基本功。我个人习惯用 vim,但我也得承认,nano 对新手更友好。咱们两个都讲,你选一个先上手。

4.1.1 vim:编辑器之神

vim 的学习曲线确实陡。我第一次用 vim,想退出都退不出来,最后直接拔电源了。嗯,这里要注意,vim 有几种模式,你得先搞明白。

  • 普通模式(Normal mode):刚打开 vim 就是这个模式。可以移动光标、复制粘贴、删除文本。
  • 插入模式(Insert mode):按 i 进入,这时候才能打字。按 Esc 回到普通模式。
  • 命令模式(Command mode):在普通模式下按 : 进入,可以保存退出、搜索替换。

核心操作速查

# 打开文件
vim myfile.txt

# 进入插入模式
i

# 保存并退出(在命令模式下)
:wq

# 强制退出不保存
:q!

# 撤销上一步操作(普通模式下)
u

# 复制当前行(普通模式下)
yy

# 粘贴(普通模式下)
p

我在项目中遇到过最尴尬的事:在客户现场调试,用 vim 改了一个关键配置文件,结果忘了保存就退出了。从那以后,我养成了一个习惯——改完文件立刻 :w 保存,不等到最后。

我的小技巧:如果你不小心按了 Ctrl+S 锁住了终端,别慌,按 Ctrl+Q 解锁。这个坑我踩过好几次。

4.1.2 nano:轻量级选择

如果你觉得 vim 太折腾,nano 是个好选择。它把所有操作提示都显示在屏幕底部,几乎不需要记忆。

# 打开文件
nano myfile.txt

# 保存:Ctrl+O
# 退出:Ctrl+X
# 搜索:Ctrl+W
# 复制一行:Alt+6
# 剪切一行:Ctrl+K

说白了,nano 就是「所见即所得」。你按什么键,它就做什么事。我一般用 nano 来快速修改配置文件,比如改个 IP 地址、换个端口号。但写代码的话,我还是用 vim,毕竟功能更强大。

4.2 权限管理:chmod 与 chown

Linux 是个多用户系统,权限管理是它的核心安全机制。你想想看,如果谁都能改系统文件,那不乱套了?

4.2.1 文件权限的基本概念

用 ls -l 查看文件,你会看到类似这样的输出:

-rwxr-xr-- 1 root root 1234 Apr 10 10:00 myapp

这串字符怎么读?我教你一个口诀:

位置 含义
第1位 文件类型(- 普通文件,d 目录,l 链接)
第2-4位 文件所有者(owner)的权限
第5-7位 文件所属组(group)的权限
第8-10位 其他用户(others)的权限

每个权限位用 r(读)、w(写)、x(执行)表示。没有权限就是 -。

4.2.2 chmod:修改权限

chmod 有两种用法:符号模式和数字模式。我推荐你用数字模式,简洁明了。

数字权限速查表

数字 权限 二进制
7 rwx(读写执行) 111
6 rw-(读写) 110
5 r-x(读执行) 101
4 r--(只读) 100
0 ---(无权限) 000
# 给所有者所有权限,组和其他用户只读执行
chmod 755 myapp

# 给所有用户添加执行权限
chmod +x myapp

# 递归修改目录权限
chmod -R 755 /home/project

我曾经犯过一个低级错误:把一个关键脚本设成了 777(所有人都有全部权限)。结果被同事不小心改坏了,排查了半天。记住,权限要遵循「最小化原则」——只给够用的权限。

注意:永远不要对系统文件使用 chmod 777。这等于把家门钥匙挂在门外,谁都能进。

4.2.3 chown:修改文件所有者

chown 用来改变文件或目录的所属用户和组。这在多用户协作时特别有用。

# 修改文件所有者为 alice
chown alice myfile.txt

# 同时修改所有者和组
chown alice:developers myfile.txt

# 递归修改目录
chown -R alice:developers /home/project

我一般在部署嵌入式应用时,会把应用程序的所有权交给一个专用的运行用户,比如 appuser。这样即使程序有漏洞,攻击者也只能拿到普通用户权限,动不了系统核心。

4.3 用户管理

嵌入式Linux虽然通常只有一个用户(root),但在做产品开发时,你最好学会创建和管理用户。为什么呢?因为用 root 跑所有服务,风险太大了。

4.3.1 用户与组的基本概念

每个用户都有一个唯一的 UID(用户ID)。组是为了方便管理权限而存在的。一个用户可以属于多个组。

命令 作用
whoami 查看当前用户名
id 查看当前用户的 UID、GID 和所属组
cat /etc/passwd 查看所有用户信息
cat /etc/group 查看所有组信息

4.3.2 创建和管理用户

# 创建用户(同时会创建同名组和家目录)
useradd -m -s /bin/bash alice

# 设置密码
passwd alice

# 创建组
groupadd developers

# 将用户添加到组
usermod -aG developers alice

# 删除用户
userdel -r alice

这里有个细节:-m 参数会自动创建家目录,-s 指定登录 shell。我建议你创建用户时都加上这两个参数,否则用户可能连登录都登不了。

避坑指南:我曾经在批量创建用户时忘了加 -m,结果所有新用户都没有家目录,登录后直接进了根目录。排查了半天才发现是这个问题。

4.3.3 sudo:临时提权

普通用户想执行管理员命令怎么办?用 sudo。但前提是,这个用户必须在 /etc/sudoers 文件里被授权。

# 以 root 身份执行命令
sudo apt update

# 切换到 root 用户
sudo -i

# 编辑 sudoers 文件(推荐用 visudo,语法检查)
visudo

在嵌入式开发中,我通常只给少数几个开发人员 sudo 权限。其他人用普通用户就够了。你想想看,如果每个人都能 sudo rm -rf /,那后果不堪设想。

4.4 本章知识体系

下面这张图帮你理清这一章的核心逻辑:

Linux基础命令(下)知识体系 文本编辑 权限管理 用户管理 vim:普通/插入/命令模式 nano:快捷键操作 chmod:数字/符号模式 chown:修改所有者/组 useradd / usermod / userdel sudo:临时提权 核心原则:最小权限、按需分配、安全第一 文本编辑是日常操作,权限管理是安全基石,用户管理是协作基础

这一章的内容就到这里。文本编辑、权限管理、用户管理,这三样东西你练熟了,嵌入式Linux开发的基本功就算打扎实了。别急,慢慢来,多敲几遍命令,肌肉记忆就形成了。

可可精品资料库