【Linux 基础指令 & 权限管理】超详细理解&&例题&&错题
Linux基础指令 权限管理
你好,这里是新人 Sunfor
这篇是我最近对于Linux 基础指令 权限管理的学习心得和错题整理
有任何错误欢迎指正,欢迎交流!
会持续更新,希望对你有所帮助,我们一起学习,一起进步
前言

引言
在数字世界的底层, Linux是那个沉默却无处不在的基石 。从全球 超90%的云端服务器,到你掌中的安卓手机,其强大的 **稳定性、灵活性与开源灵魂 **,驱动着现代科技的运转
理解Linux,绝非仅仅记忆几十条命令,而是掌握一种“一切皆文件”的哲学,一套精细的权限管控体系,和通过Shell组合命令以高效解决问题的艺术
本文将带你穿透迷雾,从核心概念到40+必备命令,快速构建起你对Linux的清晰认知。无论你是开发者、运维人员还是技术爱好者,这都是你掌握数字世界底层逻辑的关键一步。
一、Linux是什么?
当你第一次接触Linux时,你可能会好奇:
“Linux到底是什么?为什么几乎所有服务器、后端系统、云平台都在用它?”
Linux 是一种 开源操作系统,最早由芬兰学生 Linus Torvalds 在 1991 年发布。它的本质是一个 内核(Kernel),负责管理硬件、内存、进程、文件系统等基础功能。为了让普通人能使用,会再搭配工具、命令、软件包等,组成我们常见的 Linux 发行版,如 Ubuntu、CentOS、Debian 等。
由于稳定、安全、可定制性强,Linux已成为:
- 服务器和元计算平台的主流系统
- 超级计算机的唯一选择
- Andriod手机的底层
- 程序员、运维、安全工程师最常用的开发环境

二、40+常用Linux基础指令
掌握Linux,从学会一套基础指令开始
这些指令组成了你与系统之间最直接的沟通方式,就像日常生活的语言一样
- 想看目录 -> 用ls
- 想移动文件 -> 用mv
- 想找错日志 -> 用grep
- 想看系统是否撑得住 -> 用top
下面将以分类+示例+必会技巧的方式呈现 让初学者也能轻松上手,高阶使用者也可以快速复习知识框架
2.1 文件与目录操作
这是Linux最基础、也是最频繁的操作:移动、查看、创建、删除…
技巧:相对路径 vs 绝对路径
Linux的路径概念很重要 搞懂这个能减少50%的操作困扰
cd /var/log #绝对路径,从/开始
cd ../ #相对路径 回到上一级
pwd #不知道自己在哪时使用
2.2 文件内容查看
Linux世界里,一切皆文件
因此会“看文件”,比会“打开Word”更重要
实战场景:实时观察日志更新
tail -f /var/log/nginx/access.log
2.3 文本搜索与处理
很多人觉得Linux 输出“密密麻麻”,其实你不需要全部“看”,只需要`过滤”
经典组合:统计某个错误出现次数
grep -i "error" log.txt | wc -l
2.4 系统状态与运行监控
当系统“卡住”“满载”“跑不动”“cpu爆表”时,这些命令就是我们用来检测的听诊器
__排查磁盘满了:谁占了空间?
du -sh ./* | sort -h
2.5 常用指令汇总
Shell与命令行运行原理(核心概念)
在Linux 中,所有命令的执行都离不开一个角色: Shell
如果把 Linux 系统比作发动机,那么 Shell 就是驾驶舱,你对系统的所有操作,几乎都是通过它完成的
这一部分不仅讲清 什么是 Shell,更重点讲清 命令到底是怎样被执行的。
理解这一点,你会在之后学习权限、脚本、重定向等内容时轻松许多
3.1 Shell是什么?
Shell 是一种命令解释器
它的功能可以用一句话总结:


常见Shell类型

查看自己用的是哪个Shell
echo $SHELL
3.2 Shell 处理命令的完整流程(核心)
下面进入最关键内容:
当你敲下 一条命令,Shell 内部到底发生了什么?
ls -al /var/log
① 接收输入(Read)
你敲命令 + 回车后,Shell 获得整行文本:
ls -al /var/log
② 分词与解析(Parse)
Shell 会根据空格、引号等规则把命令拆开:

Shell还会识别:
引号 “…”、变量 $HOME、通配符 *、管道 |、重定向 >、<、命令替换 $(…)
③ 确定命令来源(Lookup)
Shell 会判断:
- 是 内建命令?
- 是 外部命令(独立可执行文件)?
举个例子


如果是外部命令,Shell 会根据 `$PATH`` 环境变量寻找它。

