这次咱们聊 Linux 基础指令第二篇。上一篇我重点讲了 ls、cd、cp、mv、rm 这些刚上手 Linux 一定会碰到的文件操作,算是解决了"怎么在目录里走动、怎么复制删除文件"的问题。这一篇就不一样了,是往深处再走一步:你会创建用户、管权限、翻日志、查进程、传文件、打压缩包,甚至能自己装软件。说直白点,第一篇让你能在 Linux 里活下来,这一篇让你开始像个能用命令行干活的人。
内容我按实际工作中碰到的频率来排,不搞教科书那种枯燥罗列。每个指令我都会说清楚"什么时候用""为什么要这么写""踩过哪些坑",而不是丢给你一张命令大全然后让你自己背。适合的人群大概是两类:一是刚学完基础操作、想进一步系统掌握运维和开发常用指令的人;二是准备 Linux 面试,发现面试题里总是绕不开用户权限、进程管理、文本处理这些考点的同学。看完这篇,至少再看到 chmod 755、grep -rn、tar -czvf 这种写法,你不会心里发怵。
1. 用户与权限:从建账号到真正看懂 chmod 的数字
1.1 新建用户的完整链路:useradd、usermod、passwd
linux新建用户 这个词能上热搜,说明这是一个高频操作,但很多人卡在第一步:useradd 建完用户之后,发现切不过去,或者没家目录、没 shell,一脸懵。
这里我直接给出一个新手友好、生产环境也能用的建用户套路:
code复制sudo useradd -m -s /bin/bash deploy
sudo passwd deploy
-m 的意思是同时创建家目录(/home/deploy),-s /bin/bash 是指定登录 shell。缺了这两个参数,你建出来的用户可能没有可用的家目录,甚至登录之后直接落到一个奇怪的 shell 里。很多云服务器上默认的 /bin/sh 用起来极不舒服,连命令行补全都没有,别问我是怎么知道的。
建完用户之后,usermod 用来做属性修改。最常见的两个诉求是加用户组和改 shell:
code复制sudo usermod -aG sudo deploy # 将 deploy 加入 sudo 组(不同发行版组名可能不同)
sudo usermod -s /bin/bash deploy
注意 -aG 里的 -a 一定要带。-G 是追加组列表,如果少了 -a,系统会把用户从原有附属组里踢出去,只保留你指定的这个组。我见过有人执行 usermod -G docker 之后,用户突然失去很多权限,排查了半天才发现是 -a 丢了。
passwd 就是设密码。如果你用 su - deploy 切换过去发现输密码老不对,看看是不是之前压根没给这个用户设密码。
1.2 权限三元组:为什么目录默认是 755,文件默认是 644
权限是 Linux 新手最容易绕晕的地方,但理解了就非常简单。一个文件或目录的权限分成三组:属主(u)、属组(g)、其他人(o),每组有读(r=4)、写(w=2)、执行(x=1)三个位。数字相加就得到权限值。
我之前在群里看到有人问,"为什么我 chmod 777 了,网页还是打不开?" 先不说 777 这个权限本身合不合理,他完全没搞明白一个问题:对于目录来说,r 决定能不能列出目录里的文件名,x 决定能不能进入这个目录,w 决定能不能在目录里新建/删除文件。所以如果你只想让别人能进目录看文件,至少需要 r-x,也就是 5,而不是只给一个 r。
我用一张表把常用权限组合记一下:
| 数字 | 权限组合 | 针对文件 | 针对目录 |
|---|---|---|---|
| 4 | r-- | 可读内容 | 仅可列出文件名 |
| 5 | r-x | 可读可执行 | 可进目录可列名 |
| 6 | rw- | 可读可写 | 可改名可增删文件(但没有进入和列出的配合会很怪) |
| 7 | rwx | 完全控制 | 完全控制 |
系统默认不让普通用户建出来的文件带执行权限,所以默认文件是 644,目录是 755。这个逻辑是:文件默认要能被读,但不要莫名其妙能被执行;目录要开放进入和列出,否则没法用。
1.3 chown 与 chmod 的配合:把网站目录交给指定用户
真实场景里,你不可能永远用 root 跑所有服务。更常见的做法是:建一个专门用户,把某个目录的属主改成它,然后再调权限。
比如我现在要把 /var/www/html 交给 deploy 用户管理:
code复制sudo chown -R deploy:deploy /var/www/html
sudo chmod -R 755 /var/www/html
-R 表示递归。注意 chown 这里同时改了属主和属组,中间是冒号分隔,写作 deploy:deploy。有些老教程用点 . 分隔,在多数 Linux 发行版里也能识别,但我还是建议用冒号,兼容性更好。
一个经常被忽略的细节:权限设置不能只看当前用户有没有权限,还要看这个用户能不能"走到"目录的每一级路径。比如 /home/deploy/project,deploy 用户要访问 project,前提是他能进入 /home(一般是 755)、能进入 /home/deploy(也是 755),否则里面东西设成 777 都没用。这个"路径穿透"概念,排查权限问题时特别重要。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 文件搜索与文本处理:日志排障时最顶用的组合拳
2.1 find:为什么它比文件管理器里翻快一百倍
find 是服务器上找文件的终极工具。它的基本语法是 find 路径 条件,听起来简单,但条件组合起来非常强大。
我平时用得最多的几种写法:
code复制find /var/log -name "*.log" -mtime -7 # 找 7 天内改过的日志
find /etc -type f -name "*.conf" # 找 /etc 下所有 .conf 文件
find / -type d -name "n
