资讯动态

Linux基础入门:从命令行到权限管理,一篇搞懂核心操作

发布时间:2026/10/17 8:09:44 来源:尧图企业网站定制
如果你正在跟着某个系列教程走到第三篇前两篇大概率已经把计算机基础、操作系统概念这些东西捋了一遍而现在你站在了真正动手的门槛前——命令行。这个位置非常关键很多人在这一步选择了放弃理由是记不住命令不知道敲错了会有什么后果。但我想先说一句Linux的学习曲线之所以陡峭不是因为它难而是因为它和你过去在图形界面里点来点去的思维方式完全不同。这篇基础篇我用一个从业者的视角把最核心、最绕不开的内容拆开揉碎讲清楚争取让你在读完、练完之后能真正在终端里独立操作而不是只会对着教程复制粘贴。这篇文章会覆盖从系统选型、文件系统结构、最常用的命令、权限模型、用户管理到软件安装和服务维护的完整链路。对完全零基础的朋友来说它是一张进入Linux世界的地图对有基础但不够系统的朋友来说它能帮你补上很多知其然不知其所以然的短板。我会尽量少讲废话每一步都告诉你为什么这么做以及踩过的坑在哪里。1. 开始之前先解决装哪个Linux和怎么学的问题1.1 发行版选择背后的真实逻辑很多人第一个问题是Linux那么多版本我该装哪个。这个问题如果丢到社区里很容易引发争论因为每个人都有自己的偏好。但我建议你从实际目标出发如果你是想把Linux当作日常主力系统来用或者以后打算做运维、部署服务那么选择CentOS系现在更推荐其上游的RHEL生态或替代品或Debian系是稳妥的。它们在企业里的存量非常大遇到问题能搜到的资料也最多。如果你想快速入门、追求软件新版本选Ubuntu Desktop或者Fedora Workstation会更友好有图形界面驱动支持也到位。如果你学习目的不是为了用而是为了考比如考某个认证那就直接按照考试要求的发行版来装免得后面因为命令细节不一致产生困扰。这里我给新手一个比较保守的建议选Debian或Ubuntu Server作为第一个练习环境不需要图形界面。为什么因为纯命令行环境能逼着你尽早摆脱鼠标专注于命令本身。等你在命令行里游刃有余了图形界面反而会成为可选项。注意不同发行版最大的区别是包管理器和默认目录规范习惯了一个再去用另一个初期会觉得命令都不一样。学会用man和--help随时查阅文档比死记硬背某个发行版的命令重要得多。1.2 学习环境和练习策略如果是装了虚拟机或者使用云服务器来练手我强烈推荐一个策略把当前系统快照保存好然后大胆地折腾。Linux最忌讳的是一边看书一边小心翼翼地不敢执行因为很多命令的杀伤力书面上写一百遍都不如你亲手误操作一次来得深刻。但不要让误操作毁掉你的环境所以快照、备份这类习惯要从一开始就建立。虚拟机方案适合在个人电脑上练习快照、回滚都非常方便不依赖外网。云服务器方案适合用来练习网络相关的配置但要注意安全尤其是别把端口暴露在公网上还不设密码。学习顺序上我建议先把基础命令跑熟再研究权限然后是用户管理最后是软件包和服务。这个顺序就像盖楼命令是砖块权限是钢筋用户管理是墙体软件管理是水电。你现在要做的就是先把砖块一块块摸清楚。2. 文件系统与目录结构Linux一切皆文件的起点2.1 为什么说一切皆文件一切皆文件是Linux设计哲学的基石。你在Windows里可能会觉得磁盘是C盘、D盘软件装在某个文件夹里但在Linux里你的键盘输入、屏幕输出、网络连接、硬件设备、普通数据文件都被抽象成了文件。也就是说你通过统一的接口——文件读写——就能和几乎所有系统资源打交道。这个设计带来的直接好处是处理逻辑变得极其统一。你用查看文件内容的命令可以查看CPU信息用重定向符号可以把程序输出写到文件里甚至两个进程之间也能通过文件来进行通信。对初学者来说理解这一点不需要太深入但有了这个认知你就能理解为什么cat /proc/cpuinfo这种命令可以读出CPU型号——因为CPU信息被内核映射成了虚拟文件。2.2 目录结构速记法Linux的目录结构看起来繁杂但其实有一条主线一切从根/出发。真正需要优先记住的是以下几个目录的角色定位/根目录所有路径的起点类似Windows的盘符顶部。/etc配置文件的家。几乎所有的软件配置都在这里比如网络配置、用户密码文件、软件源列表。/home普通用户的家目录所在地每个用户一个文件夹用来存放个人文件和配置。/var经常变化的数据日志文件、缓存、队列都在这。/tmp临时文件目录系统重启后可能会清空。/usr系统主要软件和库文件的安装位置类似于Windows的Program Files但它的角色更接近系统底层。/bin和/sbin存放可执行文件前者是普通用户也能执行的常用命令后者通常是系统管理命令。新手常见困惑是明明自己建了一个目录重启后找不到了。这多半是因为把东西放到了/tmp下。所以一个好习惯是个人工作文件放在/home/你的用户名/下不要乱放到根目录其他位置。实操心得你可以用ls /看看根目录下的所有文件夹再逐个ls -l看里面的内容把每个目录对应文档里介绍的角色和实际内容对一遍这种眼见为实的记忆效果远好于死记。2.3 路径相对与绝对的坑命令cd是切换目录的指令它接受两种路径绝对路径从/开始写全例如cd /etc/nginx相对路径基于当前位置用.表示当前目录、..表示上级目录例如cd ../..是往上退两级。我见过不少新手在写脚本时因为相对路径和绝对路径混用导致换了个地方运行脚本就全部报错。这里有一个原则可以写进你的习惯里命令行交互的时候怎么方便怎么来但写脚本、配置服务时一律用绝对路径。因为在交互模式下你清楚自己在哪里脚本执行时却不一定。另外要提醒一个容易让人懵的符号~代表当前用户的家目录。cd ~和直接敲cd效果一样都会回到自己的家。而cd -是返回上一次所在的目录这两个快捷键是提升效率的好工具。3. 常用命令实操从建目录到删文件一次讲透3.1 文件与目录的增删查改我们把最常用的一组命令放在一起讲因为这些命令几乎每天都会用到组合起来就是一套完整的工作流。pwd打印当前所在目录的绝对路径。新手最容易迷路而pwd就是你的指南针。ls列出目录内容。ls -l显示详细信息ls -a显示隐藏文件以.开头的文件ls -lh以人类可读方式显示大小。cd切换目录前面已经详细说过。mkdir创建目录。mkdir -p a/b/c可以一次性创建多层目录。touch创建一个空文件或者更新已有文件的时间戳。cp复制文件或目录。复制目录必须加-r参数否则会提示无法复制目录。mv移动或重命名文件。注意在同一目录下mv oldname newname就是重命名。rm删除文件或目录。删除目录用-r如果文件是只读的系统会询问是否确认不想被问就加-f。这里我特别想展开讲rm因为它可能是新手遇到的第一个事故高发区。rm -rf /这个梗大家都听过它的作用是强制删除根目录下所有文件而一旦在root用户下执行系统会瞬间崩溃无法挽回。真实的开发场景里我见过有人本来想删除一个临时目录结果因为路径里多了一个空格写成了rm -rf / tmp直接把系统删没了。所以执行rm之前我的个人习惯是先ls看一眼目标目录内容确认路径正确再执行删除操作。另外尽量不要用rm -rf去删不确定路径下的内容可以先用mv把不想要的东西移到一个回收文件夹里过几天再确认后删除这样能避免很多手滑事故。3.2 查看文件内容的几种姿势查看文件内容并不只是cat一个命令不同场景有不同的选择cat适合查看小型文件的全部内容。它会把文件内容全部输出到屏幕上。less适合查看大型文件支持上下翻页、搜索。比如查看日志文件用less可以边翻边找关键信息。打开后按/输入关键词可以搜索按q退出。head默认查看文件前10行适合看日志开头。tail默认查看文件后10行看点在于tail -f可以实时追踪文件末尾新增的内容排查日志时非常好用。grep在文件内容中筛选包含关键词的行比如在配置文件中找某个参数比手动翻快得多。这四个命令的组合基本可以覆盖日常所有看文件的需求。例如你想查看nginx的错误日志最后的20行里有没有error字样可以写tail -20 /var/log/nginx/error.log | grep error。这里的|符号就是管道它把前一个命令的输出作为后一个命令的输入。这是Linux命令行最有魅力的设计之一简单说就是组合技。日常操作中管道和grep是排查问题时使用频率最高的一对组合。3.3 vim编辑器逃不掉的门槛说到在Linux里改文件就不得不提vim。很多新手第一次打开vim会发现自己卡住了不知道怎么输入文字也不知道怎么退出。这是正常的因为 vim 的设计是模式化的不是直接输入。刚打开文件时你处于普通模式此时键盘按键是快捷操作而不是输入字符。按i进入插入模式这时候才能正常打字。按Esc回到普通模式输入:wq是保存退出输入:q!是不保存退出。这三个要点记住了vim 的使用就算入门了。但你还需要掌握两个高频操作在普通模式下按dd删除当前行按u撤销上一步操作。dd和u这两个操作能帮你避免很多越改越乱的困境。关于编辑器选择我这里多说一句不要在这个阶段纠结 vim 和 nano 哪个更好。在Linux里vim 是几乎必然存在的编辑器而 nano 更友好一些。但长远看vim 的学习曲线虽然陡峭回报却极高因为在服务器上没有图形界面的环境里你唯一能依靠的顺手的编辑工具很可能就是 vim。哪怕现在不精通至少熟悉基本操作能让你在环境中活下来。4. 权限模型与用户管理理解root与sudo的真正关系4.1 权限的三个角色和三个动作Linux的权限模型可以用一个九宫格来理解每个文件或目录都有三组权限分别对应属主user、属组group、其他人others每组权限有三种动作读r4、写w2、执行x1。ls -l看到的第一列比如drwxr-xr-x就是权限的完整表达。拆开来看第一个字符d表示这是一个目录后面九个字符每三个一组分别对应属主、属组、其他用户。数字表示法更直观每个组的三个权限用数字相加。比如rwx是7r-x是5r--是4。如果你看到一个文件权限是644意思就是属主可读可写组里的其他人和其他用户都只能读。理解这个模型后再去学习chmod就顺理成章了。chmod 755 filename是直接把权限改成数字对应的值这种方法叫数字法。还有一种符号法比如chmod ux filename意思是给属主添加执行权限。实操心得对于脚本文件必须要有执行权限x才能运行。很多新手./script.sh会得到Permission denied的报错原因就是脚本文件没有x权限。这时候执行chmod x script.sh再运行即可。4.2 root用户是万能的但千万别常用Linux系统的超级用户叫root它可以操作系统内的任何文件、任何配置没有任何限制。这种无限制既是能力也是危险。root用户下一条错误的命令可能让系统直接报废而且系统不会有任何额外确认。所以在正规操作中日常使用应当用普通用户登录只有在需要管理系统配置时才临时切换到root或者使用sudo命令前缀。sudo的作用是以root权限执行某一条命令但执行前它会检查当前用户是否在sudoer列表里并要求输入当前用户的密码。这样可以防止无意的系统性破坏同时给系统留下审计记录。顺便解释一下su和sudo的区别su是直接切换用户身份比如su - root会切换到root用户输入的是root的密码sudo则是仅以root身份执行后面这一条命令输入的是当前用户自己的密码。日常使用中推荐用sudo而不是su因为su切换到root后你不会记得自己还在root状态接着敲下去的命令都拥有最高权限风险极大。4.3 用户与用户组管理的基础操作用户管理相关命令中我需要优先讲这几个useradd、usermod、userdel、passwd、groupadd。useradd username创建一个新用户。系统会同时在/home下创建同名目录并生成对应的用户id。passwd username设置或修改指定用户的密码。usermod -aG groupname username把用户加入某个附加组。-aG这两个参数组合非常重要-a表示追加G表示附加组不加-a直接覆盖会把用户从原有附加组里踢出去。userdel -r username删除用户-r参数会连同家目录一起删除。groupadd groupname创建用户组。用户组的意义在于协同授权。比如你有一个项目目录需要让一组人都有读写权限与其一个个给用户授权不如创建一个组把用户拉进组里然后给目录设置属组为这个组并赋予相应权限。到后面学习服务部署时这种做法非常常见。注意在系统里创建一个用户后如果不知道给它设什么密码可以跳过密码设置。但一个没有密码的用户无法正常登录所以创建用户后务必执行passwd完成密码初始化否则换了环境可能连自己都登不进去。5. 软件包管理与服务控制从安装到自启动的一次完整闭环5.1 不同发行版的包管理脉络软件包管理是Linux里最体现发行版差异的地方但整体思路是相通的。无论是Debian系的apt、Red Hat系的yum/dnf还是Arch系的pacman本质都在做三件事更新软件源索引、安装软件包、卸载软件包。推荐一个通用的联想法把软件源理解为手机应用商店apt update就是在刷新商店的列表apt install xxx就是从商店下载安装某个应用apt remove xxx就是卸载应用。这样想一切就顺了。我在实际运维中常用的一组命令是apt update # 刷新软件包索引 apt upgrade # 升级所有可升级的软件包 apt install nginx # 安装指定软件 apt remove nginx # 卸载软件但保留配置文件 apt purge nginx # 卸载软件并清除配置文件如果你用的是 CentOS/RHEL 系把apt换成yum新系统用dnf即可用法几乎一一对应。需要说明的是很多时候你安装软件会提示找不到包这时候大概率不是包名写错了而是没有先执行源更新索引还是旧的。5.2 systemctl 是服务的遥控器在Linux里软件装上之后只是有了本体要想让它一直运行就需要让系统把它的服务拉起来。以最常用的systemd为例管理服务的命令统一用systemctl。systemctl start 服务名启动服务。systemctl enable 服务名设置开机自启。systemctl status 服务名查看服务状态。systemctl restart 服务名重启服务通常在修改配置后执行。systemctl stop 服务名停止服务。一个服务想被systemctl管理必须在/etc/systemd/system/或/lib/systemd/system/下存在对应的.service文件。如果我们自己写了一个脚本想做成服务也需要创建这样一个文件结构并不复杂大致是这样[Unit] DescriptionMy custom service [Service] ExecStart/path/to/my_script.sh Restartalways Usermyuser [Install] WantedBymulti-user.target然后执行systemctl daemon-reload systemctl enable my_service systemctl start my_service一句话说透daemon-reload让系统重新读取服务文件列表enable设置自启start立即运行。这三步做完一个自定义服务就上线了。常见坑如果你改了服务文件但没有执行daemon-reload服务重启时用的还是旧配置这是很多人排查半天为什么改了不生效时忽略的环节。5.3 日志查看是排查服务的眼睛服务出了问题第一反应不该是反复重启而是看日志。使用systemd管理服务的日志可以用journalctl查看。journalctl -u 服务名查看某个服务的全部日志。journalctl -u 服务名 -f跟踪最新日志实时刷新。journalctl -u 服务名 --since today只看今天的日志。另外很多传统服务还会把日志写在/var/log/目录下比如 Nginx 的访问日志和错误日志就在/var/log/nginx/下。当journalctl查不到信息时去/var/log里翻对应文件往往能找到更详细的线索。在这个过程中tail -f和grep又会派上用场。比如你怀疑服务报错是因为某个配置项写错了可以先tail -f /var/log/xxx.log | grep error这样屏幕上只会刷新包含error的行日志再多也不会淹没视线。这就是之前提到的管道组合技在实战中的应用。6. 常见问题排查与避坑手册6.1 权限类问题问题现象执行./script.sh提示Permission denied。排查思路这不一定是文件不存在而往往是没有执行权限。先ls -l script.sh查看权限位如果-rw-r--r--说明确实没有x权限。执行chmod x script.sh解决。问题现象编辑某个系统配置文件时提示Permission denied。排查思路配置文件通常在/etc下只有root才能写。要么用sudo vim /etc/xxx.conf编辑要么先切换到root用户。不要试图用普通用户强写这是系统的安全机制。6.2 目录类问题问题现象明明创建了一个目录但别的用户访问不了。排查思路逐级检查路径上每个目录的权限。比如/home/user1/project其他用户要访问那么/home/user1和/home/user1/project都要有x权限/home/user1本身不能是700。很多时候问题出在中间某一级目录权限过严导致路径断了。问题现象用mv移动目录结果目录结构变了。排查思路mv的语义取决于目标路径是否存在。如果目标是一个已存在的目录会把源目录移动进去如果目标是一个不存在的路径则会重命名。所以先确认目标路径的状态再执行mv。6.3 软件包与服务类问题问题现象apt install提示Package not found。排查思路先执行apt update刷新索引。如果刷新后仍然找不到可以搜索包名apt search 关键词因为真实包名可能与你想的不一样。问题现象服务配置文件改了重启后没有生效。排查思路先systemctl daemon-reload再systemctl restart 服务名。如果还是不生效去/var/log或journalctl里找日志多半会发现配置项写错、文件权限不对或端口被占用等原因。问题现象服务启动失败提示端口被占用。排查思路用ss -tlnp | grep 端口号找出占用端口的进程然后用kill结束它或者直接修改当前服务的监听端口。在测试环境里端口冲突是最常见的服务起不来原因之一。6.4 我给新手的几条防坑守则最后聊几条我踩过之后沉淀下来的习惯值得从第一天就养成不要在root用户下做日常操作。想用一条管理员命令就用sudo这是最低成本的习惯。删除重要内容之前先备份。可以用cp -r 目录 目录.bak或者打一个tar包。修改配置文件之前先备份原文件。比如cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak改坏了随时能回滚。不要随手关掉防火墙或清空规则。很多服务跑不起来未必是软件的问题而是端口被防火墙挡了这时候要学的是放行指定端口而不是直接关掉防火墙。每条命令执行之前先想一下它的作用范围。尤其是带-r或-f的命令先默念一遍路径再回车。7. 最后分享一点实战中的体会很多朋友学到这里会有一个共同的感觉命令都认识了但放到真实环境里还是不知道该干嘛。这是正常的因为你缺少的是项目感——你是在用一个个孤立的操作应对问题而不是在一个完整任务里串联它们。我的建议是给自己布置一个小任务在一台干净的Linux上从创建用户开始配置sudo权限、安装一个Web服务、写一个自定义脚本挂到systemd里、设置开机自启最后查看日志确认一切正常。这个流程几乎涵盖了本篇讲到的所有知识点你完整走一遍对Linux的认知会发生质的变化。如果中途遇到问题优先用日志去定位而不是猜。这也是Linux运维工作里最重要的习惯不要猜去看日志日志会告诉你真相。希望这篇基础篇能成为你进入Linux世界的坚实台阶。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