Shell 会按顺序查找 ls 这个二进制文件所在位置
④ 创建子进程执行命令(Fork + Exec)
当命令确定下来后,Shell 会:
- 创建一个 子进程
- 子进程加载并执行程序文件
- 而 Shell 本身作为 父进程 保持运行,等待结果。
这一概念解释了为什么:
- Shell 不会因为程序崩溃而退出
- 可以同时运行多个命令
- 可以用 & 把进程放后台
⑤ 程序执行 → 产生输出(Run)
程序运行,并把结果输出到:
标准输出 stdout(屏幕)
标准错误 stderr(报错)
标准输入 stdin(用户输入)
在刚在的例子中
ls -al /var/log
会输出文件列表。
重定向与管道本质都是改变这三个文件描述符的流向。
⑥ Shell 取回退出码(Exit Status)并等待下一条命令
每条命令执行完都会返回一个整数:
0:成功
非 0:失败(错误类型依命令而定)
查看上一条命令的退出码:
echo $?

完整的命令执行流程图

3.3 Shell内建命令 vs 外部命令
内建命令:由Shell本身实现,不需要外部文件
例如:cd、echo、export、alias、pwd、history、jobs
特征:
- 执行更快
- 必须作为Shell的一部分存在
- 不依赖文件系统
外部命令:存放在Linux的某个目录中
例如:ls、grep、python、gcc
/bin
/usr/bin
/usr/local/bin
查看命令类型:
type ls
3.4 重定向、管道:为什么它们能“串”起来?
① 输出重定向 > >>
ls > out.txt #覆盖写入
ls >> out.txt #追加写入
原理:程序本来把output写进stdout,Shell把stout从“屏幕”改成“文件”,所有数据直接写入文件
② 输入重定向 <
cat < file.txt
stdin改成文件内容,程序从文件读,而不是键盘
③ 管道 |(之后会更详细的介绍)
ps aux | grep nginx
原理:
A命令的stdout -> 连接到管道
B命令的stdin <- 从管道读取内容
在上述例子中
ps aux | grep nginx
ps aux -> 输出进程列表
grep nginx -> 输入中筛选关键词
四、Linux权限体系( 重点 )
Linux的权限系统是整个操作系统的安全基础。无论是管理文件、运行服务、部署程序还是维护服务器,你都必须理解权限的结构、规则和思想
4.1 为什么需要权限
Linux是一个 多用户、多任务 的操作系统。在一个系统中,你可能会同时看到:普通用户、管理员(root)、系统服务账号、脚本、程序、守护进程
如果没有权限系统,任意用户都能:删除他人文件、修改系统配置、读取敏感数据、覆盖可执行程序、杀死系统进程
这将带来严重的安全隐患与稳定性风险
因此 Linux通过 用户/组/权限 三级设计,为系统构筑起稳固的安全模型,是操作系统稳定运行的基石
一句话理解:
Linux的权限体系用来限制谁能对什么做什么
#查看当前用户
whoami
#切换用户(需知对方密码)
su username
#退出切换,返回原用户
exit
#root用户切换到任何用户无需密码
su - normaluser
4.2 权限的对象(作用在哪里)
Linux权限控制的对象主要有两类:
(1)文件(File)
几乎一切可见的内容:文本、代码、图片、二进制文件
对文件的权限决定:谁可以读取内容、谁可以修改内容、谁可以执行它作为程序
#创建测试文件
touch test.txt
echo "This is secret data" > secret.txt
#查看文件权限
ls -l test.txt
在这里插入图片描述
(2)目录(Directory)
目录本身也有权限,且与文件权限含义不同
对目录的权限决定:谁能列出该目录下的内容(read)、谁能进入该目录(execute)、谁能在该目录下创建/删除文件(write)
目录权限是Linux权限体系中最容易混淆但非常重要的部分
#创建测试目录
mkdir mydir
ls -ld mydir

