ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Linux第二次作业实战:文件权限与用户管理核心技巧

Linux第二次作业实战:文件权限与用户管理核心技巧 这周的Linux作业正卡在文件权限和用户管理上的同学应该不在少数。我前几天刚把第二次作业交掉顺手把踩过的坑和做题思路整理了一遍。这篇内容适合刚装好虚拟机、会敲 cd / ls / pwd但一遇到 chmod、vim 就发懵的初学者也适合想快速补一轮 Linux 常用命令的零基础朋友。我尽量不写教科书式的大而全只讲第二次作业里真正会考、真正用得上、也真正容易出问题的那些点。1. 第二次作业到底在考什么从“认识”到“操作”的跨越1.1 第一次作业和第二次作业的分水岭按大多数学校的教学节奏第一次Linux作业通常是“装系统 登录 认识界面”会要求你用几个最简单的命令比如 pwd 看看当前目录ls 列一下文件夹cd 切换路径。这些操作本质上还是在“认识系统”。可第二次作业的画风会突然一变题目开始变成创建一个目录结构、复制一批文件、修改权限、新建用户、用 vim 编辑配置文件。这个时候你会发现死记硬背命令根本不够用命令背后有一套逻辑——文件系统怎么组织、权限怎么定义、用户和进程怎么交互。我在做作业时最直观的感受是第一次作业是“我按了几个按钮”第二次作业才是“我在操作系统”。这种跨越能不能顺利迈过去直接决定了后面学 shell 脚本、学网络配置、学服务部署时是轻松还是痛苦。1.2 为什么作业通常要求用虚拟机第二次作业一般会要求你在虚拟机里完成而不是直接拿物理机装 Linux更不是随便开个在线模拟器糊弄过去。原因是虚拟机的“可破坏性”极低。你在真机上练 rm -rf、练 chmod 改系统目录权限出了问题可能直接导致系统起不来但在虚拟机里最坏的情况就是删除快照、重装一遍系统十分钟就回来了。我用的是 VMware Workstation装的是 Ubuntu 桌面版。如果你用的是 VirtualBox也完全没问题。两种虚拟机软件的核心逻辑一样分配 CPU、内存、磁盘然后从镜像文件引导安装。虚拟机的好处除了安全还有两个对做作业特别有用的功能一个是快照做重要操作前打一个快照操作错了秒回另一个是和宿主机之间共享文件夹、复制粘贴文本写作业和交作业都很方便。1.3 做作业的正确姿势手敲命令别复制这里想先说一个容易被忽略的事做Linux作业尽量手敲命令不要从课件或者网页里复制粘贴。我承认复制一条长命令比自己敲快得多但作业的意义不是让你把结果截图交掉而是让你建立“键盘肌肉记忆”。你以后进生产环境、进服务器面对的是一台没有图形界面的机器所有操作全靠手打。tab 补全、方向键上下翻历史、CtrlU 清空当前行这些习惯只有在一次次手敲中才能养成。而且从实际角度说手敲命令时你会被迫理解每个空格、每个参数的作用。比如 tar -czvf 和 tar -xzvf 中间那个 c 和 x 的区别不知道的人永远会搞混但如果你是一边敲一边想“c 是 createx 是 extract”一次就记住了。所以我给的建议是宁可慢一点也要自己敲命令敲错了就看看报错再敲一遍。2. 环境准备与镜像安装先把“锅”端稳再炒菜2.1 虚拟机软件怎么选参数怎么给如果你还在纠结用哪款虚拟机我的建议Windows 上用 VMware Workstation Player个人免费或者 VirtualBox 都行。两者差别不大VirtualBox 免费开源VMware 在性能和图形支持上稍好一点。无论选哪个安装完系统之后一定记得装“增强工具”——VMware 叫 VMware ToolsVirtualBox 叫增强功能。不装的话屏幕分辨率会被锁在很小的一档复制粘贴和文件拖拽也用不了做作业效率会大打折扣。虚拟机参数方面我给一个参考值内存分配 2GB 就够跑桌面版做基础操作了有条件给 4GBCPU 给 2 核磁盘给 20GB选择“动态分配”别一次性占满宿主机空间。网络默认 NAT 就行保证虚拟机可以上网方便安装软件。很多同学在这里犯的错误是内存给太少导致虚拟机里开个浏览器就卡死误以为 Linux 本身就卡其实只是分配的资源不足。2.2 发行版选择作业场景下怎么选不会错发行版这个问题很多人第一次安装时会很纠结。我直接给结论如果你是照着学校课件做作业学校课件基于哪个发行版你就装哪个没有指定的话Ubuntu 桌面版最省心。Ubuntu 的资料多遇到问题一搜全是答案驱动兼容性也好。Debian 和 Ubuntu 同源命令基本一致适合想更纯粹一点的同学。CentOS Stream 或者 Rocky Linux 更偏企业服务器方向如果你以后的目标是运维岗位可以提前接触但做第二次作业时它们的桌面环境和软件源配置会比 Ubuntu 麻烦一点。另外现在国内也有不少主流 Linux 发行版比如 openEuler文档和社区资料越来越全。不过初学者用系统的第一目标不是“哪个更宏大”而是“哪个能让我把作业顺利做完同时学到东西”。从这个角度说Ubuntu 或 Debian 系列依然是容错率最高的选择。如果老师明确不让用带桌面的版本那就装 Ubuntu Server然后在命令行里做作业正好提前适应真实服务器环境。2.3 安装过程中的三个大坑第一个坑是虚拟机安装Linux蓝屏。这个“蓝屏”分两种情况一种是安装过程中 Windows 宿主机蓝屏另一种是虚拟机里的 Linux 启动时黑屏或花屏。绝大多数情况下原因都是主板 BIOS/UEFI 里的虚拟化功能没打开。在 BIOS 设置里找到 Intel VT-xIntel 平台或 AMD-VAMD 平台把它改成 Enabled重启后再开虚拟机就好了。如果是 Windows 系统自带 Hyper-V 和安全启动冲突导致的可能需要在“Windows 功能”里把 Hyper-V 关掉或者把“虚拟机平台”选项打开这个需要根据自己电脑情况试。第二个坑是镜像文件不完整。Linux 镜像文件动辄两三个 GB下载中途断网、浏览器拦截等都可能让镜像损坏。安装时报“无法读取发行版”或者中途卡死先别急着重装用官方工具校验一下镜像的 SHA256 校验值和官网公布的对不上就重新下载不要为了省几分钟害得自己折腾一下午。第三个坑是分区不会弄。新手安装 Linux 时看到“手动分区”界面很容易慌。我的建议如果是做作业直接选择“使用整个磁盘”或者“清除整个磁盘并安装”让安装器自动分区就行完全没必要手动去分 /boot、/swap、/。手动分区是运维课程后段的事作业阶段自动分区最稳。3. 文件与目录操作第二次作业的主战场3.1 先搞明白你在哪个目录文件操作题是第二次作业的重头戏而这一切的起点是你得知道“自己在哪”。pwd 这个命令每次进入新环境都要敲一遍它能告诉你当前工作目录的绝对路径。路径有两种表达方式绝对路径从根目录 / 开始写比如 /home/student/docs相对路径从当前位置开始写写作 docs 或 ./docs。这两者最大的区别是绝对路径无论你在哪都能一次到位相对路径则依赖当前位置位置变了同样的写法可能就指向另一个地方。还有两个特殊目录符号要记牢. 代表当前目录.. 代表上一级目录。cd .. 返回上一层cd ../.. 返回上两层cd ~ 直接回当前用户家目录。做题时如果题目要求“进入 /etc 下的某个子目录”直接用绝对路径最不容易错如果题目说“返回上级目录”那就是 cd ..。这种细节看起来简单但考试题里偏偏最喜欢出。另外Linux 目录结构建议顺手记一下/home 是普通用户的家目录所在地/etc 是系统配置文件目录/var 里放日志和变化的数据/tmp 是临时目录/root 是管理员的家目录。知道这些目录各管什么做找文件的题目会快很多。3.2 创建、复制、移动、删除的细节差异创建目录用 mkdir一次创建多级目录加 -p比如 mkdir -p project/src/include这个 -p 参数的意思是“父目录不存在时一并创建”。创建空文件用 touch它的一个额外作用是更新时间戳所以有时候你会看到运维用 touch 创建占位文件。复制文件用 cp复制目录必须加 -r递归比如 cp -r project /home/student/backup。这里有个典型的错误很多新手 cp 一个目录不加 -r系统提示“omitting directory”然后就懵了。移动文件用 mvmv 还有一个容易被忽略的用法是可以重命名mv old.txt new.txt 就是改名。删除文件用 rm删除目录加 -r强制删除加 -f也就是 rm -rf。这个命令我想单独拎出来说它不是不能用但用之前一定要想三秒。rm -rf /、rm -rf /* 这种操作是绝对禁止的做作业时你最多在自己的家目录里用 rm -rf而且最好先 ls 看一下当前目录内容确认自己没写错路径。通配符也是常考点。* 匹配任意多个字符? 匹配一个字符。比如 rm -rf *.log 会删除当前目录下所有以 .log 结尾的文件cp *.txt /tmp 会把所有 txt 文件复制过去。做题时先 echo 一下或者 ls 一下匹配结果能有效防止误删。3.3 查看文件内容的五件套查看文件内容是文件操作里最实用的技能五个命令各有分工。cat 适合看短文件直接把内容全部输出到屏幕less 适合看长文件支持上下翻页按 q 退出看日志和配置文件时最常用head 默认显示前 10 行head -n 5 显示前 5 行tail 默认显示末尾 10 行tail -f 可以实时跟踪文件新增内容看服务日志时的神器grep 是按关键词过滤内容grep error /var/log/syslog 能从日志里只挑出包含 error 的行。这几个命令单独用都简单但作业里喜欢组合考比如“查看 /etc/passwd 文件的最后 5 行”就是 tail -5 /etc/passwd“查找 /etc 目录下所有包含 root 的文件”就要 grep。我能给的实用建议是做题时先把题目拆成“我要看哪个文件”“我要看哪些行”“我要找什么关键词”三个小问题再选对应的命令组合思路就不会乱。4. 权限与用户管理别一直用 root 闯天下4.1 权限值是怎么算出来的Linux 权限这块很多同学第一次接触时感觉像天书其实核心就三组字母r读、w写、x执行分别对应三种身份文件的属主u、属组g、其他人o。ls -l 看到的第一列比如 -rw-r--r--就能拆成第一个字符表示文件类型- 是普通文件d 是目录后面九个字符每三个一组分别是属主权限、属组权限、其他人权限。用数字表示时r4、w2、x1把三组权限的数字分别相加就得到三个数字。比如 rwxr-xr-x属主是 4217属组是 4015其他人是 4015合起来就是 755。chmod 755 file 就等于把这个文件权限设置成属主可读写执行、其他人只能读和执行。另一个常见组合是 644也就是 rw-r--r--普通文件的默认权限脚本要能跑一般给 755私钥这种敏感文件给 600。我特别想提醒一点很多作业题会让“让所有用户都能读写执行某个文件”很多同学直接上 chmod 777。这确实能解决问题但在实际场景里 777 意味着任何人都能改你的文件安全隐患很大。作业里如果只是为了完成功能777 能交差但如果你还有余力建议想一下“到底谁需要什么权限”给出最克制的权限组合这个习惯在以后的生产环境里非常重要。4.2 用户和用户组别再一直用 root 闯天下新建用户的命令是 useradd删除用户是 userdel修改用户信息是 usermod。新建之后必须给用户设置密码否则该用户无法登录用 passwd 用户名。我踩过一个坑useradd 创建的用户没有家目录后来才知道要加 -m 参数才会在 /home 下自动创建家目录。不同发行版里 useradd 默认行为可能不一样所以保险起见创建用户时直接写 useradd -m 用户名。把用户加入某个组用 usermod -aG 组名 用户名比如 usermod -aG sudo alice。这里有个很隐蔽的坑修改完组之后该用户已经打开的终端不会立刻生效必须退出重新登录或者重启终端再执行 groups 才能看到新组信息。很多同学加完组发现没生效以为是命令错了其实是会话没有刷新。还有一点做用户管理题时建议先切换到普通用户操作学一下 sudo 的用法。sudo 的意思是“以其他身份执行命令”默认以 root 身份用法是 sudo 命令。不用 root 登录系统、而是通过 sudo 提权这是现代 Linux 通用的安全实践。做作业时习惯 sudo以后上服务器才不会养成整天 root 裸奔的坏毛病。4.3 修改文件归属chown 的关键作用和权限配套的是文件归属。chown 用来改变文件的属主和属组常见用法是 chown 用户名 文件名chown 用户名:组名 文件名。比如把一个文件从 root 改成普通用户 alice 所有就是 sudo chown alice:alice test.txt。作业里经常有“让某用户能操作某个文件”的题目很多人第一反应是 chmod 777但更合理的解法是先用 chown 把文件归属改成对应用户再用 chmod 设置合适的权限。我实际做作业时遇到过这种情况脚本文件明明权限是对的但运行时报 permission denied。排查了半天发现文件属主是 root而我在普通用户下执行又没有给其他用户执行权限。所以记住一句话权限问题要从“我是谁”“文件属于谁”“权限位是否允许”三个角度排查少了任何一环都容易卡住。5. vim、查找、管道重定向把命令串起来5.1 vim 入门与新手最怕的死循环vim 是第二次作业绕不开的工具它和普通文本编辑器的最大区别是多了一个“模式”概念。默认打开文件是普通模式在这个模式下按键不是输入文字而是执行操作。按 i 进入插入模式才能正常打字按 Esc 退出插入模式回到普通模式在普通模式下输入 :wq 保存并退出输 :q! 不保存强制退出。新手最常见的窘境是打开 vim 之后不知道怎么退出甚至直接关闭终端导致文件损坏。我的建议是遇到这种情况先按 Esc确保自己回到普通模式然后输入 :q! 回车绝对能退出去。vim 的常用操作其实不用记很多第二次作业阶段掌握这些就够dd 删除当前行yy 复制当前行p 粘贴u 撤销/关键词 向下搜索G 跳到文件末尾gg 跳到开头。用多了之后你会发现这些组合键比鼠标点来点去快得多。还有一个小技巧在 vim 里临时查看行号普通模式下输入 :set nu 回车。作业里如果题目问你“某配置文件第几行是什么”这个命令能救命。5.2 find 按名字找grep 按内容找查找命令是作业里的“拦路虎”主要是 find 和 grep 容易混淆。find 是从文件系统的角度找文件按文件名、类型、大小等条件搜索grep 是从内容角度匹配文本处理对象是文件内容。比如 find /etc -name *.conf 是在 /etc 目录下找所有以 .conf 结尾的文件grep root /etc/passwd 是在 passwd 文件里找包含 root 的行。做题时如果题目说“找出某个目录下符合条件的文件”用 find如果题目说“在文件里搜索某个字符串并显示出来”用 grep。grep 常用的参数有 -n 显示行号、-i 忽略大小写、-r 递归搜索目录组合起来比如 grep -rn PermitRootLogin /etc/ssh/在找配置项时非常实用。find 常用的参数是 -name 按文件名、-type 按文件类型f 文件、d 目录、-mtime 按修改时间。先分清楚这两个命令的分工查找类题目基本稳了。5.3 重定向与管道命令的“流水线”重定向和管道是第二次作业里最考验理解力的点也是我觉得最有“Linux 哲学”味的内容。重定向就是把命令的输出从屏幕改写到别的地方 把输出写入文件覆盖原内容 把输出追加到文件末尾。比如 ls -l list.txt 会把文件列表保存到 list.txt再执行 ls -l list.txt 则是把新内容追加进去。这里有个典型错误覆盖和追加没分清导致前面的内容被冲掉了写作业时多留个心眼。管道用 | 连接两条命令把前一条命令的输出当作后一条命令的输入。比如 ls /var/log | grep syslog就是在 /var/log 的文件列表里过滤出包含 syslog 的文件名。再比如 ps aux | grep ssh这是查看进程中是否有 ssh 相关进程的经典用法。管道的意义在于把一个个只做一件事的小工具串起来完成一个更复杂的任务这正是 Linux 的设计哲学一个工具只做一件事但通过组合可以做任何事。作业里只要出现“先xxx再xxx”的描述大概率就需要用管道。6. 作业之外的加分项脚本、安装软件和看日志6.1 第一个 shell 脚本从命令到自动化第二次作业如果能捎带写一个最简单的 shell 脚本往往是加分项也为后续课程做了铺垫。脚本的本质就是把一串 Linux 命令写进文件然后让系统顺序执行。最标准的开头是 #!/bin/bash表示这个脚本用 bash 解释器运行。写完脚本后要给它加执行权限chmod x 脚本名然后通过 ./脚本名 执行。我写过的一个简单脚本是备份当前目录下的所有 txt 文件#!/bin/bash mkdir -p backup cp *.txt backup/ echo backup done这个脚本的逻辑不用解释也能看懂。写脚本时特别要提醒两件事第一脚本里的命令要写绝对路径或者确保环境变量正确否则在定时任务或非交互环境下很可能找不到命令第二脚本换行符必须是 Unix 风格LF如果是在 Windows 下编辑再传到 Linux可能出现“找不到解释器”的诡异报错用 dos2unix 转换一下就好。6.2 在 Linux 上安装软件包管理器的基本操作第二次作业一般不会强制要求装软件但如果你的作业里有“安装 Python”“安装 Nginx”“安装 MySQL”这类题目其实考的就是包管理器的用法。Ubuntu/Debian 系用 aptCentOS/Rocky 用 dnf 或 yum。基本套路都一样先更新软件源缓存再安装指定软件包。Ubuntu 上是 sudo apt update sudo apt install python3CentOS 上是 sudo dnf install nginx。这里有个关键经验如果 apt install 时提示“无法定位软件包”首先考虑是不是没有先执行 apt update如果提示权限不足记得加 sudo如果源连接慢或者超时可以检查网络配置或者换用国内可正常访问的开源镜像源。安装 Docker、MySQL 这类带有依赖关系的软件时不要手动一个个装依赖用包管理器自动解决依赖才是正确姿势。6.3 学会看日志和帮助不再盲目“百度一下”作业里遇到问题绝大多数人的第一反应是去搜网页但我觉得更值得先学会看系统自己的“解释”。man 命令是 Linux 的说明书man ls 能查看 ls 命令的完整用法按 q 退出。每条命令后面加 --help 则是快速查看帮助选项。日志方面很多系统服务的问题都能在 /var/log/syslog 或 /var/log/messages 里找到线索用 tail -f /var/log/syslog 实时观察新增日志是排查服务起不来的问题最直接的手段。我见过不少同学在终端里报一个错截图去问别人其实那个报错信息里已经写了解决方案。比如常见的 “No such file or directory” 是路径错了“Permission denied” 是权限不够“command not found” 是命令没安装或者没在 PATH 里。先读报错再查帮助搞不定再搜索这个顺序能帮你养成独立解决问题的能力。7. 常见问题排查我踩过的坑都在这7.1 虚拟机安装 Linux 蓝屏怎么破这个问题在开头提过这里再展开一点。虚拟化功能没开启时VMware 启动虚拟机会直接弹错误或者虚拟机内部 Windows 直接蓝屏。我的排查步骤是先重启进 BIOS/UEFI找到 “Intel Virtualization Technology” 或 “SVM Mode”设为 Enabled保存退出后再启动虚拟机。如果开了虚拟化还是蓝屏检查 Windows 的“内核隔离”和 Hyper-V 是否冲突把 Hyper-V 关闭后重试。还有一种情况是内存分配太少虚拟机的 Linux 跑到一半系统不稳定这时把内存调到 2GB 以上基本能解决。7.2 Windows 上出现 WSL 版本过旧的提示有的同学平时喜欢在 Windows 上直接体验 Linux用的是 WSLWindows Subsystem for Linux。如果终端提示 “wsl needs updating your version of windows subsystem for linux (wsl) is too old” 之类的话意思是 WSL 内核版本需要更新。处理方法是先把系统更新到最新然后执行 wsl --update或者在“启用或关闭 Windows 功能”里确认“适用于 Linux 的 Windows 子系统”和“虚拟机平台”两个选项都已勾选重启之后再运行 wsl。这个提示不复杂但很多同学第一次见到时会被一大串英文吓到。7.3 命令未找到和权限拒绝的区分做作业时面对两种最常见的报错bash: xxx: command not found还有 bash: xxx: Permission denied。前者是说系统在 PATH 环境变量指定的目录里没找到这个命令解决思路是先确认命令是否已安装比如用 which xxx 检查路径或者直接搜索软件包安装它后者是说文件存在但当前用户没有执行权限解决思路是看文件权限位用 chmod 加执行权限。还有一种情况是执行脚本时提示 “cannot execute binary file”多半是脚本格式不对比如文件不是纯文本或者有不可见的 CR 字符用 file 脚本名 查看文件类型再处理。7.4 常见问题速查表现象可能原因排查/解决方式虚拟机安装系统蓝屏主板虚拟化未开启BIOS 里开启 Intel VT-x / AMD-V安装中途卡死镜像文件不完整校验 SHA256重新下载终端显示乱码/分辨率低未安装增强工具安装 VMware Tools / VBox 增强功能useradd 后没有家目录未加 -m 参数useradd -m 用户名或用 adduser用户加入组后不生效会话未刷新退出重新登录执行 groups 验证chmod 777 后仍无法执行文件系统挂载了 noexec 或脚本解释器路径错误检查磁贴挂载选项检查脚本开头解释器apt install 提示定位不到软件包软件源缓存过期先执行 apt update报错 Permission denied权限位不足或属主不对ls -l 查看权限chmod/chown 修复报错 command not found命令未安装which 排查用包管理器安装vim 无法退出新手陷入插入模式出不来按 Esc输入 :q! 强制退出这张表是我做作业期间的实际问题总结不一定覆盖所有情况但覆盖了绝大多数初学者的高频坑。写到最后分享一个我自己的小习惯做完第二次作业后我最大的体会是Linux 命令真的不用背但一定要用。每题做完之后我会把题干、我的命令、执行结果、报错解决过程按顺序整理到一个 Markdown 文件里整理完就是一份只属于自己的命令速查手册。等到后面第三次作业、第四次作业、甚至实习时再遇到类似问题我直接翻笔记就能找到答案比再搜一遍网页快得多。这个习惯让我觉得第二次作业学到的不是一堆命令参数而是一套“怎么和 Linux 系统打交道”的思路——先看清自己在哪再想清楚要做什么最后选择合适的工具组合起来完成它。这份手感越早建立后面越轻松。
返回列表