首页 / 资讯中心 / 文章详情

Linux基础入门:从文件系统、命令行到权限管理的完整实践

Linux基础入门:从文件系统、命令行到权限管理的完整实践 ★ FEATURED ARTICLE
我第一次在终端里敲出ls -la的时候屏幕上蹦出一堆蓝的白的文字说实话心里是发怵的。后来用Linux用久了才明白当年那个发怵不是因为我笨而是因为没人告诉我Linux基础和Windows、macOS的底层思路不是一回事——你只要打通这个思路剩下的无非是命令多敲几次、报错多看两眼。这篇文章就是给刚接触Linux的读者准备的也会照顾到学过一点但总是卡壳的人我会从设计哲学讲到环境搭建再按真实使用场景拆解高频命令最后把新手最容易栽的权限坑和排错思路一并说清楚。文章里所有例子都是我自己敲过、踩过、验证过的你可以直接照着做。1. 学Linux之前先弄明白它和Windows的根本分歧1.1 一切皆文件不是玄学是最有用的心智模型很多人学Linux卡在第一步就是拿Windows的经验去套Linux。Windows里C盘、D盘、设备管理器、注册表各是一套逻辑你需要在不同的图形面板里操作Linux不是这样它把几乎所有东西都抽象成文件普通文档是文件目录是文件硬盘分区是文件键盘输入是文件终端输出也是文件。你在电脑上做的每一件事最后都能归结成在读某个文件或往某个文件写内容。这个思路叫一切皆文件是Linux的底层设计哲学。这个抽象层听着玄实际用起来非常爽。举个例子你想查看CPU信息不用打开设备管理器直接读文件就能看到cat /proc/cpuinfo。你想清空终端屏幕本质上也是在向终端设备文件发送控制序列。理解了这一点你就知道为什么高手总说Linux下没有秘密——一切状态都挂在文件系统里只要权限够你总能翻出来看。再换个生活角度理解图形界面里你双击一个txt文件背后其实是某个编辑器进程打开并读取该文件在终端里敲cat file.txt效果一模一样。区别只是前者多包了一层壳。所以命令行不是另一个世界它只是把图形界面里那些动作拆开给你看而已。1.2 权限模型和Windows正好相反Windows的默认思路是先允许再限制你是管理员想干嘛基本都能干嘛系统再额外加一层安全软件来拦。Linux的默认思路是先拒绝再授权每个文件都有明确的属主、属组和权限位没有权限就是没有权限只有特殊的管理账户除外。这套模型在服务器上尤其重要——你希望一个Web服务进程只能读它该读的目录绝不能顺着手去碰你的个人文件。刚开始你可能会觉得烦我自己的文件还要额外授权才能改但正是这个烦避免了服务器上因为一条指令横冲直撞而全线崩溃。我把两种模式类比成两种住法Windows更像是酒店服务需要什么找服务员房间门是虚掩的Linux更像合租公寓每间房都锁着公共区域谁都能用但别人的房间你没钥匙就进不去。你住一晚酒店觉得省心但要长住、要和别人共享一套房子锁和钥匙就是必需品。1.3 命令行不是落后而是可以编程的接口很多人把终端当成高科技版大黑框觉得Windows有图形界面为什么还要敲命令。我的理解是图形化界面的每个按钮本质上是把一条命令封装成一个好看的动作你点一次鼠标只能做一件事命令行则能让你把多个动作串起来还可以写成脚本批量执行。Windows下你要给100张图片重命名得装个改名工具或者写一段小脚本Linux下就是一行循环的事。命令行的另一个好处是组合。每条命令只做一件简单的事但你可以用管道符号|把上一条命令的输出接到下一条命令的输入。这就像厨房里的一把刀做不了满汉全席但配上案板、锅铲和调味品你就能组合出无数道菜。管道符用得越熟你在终端里的效率就越高。我个人的体会是图形界面适合探索和学习命令行适合确定性的重复操作。你在界面上点过一遍、知道某个设置在哪再去查它对应的命令这就够了不需要为了看起来像高手而刻意背命令。2. 零基础怎么搭出第一个可用的Linux环境2.1 为什么我建议新手先用虚拟机学Linux敢不敢直接在主力电脑上装我的建议很保守第一次接触务必用虚拟机不要双系统更不要直接拿主力机开刀。虚拟机等于在你现有系统里开一个窗口中的电脑它有自己的屏幕、硬盘和内存但本质就是一个大文件随时可以删除、快照、回滚。这对新手太重要了——Linux下敲错一条命令轻则配置错乱重则整个系统起不来。有快照的话出问题恢复只需要点一下没有的话你可能要重装半天。放一张三种方案的对比方案优点缺点适合场景虚拟机安全、快照回滚、随时删除性能有损耗新手入门、尝鲜、做实验双系统性能接近原生、资源独享切换麻烦、有引导风险确定要长期把Linux当主力实体机裸装性能最好资料容易丢、排障成本高有经验的服务器使用者我给新手的配置参考内存给2到4GBCPU给2核起步磁盘至少20GB。别贪多也别抠门——内存太小会卡磁盘太小装几个软件就满了。2.2 发行版怎么选别选花选社区发行版这个词新手容易懵。简单说Linux内核本身是个引擎各家把引擎装上方向盘、座椅、仪表盘打包成整车这就是发行版。有的打包成桌面办公全家桶有的打包成只有命令行的小个子适合跑服务器。选哪个我的建议很直接新手不要纠结哪个最强选社区活跃、文档多、遇到问题搜得到答案的桌面发行版。为什么社区重要因为Linux使用中九成的问题不是你不会而是某个配置不对能搜到别人的解决方案才是最快的路径。先别碰那些小而美极简的发行版它们适合老手折腾不适合新手上路。你要的是开箱即用的桌面体验能上网、能看图、有输入法、软件中心里能装常用软件。把基础跑顺了再去折腾精简版也不迟。2.3 安装过程中最容易忽略的四个设置磁盘分配虚拟机里选使用整个虚拟磁盘最省心如果你是在物理机上装双系统至少预留50GB别抠抠搜搜。用户设置安装时创建的普通用户就是日常账号它有管理权限但和完全体管理权限不是一回事这一点后面讲权限时会细说。时区与键盘时区选你所在时区的对应项国内一般选东八区键盘布局选US或者你习惯的输入法布局装完再调也来得及。软件源装完系统第一件事把软件源切换到离你近的镜像不然下载软件会慢到怀疑人生。不同发行版的切换方式不一样系统设置和官方文档里一般都有图形化入口。这四个设置里软件源是我见过最容易坑新手的。有人装完系统直接装个大软件等了半小时还在转圈以为是机器不行其实是源没换。2.4 装完先做这三件事之后再动手折腾第一拍一张快照。虚拟机里这一步就是你的后悔药不管之后装什么、改什么出问题都能一键回到这个干净状态。第二更新一遍环境。打开系统自带的软件中心把软件包全部更新到最新。这一步能修掉很多旧版本才有的问题也能让你用到最新的软件仓库。第三装一个顺手的文本编辑器。我建议新手先用系统自带的编辑器不要一上来就折腾那些需要大量配置的编辑器。等到你确实需要插件、快捷键了再去换也不迟。说句掏心窝的话新安装的Linux环境本身很干净干净就是最好的学习状态。很多人装完第一件事是和编辑器配置战斗结果还没开始学Linux先被工具劝退了。工具够用就行你的精力留给系统本身。3. 按日常场景拆解高频命令别背命令表按需记3.1 场景一我在哪、这里有什么pwd打印当前工作目录、ls列出文件、cd切换目录是终端里的三大基本功就像你进一个新办公室先要知道自己在哪个房间、房间里有什么、怎么去别的房间。实际用起来长这样打开终端先pwd看当前路径然后用ls -a看目录下所有文件包括隐藏文件以点开头的文件比如各种配置文件想看详细信息就用ls -l能看到权限、属主、大小和修改时间。想回家目录cd ~或者直接cd回车都能回去。如果你在一个陌生文件夹里逛我推荐一条组合命令ls -la它把隐藏文件、详细格式都显示出来是我用最多的命令之一。3.2 场景二复制、移动、删除要小心复制是cp 源 目标移动或重命名是mv 源 目标删除是rm 文件。这三个命令本身不难难的是Linux没有回收站——rm删了就是真删了找回的机会非常小。新手最常踩的坑是这个rm -r递归删除目录rm -f强制删除不提示两个一组合rm -rf再加个通配符*威力巨大。我的习惯是删除前先用ls看一眼目标目录里有什么确认无误再删能不用-f就不用让系统多问你一次。这里必须讲一个我见过无数次的翻车故事。某同学A想在测试目录里清理文件脑里想的是清空这个目录手上敲的却是rm -rf *偏偏当时当前目录已经切换到了上级目录一条命令下去整个工作区的文件全没了。这个例子不是吓唬你是提醒你凡是带-rf的删除命令执行前默念三遍我确认我就在目标目录里。3.3 场景三查看文件内容别只会cat新手看文件习惯用cat但cat会把整个文件一股脑甩到屏幕上文件一大屏幕全是字什么也看不清。正确姿势是分情况用工具less 文件分页浏览支持上下翻页、搜索大文件神器。head -n 20 文件只看前20行。tail -n 50 文件只看最后50行看日志最常用。tail -f 文件实时跟踪文件新增内容比如服务正在写日志时挂着看它的输出。再结合grep做搜索grep 关键字 文件只显示匹配的行grep -i忽略大小写grep -r递归搜索目录里所有文件。查日志时我习惯这样先tail -f盯着输出再开一个终端用grep按错误码过滤两边配合问题定位快很多。3.4 场景四文件不知道放哪了怎么找find是最全的查找命令find 路径 -name 文件名按名字找find / -name *.conf在全盘范围找配置文件。它还有个常见用法是按时间或大小找find /tmp -size 100M找出超过100MB的大文件。locate是另一种方式它查的是预建的数据库速度快但可能不是最新的whereis专门找命令装在哪个目录which告诉你当前敲的命令实际是哪个文件。排查我明明装了软件为什么敲命令提示找不到时第一步就是用which看命令路径对不对再用type看是不是被别名或者特殊定义覆盖了。3.5 场景五系统卡了、没网、磁盘满了先看什么系统变慢或异常先别急着重启按这个顺序看ps看进程列表ps aux显示所有用户进程。top实时刷新CPU和内存占用哪个进程在吃资源一目了然。退出按q。free -h看内存使用情况。df -h看磁盘分区使用率。du -sh 目录看某个目录到底占用多大空间。我自己的排查心得服务器莫名其妙变慢了九成是三种情况——磁盘满了、内存不够、某个进程CPU跑满。我会先用df -h排除磁盘问题再看free -h然后用top看进程这三步之间只需要一分钟。磁盘满时配合du -sh *从当前目录逐级往下找很快就能揪出占用大户。3.6 场景六打包压缩备份和传文件都靠它生产和备份场景里tar是打包的老牌工具。打包并压缩tar -czf 包名.tar.gz 目录解压tar -xzf 包名.tar.gz。记忆点c是创建x是解压z是用压缩算法f后面跟文件名。如果是把文件传到另一台机器通常会用到远程复制工具比如scp之类这类工具依赖远程连接服务属于后面进阶的内容。新手先掌握tar就够用——你能把整个目录变成一个包再把这个包复制到任何地方很多备份需求就已经解决了。4. 权限与用户管理新手踩坑率最高的区域4.1 用一张表看懂r、w、x对文件和目录的区别这是Linux最基础、也最容易被忽略的知识点同样一个权限字符作用在文件和作用在目录上含义完全不同。权限对文件对目录r读能查看文件内容能列出目录里的文件名w写能修改文件内容能在目录里新建、删除、重命名文件x执行能把这个文件当作程序运行能进入这个目录cd进去很多人知道文件需要x才能执行却没意识到目录也需要x才能进入。我见过有人改目录权限时只给了rw-结果自己都cd不进那个目录了当场懵了。目录的x位就是门禁没有它你连门都进不去。4.2 数值权限644、755、777不是你想象的暗号权限位的三个角色是属主文件所有者、属组文件所属组、其他人。每一位用数值表示规则是读为4、写为2、执行为1相加得到该角色的权限值。于是644属主可读可写属组和其他人只读。普通文件的常见默认权限。755属主可读可写可执行属组和其他人可读可执行。目录和可执行程序的常见权限。777所有人可读可写可执行。这是全部放行除非你明确知道自己在做什么否则别用。设置命令是chmodchmod 644 file.txt把文件设为644chmod -R 755 目录递归设置整个目录树。为什么不建议到处用777因为777等于告诉系统任何人都能改这个文件和Linux的权限隔离理念完全相反等于把防盗门拆了。4.3 chown文件到底是谁的chown 用户名 文件改文件的属主chown 用户名:组名 文件同时改属主和属组。实操中最常见的场景是你从某个地方解压了一个软件包运行的时候发现没有权限写自己的配置ls -l一看文件属主是个默认用户。这时候要么用管理权限执行要么把文件归到自己名下chown -R 当前用户名 软件目录。给新手一个判断标准如果某个程序只需要你的普通用户运行就把文件chown给这个用户如果它需要系统级权限就应该保持系统用户所有然后通过权限位控制谁可读可写。不要图省事把所有文件都chown给自己。4.4 sudo不是rootroot也不是万能挡箭牌sudo的机制是普通用户临时以管理权限执行某条命令执行时需要输入自己的密码。它和切换到root用户有本质区别——用sudo执行你只是这一次操作获得了权限操作完就回到普通用户切到root是长期待在一个没有边界感的超级账号里。为什么不建议长期用root因为root的操作没有任何限制一条rm命令可以把整个系统删掉系统不会提示你要不要确认。用sudo至少保留一层威慑你敲下的每条高风险命令都明确带着sudo前缀你会下意识多看一眼。我见过太多人图省事切到root结果一个小失误把配置搞坏最后只能靠快照恢复。这不是Linux的问题是用法的边界问题。4.5 一个真实的权限事故复盘某同学B想让一个Web目录被服务进程访问上网搜到一条递归赋权限的命令于是直接在根目录附近执行了chmod -R 777结果整个文件系统的权限位全部变成了所有人可读可写可执行。排查过程是这样的先发现登录时多了可疑的报错再抽查根目录下多个文件的权限位发现原本是644的普通文件全部变成了777基本可以确认是权限被大面积改动。翻历史命令记录定位到那条递归赋权命令最后只能从备份恢复。整个过程听起来简单实际恢复花了大半天因为受影响的文件太多光核对清单就耗了很久。这个案例有两个教训值得记住第一chmod -R、chown -R这类递归命令执行前一定ls确认当前目录绝不在根目录或宽路径上随手递归第二改变权限前先想清楚谁需要什么权限而不是放开所有权限让系统跑起来。5. 命令报错时怎么一步步自己找出问题5.1 五个最常见的报错先对号入座终端报错并不可怕可怕的是不看报错就乱试。下面这五个报错占据了我见过的九成新手问题报错特征含义最可能原因command not found命令不存在拼写错了或者软件没有安装permission denied权限被拒绝对目标文件/目录缺少相应权限no such file or directory文件或目录不存在路径写错或相对路径基准不对read-only file system文件系统只读磁盘只读挂载或系统状态异常no space left on device设备没有空间分区满了需要清理我强调一下报错消息末尾往往藏着最精确的原因比如permission denied后面会跟具体的文件路径。整条读下来别只看开头。5.2 排错的通用套路别慌先拆遇到报错我的流程固定四步读完整报错特别是第一行和最后一行。判断是自己敲错还是环境问题。最简单的验证是拆开测试比如用ls -l看路径存不存在用which 命令看命令有没有安装。查man 命令或命令 --help确认参数没写错、用法没搞反。把完整报错原文贴到搜索引擎用引号包起来搜比只搜关键词精准得多。很多人卡在第二步。比如提示no such file or directory他一直在想这个文件怎么不见了其实问题很可能是相对路径的基准不对——你人在家目录写的却是./configs但这个目录根本不在家目录下。用pwd确认位置再用绝对路径试一次往往就通了。5.3 用一个小案例走一遍完整链路某同学C执行./start.sh终端报permission denied。他的第一反应是我没有权限运行脚本。我们按流程拆先看报错是权限问题再看文件权限ls -l start.sh结果权限位是-rw-r--r--没有执行位x。所以问题不是用户没有权限而是文件根本没有执行位。解决方式是chmod x start.sh给所有人加上执行位然后重新./start.sh成功。这个案例想说的是报错只告诉你不通不告诉你为什么不通、为什么不知道通知。你要自己把问题拆开看。另外./start.sh这类脚本还有一种常见报错藏在脚本内部——第一行声明的解释器路径不对比如#!/bin/bash写成了别的路径。这时候终端可能只会报一个含糊的错误你需要用head -n 1 start.sh检查脚本头部。5.4 提问的姿势会影响你解决问题的速度同样是求助描述得清楚的人解决速度是糊里糊涂提问的人的数倍。我的建议是搜的时候把完整的报错原文贴进去再附上系统版本和软件版本比如某某命令 permission denied 某桌面发行版。不要只搜permission denied那个结果太宽泛筛不出来。还有一些周边命令能帮大忙history看自己敲过什么echo $?看上一条命令的退出码0通常表示成功非0表示出问题man看命令手册。排查不是一个神秘的技能就是老老实实把问题缩小的过程。6. 从会用命令到真正上手我的学习路径建议6.1 别急着背命令先定一个小目标我接触过很多新手最典型的误区是拿一张几百条命令的速查表从早背到晚。背完就忘因为没场景。我的建议是定一个小目标让需求驱动你学命令。比如目标A搞一台家庭文件服务器学会用户管理、权限、磁盘和网络基础。目标B把日常备份做成自动脚本学会脚本语法、定时任务和打包工具。目标C部署一个小型网站学会装服务、改配置、看日志、管理进程。每个目标覆盖的命令才是你需要深度掌握的。其余命令混个脸熟用到再查完全来得及。6.2 写第一个能用的shell脚本脚本不是程序员的专属它就是你日常敲命令的连招存档。最简单的入门方式把几条手动命令写进一个文本文件加一行声明给执行权限就能跑。下面这个备份脚本是我建议新手模仿的第一个模板#!/bin/bash # 简单备份脚本把src目录里的所有txt文件复制到backup目录并加后缀 for file in ./src/*.txt; do cp $file ./backup/$(basename $file).bak done echo 备份完成逐行拆解第一行#!/bin/bash叫解释器声明告诉系统用哪个程序来执行这个脚本for ... in ...; do ... done是循环遍历./src/*.txt匹配到的每个文件$(basename $file)是先执行basename命令再把结果拼进路径里。你不需要一次看懂全部照着猜、改、跑通比看十遍语法书都管用。别忘了给脚本加执行权限chmod x 备份脚本.sh。6.3 从照抄到理解怎么读系统里的参考文件Linux自带的学习资料非常多man手册只是其中之一。系统里还有一堆示例配置文件通常在/etc目录下或者软件自带的文档目录里往往是写得极好的教材。我的学习方法是把示例配置文件复制一份先把所有注释读一遍注释里会解释每项设置的用途再删掉不关心的内容只留下我要改的部分最后重启对应服务看效果。这个方法比看第三方教程牢靠因为它是针对你当前这套系统写的版本和路径都对得上。6.4 最后想分享的三个小习惯快照和备份先行。折腾前先记录当前状态出错了回滚别硬扛。平时觉得慢出问题时才知道它是救命的。一次只改一个变量。改配置时尽量一次只动一处改完验证再改下一处。多件事同时改出问题都不知道怪谁。把用过的命令和踩过的坑记下来。命令可以忘笔记不会。你记一次后面可能省下几个小时。这篇我把自己最常被问到的怎么开始学Linux整理了一遍。最后想说的是Linux基础说到底是动手的基础你看再多的命令讲解不如自己在一个虚拟机里折腾两晚上。我在虚拟机里删过系统文件、把配置改崩过、把权限弄丢过每次都是先缓一口气然后老老实实看报错、查文档、恢复快照——恰恰是这些折腾让我把Linux的脾气摸透了。希望你也敢折腾、能折腾然后享受折腾的过程。
阅读完成 · 觉得有帮助?
咨询建站