4.3 权限类型详解:r/w/x的不同含义
文件权限的含义
| 权限 | 符号 | 对文件的影响 |
|---|---|---|
| 读取 | r | 查看文件内容(cat, less, vi等) |
| 写入 | w | 修改文件内容(echo, vim等) |
| 执行 | x | 作为程序或脚本运行(./script) |
# 示例:文件权限实践
echo "#!/bin/bash" > script.sh
echo "echo 'Hello World'" >> script.sh
# 当前只有读写权限
ls -l script.sh
#添加执行权限
chmod u+x script.sh
ls -l script.sh
#尝试执行
./script.sh

目录权限的含义
| 权限 | 符号 | 对目录的影响 |
|---|---|---|
| 读取 | r | 列出目录内容(ls) |
| 写入 | w | 创建/删除文件(touch, rm) |
| 执行 | x | 进入目录并访问文件(cd, cat) |
# 目录权限实验
mkdir testdir
cd testdir
touch file1.txt file2.txt
cd ..
# 场景1:只有r权限(常见错误)
chmod 500 testdir # r-x------ (只有所有者可读和执行)
ls -ld testdir
ls testdir/ # 可以列出内容
cd testdir # 可以进入
chmod 400 testdir # r-------- (只有读权限)
ls -ld testdir
ls testdir/ # 可以列出内容
cd testdir # 失败!权限被拒绝
cat testdir/file1.txt # 失败!需要目录的x权限
# 场景2:只有x权限
chmod 100 testdir # --x------
ls -ld testdir
ls testdir/ # 失败!需要r权限
cd testdir # 成功!可以进入
cat file1.txt # 成功!只要知道文件名就可以访问
# 场景3:只有w权限(危险!)
chmod 200 testdir # -w-------
ls testdir/ # 失败
cd testdir # 失败
4.4 权限表示法:符号法与数字法

符号表示法(ugoa + - = rwx)
最直观的权限修改方式:
# 语法:chmod [ugoa][+-=][rwx] 文件
# u: user(所有者), g: group(组), o: others(其他), a: all(所有)
# 示例:
touch file.txt
# 给所有者添加执行权限
chmod u+x file.txt
# 给组移除写权限
chmod g-w file.txt
# 设置其他用户只有读权限
chmod o=r file.txt
# 同时设置多种权限
chmod u=rwx,g=rx,o=r file.txt
# 所有用户添加执行权限
chmod a+x file.txt
# 查看结果
ls -l file.txt
数字表示法(八进制计算)
适合脚本和批量操作:
| 权限 | 二进制 | 八进制 |
|---|---|---|
| — | 000 | 0 |
| –x | 001 | 1 |
| -w- | 010 | 2 |
| -wx | 011 | 3 |
| r– | 100 | 4 |
| r-x | 101 | 5 |
| rw- | 110 | 6 |
| rwx | 111 | 7 |
# 常用权限组合
chmod 755 script.sh # rwxr-xr-x (所有者全权,其他人读执行)
chmod 644 config.txt # rw-r--r-- (所有者可读写,其他人只读)
chmod 700 private.txt # rwx------ (仅所有者访问)
chmod 777 dangerous.sh # rwxrwxrwx (所有人全权,不安全!)
# 目录权限示例
chmod 755 public_dir/ # 公共目录:可进入并查看内容
chmod 700 private_dir/ # 私有目录:仅所有者访问
chmod 1777 tmp_dir/ # 粘滞位:所有人都可创建,但只能删除自己的文件
4.5 实际场景应用
场景1:创建安全的配置文件
# 配置文件应只允许所有者修改,其他人只读
echo "DB_PASSWORD=secret123" > database.conf
chmod 600 database.conf # rw-------
ls -l database.conf
场景2:团队协作目录
# 创建团队共享目录
mkdir team_shared
chmod 775 team_shared # rwxrwxr-x
sudo chown :developers team_shared # 设置组为developers
# 组成员可以自由操作,其他人只能查看
ls -ld team_shared
场景3:安全的脚本管理
# 创建系统维护脚本
cat > backup.sh << 'EOF'
#!/bin/bash
echo "Starting backup..."
# 备份逻辑
echo "Backup completed"
EOF
# 设置合理权限
chmod 750 backup.sh # 所有者可读写执行,组员可读执行,其他人无权限
sudo chown root:admin backup.sh
五、Linux 目录结构的含义(轻量但重要)
Linux目录结构是一个从/根目录开始的树状系统。每个目录都承担待定作用,理解他们可以帮助你更快定位文件、避免误删关键内容
下面是最常见的系统目录含义(掌握这些就够用):
| 目录 | 作用说明 |
|---|---|
| / | 根目录,一切路径的起点 |
| /home | 普通用户的家目录,例如 /home/zhang |
| /root | root超级用户的家目录 |
| /etc | 系统配置文件所在,如 passwd、ssh 配置等 |
| /bin | 基础命令(如 ls、cp、mv),所有用户可用 |
| /sbin | 系统管理命令(多为 root 使用) |
| /usr/bin | 绝大多数应用程序的可执行文件 |
| /usr/sbin | 系统管理类程序 |
| /var | 可变文件,如日志、缓存、服务数据 |
| /tmp | 临时文件,系统可自动清理 |
| /lib | 系统运行所需的共享库文件 |
| /boot | 系统启动相关文件,如内核 |
| /dev | 把硬件抽象成文件,如 /dev/sda |
| /mnt、/media | 挂载点,用于挂载磁盘、U盘等 |
一句话总结:
Linux 的目录不是随便放的,每个目录都是为某类文件“预定的房间”。理解结构能让你像老司机一样快速找到系统的“零件”。
六、路径 / 重定向 / 管道:Shell 操作核心
Shell 的强大,体现在它能够随时组合命令、处理数据,而这些能力都来自三个关键概念:路径、重定向、管道。
6.1 路径:绝对 vs 相对
路径是 Shell 中最基础也最常用的概念。
(1)绝对路径(从根开始)
以 / 开头:
/home/user/project
/etc/nginx/nginx.conf #不会受到当前目录影响。
(2)相对路径(基于当前位置)
./file.txt 当前目录
../ 上一层目录
../../log 上上层目录下的 log #最易混淆但很常用,尤其写脚本时。
6.2 重定向:> 和 >> 把输出写到文件
默认情况下,命令输出到终端;重定向可以把输出写到文件。
(1)输出重定向(覆盖)
echo "hello" > a.txt
(2)追加重定向
echo "hello" >> a.txt
(3)错误输出重定向
command 2> error.log
(4)标准输出与错误输出同时重定向
command > all.log 2>&1
6.3 管道:把命令像积木一样拼接(之后细讲)
管道 | 用于“把前一个命令的输出作为下一个命令的输入”。
小结
到这里,我们已经搭建起 Linux 的核心知识框架,而这,只是一个开始。Linux 真正的魅力,在于脚本自动化、服务管理、网络运维和线上部署。接下来,我会继续分享更深入、更实战的内容。大家可以跟着我一起学习哇
接下来这一段其实是我这段时间得小小感想(大家可以选择不看了)
进入大三 太多事情映入眼帘 马上就面临着就业、考公、考研,各种各样的选择,站在这个岔路口,我也不知道怎么选,本来坚定的心也被各种因素影响,但迷茫和焦虑都是正常的,这是我们成长的必经之路
怎样才是对呢,我只知道我现在不会的还有很多,需要学习的地方也有很多,没有时间去后悔当初,只能好好把握每一个当下,我们都会成为理想中的自己的!共勉!
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐












所有评论(0)