简介:这是一份操作系统实验的Linux实践总结文档,面向计算机相关专业学生、Linux初学者及有一定基础的操作系统学习者,紧扣文件权限、用户组与磁盘管理三大核心模块。全文基于具体实验操作,系统梳理了文件与目录管理的常用命令(如ls、cd、mkdir、cp、mv、rm等),深入讲解rwx权限表示、chmod修改权限、chown修改所有者与所属组,并介绍grep、sed、awk文本处理工具;同时涵盖用户与组管理中的useradd、usermod、userdel、groupadd等命令及/etc/passwd、/etc/shadow配置文件解析;磁盘管理部分则包括fdisk分区、mkfs格式化、mount挂载、umount卸载、/etc/fstab自动挂载配置及quota磁盘配额工具。压缩包内包含1个docx格式文档,体积仅12KB,内容精炼便于阅读。目前已有309人学习,可作实验总结报告、期末复习或入门指南,帮助读者掌握Linux基础操作与系统管理的关键技能,提升实际动手能力。
1. Linux 文件权限与路径:实验里最容易翻车的两件事
不少同学第一次做 Linux 操作实验,最容易把精力花在背命令上,结果真正翻车的地方往往是两件看似简单的事:一条rm -rf把不该删的文件删了,或者一个chmod 777给所有用户开了后门。这份操作系统实验总结文档,恰好把文件权限、用户与组管理、磁盘管理三条主线串成了可实操的动作链,不是干巴巴的命令列表,而是每一步都告诉你为什么要这么做。它适合两类人:一是要交实验报告的计算机相关专业学生,二是刚接触 Linux、想快速建立系统操作手感的学习者。这份文档当作自查清单用,比当教程读更有价值。
2. 文件与目录管理:命令矩阵、路径判定与权限模型
2.1 路径体系是第一步:绝对路径、相对路径与家目录
实验报告里反复强调掌握ls、cd、mkdir、rm、cp、mv,但很多人卡在路径理解上。Linux 的路径只有两种,绝对路径以/开头,从根目录开始定位;相对路径从当前目录出发,用.表示当前目录,..表示上一级目录。还有两个特殊符号:~直接跳到当前用户的家目录,cd -能回到上一次所在的目录。这个细节在实验里经常被用到,比如你从/home切到/etc之后想回去,cd -比重新敲一遍绝对路径快得多。
# 相对路径与绝对路径的典型对比 cd /home/testuser # 绝对路径切换 cd ../.. # 相对路径向上跳两级 cd ~ # 回到当前用户家目录 cd - # 回到上一次工作目录这里的逻辑是:绝对路径在任何情况下都可预测,适合在脚本和配置文件中使用;相对路径依赖当前所在位置,交互操作时更省事。实验里容易混淆的是cp和mv对目标目录尾部/的处理,cp file dir/明确是复制到目录里,而cp file dir在 dir 不存在时会把 file 重命名成 dir,这是一个非常隐蔽的差异。我一般建议实验时一律给目标目录加尾部斜杠,避免踩中这个坑。
常用命令的选项参数是实验考核的重点,下面这张表可以对照着练:
| 命令 | 常用选项 | 说明 |
|---|---|---|
ls | -a、-l、-lh | 显示隐藏文件、详细信息、人性化大小 |
mkdir | -p、-m | 递归创建父目录、指定初始权限 |
cp | -r、-p、-i | 递归复制、保留属性、覆盖前询问 |
rm | -r、-f、-i | 递归删除、强制删除、删除前询问 |
mv | 无常用选项 | 移动或重命名,跨文件系统时是复制加删除 |
2.2 权限表示与 chmod:数字模式和符号模式
文件权限的表示方法是rwx三元组,每三个字符为一组,依次表示所有者、所属组、其他用户的权限。这里有一个实验里常被忽略的点:r、w、x对文件和目录的含义完全不同。对文件来说,r是能读内容,w是能改内容,x是能执行;对目录来说,r是能列出目录里的文件名,w是能增删改名,x是能进入该目录。很多人给目录配了r和w却忘了x,结果文件列表看得到、目录进不去,非常典型。
# 数字模式:r=4, w=2, x=1 chmod 754 test.sh # rwxr-xr--,所有者全权限,组可读可执行,其他人只读 # 符号模式:u=所有者, g=组, o=其他人, a=所有人 chmod u+x test.sh # 给所有者加执行权限 chmod g-w test.sh # 去掉组的写权限 chmod a+r readme.txt # 所有人增加读权限数字模式的本质是权限位的二进制加权求和,7等于4+2+1表示全部权限,5等于4+1表示读加执行。符号模式更适合只改某一类用户的某一项权限,不用重新算一遍数字。实验里还需要理解umask的默认权限计算逻辑:新建文件的默认权限是666减去umask值,新建目录是777减去umask值。系统默认的umask一般是022,所以文件默认是644,目录默认是755。检查umask可以用umask命令直接查看。
2.3 chown 与属主属组:权限归属的修改闭环
chmod 改的是权限位,chown 改的是文件的归属关系,两者配合才能完整控制一个文件的访问。chown的基本用法是chown user:group file,同时修改所有者和所属组,也可以只改所有者或只改组。改组的单独命令是chgrp,但实际操作中直接用chown user:group一次到位更常见。
# 修改属主和属组 chown testuser:developers app.log # 属主设为 testuser,属组设为 developers chown testuser app.log # 只改属主 chown :developers app.log # 只改属组 chown -R testuser:developers /data/project # 递归修改整个目录树-R递归参数是实验里经常用到的,但有一个边界很多人不知道:-R默认不跟随符号链接,也就是说如果目录里有软链接指向别处,chown -R不会穿透这个链接去改目标文件。这在多目录联动的实验场景里容易造成"明明递归了,某个文件属主还是不对"的困惑。另外注意,普通用户只能对自己拥有的文件执行chown,改成别人是做不到的,只有root能任意改归属,这也是实验里所有chown练习都要求用root身份的原因。
文件权限的实验思路应该是:先建立"所有者、组、其他人"的视角,再理解rwx在文件和目录上的语义差异,最后用 chmod 和 chown 配合完成权限收口。文档里对此的总结顺序也是这样的,按这个顺序过一遍,实验报告里关于权限的部分基本不会出问题。
3. 用户与组管理:从 useradd 参数到配置文件字段
3.1 useradd 的命令参数与用户创建完整步骤
用户管理是 Linux 系统管理的入口级技能,实验里要求掌握useradd、usermod、userdel三个命令。很多初学者只记得useradd username这种最小用法,创建出来的用户既没有家目录,默认 shell 也可能是sh而非bash,更不会加入任何附加组。实际创建一个能用的用户,至少需要-m(创建家目录)、-s(指定 shell)、-G(指定附加组)三个参数。
# 创建一个可登录的普通用户并附加到 developers 组 useradd -m -s /bin/bash -G developers testuser passwd testuser # 设置登录密码 # 修改已有用户:把 testuser 追加到 sudo 组 usermod -aG sudo testuser # -a 追加,G 指定附加组 # 删除用户并清理家目录和邮件池 userdel -r testuser参数说明:-m会在/home下创建同名家目录并复制/etc/skel里的骨架文件;-s /bin/bash指定登录 shell,不指定的话部分发行版默认是/bin/sh,命令行体验会差很多;-G用于添加附加组,注意usermod的-G如果不带-a,会把用户从原有附加组里移除,这是实验里用户权限"突然变少"的常见原因。我一般建议修改附加组时-aG固定连用,除非你明确要做覆盖。
用户删除要特别注意:userdel默认不删除用户的家目录和邮件池,实验指导里如果明确要求清理干净,必须加-r参数。不加-r的话,系统里会残留一堆孤儿文件,重新创建同名用户时会直接继承旧家目录,引发安全问题。
3.2 用户配置文件:/etc/passwd 与 /etc/shadow 的字段拆解
实验要求"通过配置文件管理用户信息",这就绕不开/etc/passwd和/etc/shadow两个文件。/etc/passwd每行代表一个用户,冒号分隔七个字段:用户名、密码占位符、UID、GID、注释信息、家目录、登录 shell。注意密码字段在这里是x,真正的密码哈希在/etc/shadow里,后者只有 root 能读。
# 查看用户信息 cat /etc/passwd | grep testuser # testuser:x:1001:1001::/home/testuser:/bin/bash cat /etc/shadow | grep testuser # testuser:$6$hD9...:19000:0:99999:7:::/etc/shadow的九个字段依次是:用户名、密码哈希、上次修改密码距 1970-01-01 的天数、两次修改密码的最小间隔天数、密码有效期最大天数、过期前告警天数、宽限天数、账号失效时间、保留字段。实验里最常考的是前五栏的含义,尤其是最小间隔和最大有效期的关系。UID 的分配也有规律:0 属于 root,1 到 999 一般是系统服务用的虚拟用户,1000 及以上的才是普通用户,实验里创建的用户 UID 通常落在 1000 之后。
有一点要特别说明:直接编辑/etc/passwd修改用户信息是错误做法,文件格式一旦写错会导致所有用户无法登录。正确做法是使用usermod命令改属性,或者用vipw加锁编辑。这份实验总结文档里强调了配置文件字段的理解价值,这比记住命令更有用,因为你排查用户登录问题时,第一反应应该是去看/etc/passwd和/etc/shadow里的字段是否合理。
3.3 组管理:groupadd 到 gpasswd 的集中授权
组的作用是权限的集中管理,实验里的核心逻辑是:文件权限的中间三位是针对组的,把多个用户放进同一个组,再给目录设置组权限,就能实现多人协作。组管理的命令族是groupadd、groupmod、groupdel,分别对应创建、修改、删除组。修改组的名称用groupmod -n 新名 旧名,删除一个组的前提是该组不是任何用户的主组,否则会报错。
# 创建组并查看 groupadd developers grep developers /etc/group # developers:x:1002: # 把用户加入或移出组 gpasswd -a testuser developers # 加入 gpasswd -d testuser developers # 移出 # 修改组名 groupmod -n devteam developers/etc/group文件的格式是"组名:密码占位符:GID:组成员列表",第四个字段只有附加组成员才会列出,主组不在这里体现。实验里容易忽略的是:用户新加入一个组后,已登录的会话不会立刻获得新组的权限,必须重新登录或者执行newgrp developers切换。很多人在实验里"加了组还是没权限",多半是卡在这个点。组权限的设计价值在于:你不用挨个给用户配权限,把用户划进特定组,目录的组权限就自动覆盖到所有人。
4. 磁盘管理与文件系统:分区、格式化、挂载、配额的完整动作链
4.1 分区:fdisk 的建、删、写流程与容量边界
磁盘管理实验的第一步是对新磁盘分区,实验环境里通常是给虚拟机加一块新虚拟磁盘,然后执行fdisk /dev/sdb进入交互式分区工具。进入后可以看到简单的命令提示,输入n新建分区,p选择主分区类型,然后按提示选择分区号、起始扇区(直接回车默认)、结束扇区(可用+5G这样的格式指定大小),最后输入w写盘退出。p可以随时打印当前分区表确认结果。
# 交互式分区流程 fdisk /dev/sdb # Command (m for help): n # Partition type: p primary, e extended # Select: p # Partition number (1-4): 1 # First sector: (回车默认) # Last sector: +20G # Command (m for help): p # Command (m for help): w这里有一个容量边界的知识:传统fdisk使用 MBR 分区表,最大只能管理 2TB 的磁盘;超过 2TB 要使用 GPT 分区表,命令是gdisk。实验里的小容量磁盘用 fdisk 没问题,但报告里如果能主动写明这个边界会加分。分区写完后系统不一定立刻识别,需要执行partprobe /dev/sdb让内核重新读取分区表,或者重启系统。lsblk命令可以查看分区结果和挂载点的树形结构,是分区后最直接的验证手段。
4.2 格式化与文件系统选型:ext4 与 xfs 的取舍
分区完成后的标准动作是格式化,实验里用mkfs系列命令。最基本的用法是mkfs.ext4 /dev/sdb1格式化为 ext4 文件系统,或者mkfs.xfs /dev/sdb1格式化为 xfs。两种文件系统的选型原则:ext4 是 Linux 发行版多年的默认选择,兼容性好,支持在线扩容和卸载后扩大分区,适合存放大量中小文件;xfs 擅长处理大文件和高并发写入,是很多数据库和大数据场景的首选,但它不支持缩容,一旦分区建小了想改会非常麻烦。
| 对比项 | ext4 | xfs |
|---|---|---|
| 最大单文件 | 16TB | 8EB |
| 在线扩容 | 支持 | 支持 |
| 缩容 | 支持 | 不支持 |
| 意外断电恢复 | 慢 | 快 |
| 适用场景 | 通用、中小文件 | 大文件、高并发 |
格式化命令执行前会有一行"设备上有数据"的确认提示,这是最后的后悔药,回车确认后数据不再可恢复。我一般会在格式化前再用lsblk -f确认一次盘符和分区号,特别是有多块磁盘的实验环境里,盘符对错会导致格式化到错误的设备上。
4.3 挂载与 /etc/fstab:让分区开机自动挂载
格式化之后的分区还不能直接用,必须挂载到某个目录。挂载动作就是mount 设备 挂载点,前提是挂载点目录已存在。卸载用umount,卸载时有个高频坑:如果当前 shell 的工作目录就在挂载点里,umount会报target is busy,解决方法是先cd到挂载点之外的目录再卸载。
mkdir /mnt/data mount /dev/sdb1 /mnt/data df -h /mnt/data # 验证挂载结果 # 配置开机自动挂载 echo "UUID=xxxxxx /mnt/data ext4 defaults 0 2" >> /etc/fstab mount -a # 验证 fstab 配置无误/etc/fstab是系统启动时自动挂载的配置文件,每行六个字段:设备标识、挂载点、文件系统类型、挂载选项、是否备份、开机检查顺序。设备标识建议用UUID而不是/dev/sdb1这样的设备名,因为设备名在多磁盘环境下可能因为插拔顺序变化而漂移,而 UUID 是分区的唯一身份。用blkid命令可以查到分区的 UUID。
挂载选项里有一个实验常见的扩展:defaults包含 rw、suid、dev、exec、auto、nouser 等一组默认配置。如果要在挂载点允许执行二进制程序,挂载选项里必须含exec;只读挂载用ro。改完 fstab 后务必执行mount -a验证,如果配置写错,重启后系统可能卡在紧急模式,这是新手最容易翻车的点之一。
4.4 磁盘配额:quota 的设置四步与常见遗漏
磁盘配额是实验的综合型考点,目的是限制用户或组对磁盘空间的使用量。配额设置需要四个步骤,每一步漏掉都会导致配额不生效,顺序建议固定为:改 fstab、重新挂载、生成配额数据库、设置配额值、开启配额。
# 1. 在 fstab 中对应分区的挂载选项里加 usrquota # /dev/sdb1 /mnt/data ext4 defaults,usrquota 0 2 mount -o remount /mnt/data # 重新挂载使新选项生效 # 2. 生成配额数据库文件 quotacheck -cug /mnt/data # 3. 设置用户配额:软限制和硬限制 edquota -u testuser # 4. 开启配额 quotaon /mnt/dataedquota -u打开编辑器后,soft是软限制,超过后用户会收到警告但还能继续写;hard是硬限制,超过后直接拒绝写入。两者的典型配比是 soft 小于 hard,中间留出缓冲空间。常见的遗漏有两个:一是忘记执行quotaon,配额数据库建了却没生效;二是修改 fstab 后没有重新挂载,usrquota选项没有加载,quotacheck会报错或生成空数据库。排查时用quota -u testuser查看当前配额状态,能看到 limits 和 usage 就是生效了。
配额实验做完后,清理动作也要完整:移除配额用quotaoff、删除配额记录用quotacheck -cug重跑、fstab 里去掉usrquota。这个完整的动作链恰恰是实验报告的加分项,说明你理解配额不是单条命令,而是一套状态管理流程。
5. 文件权限与磁盘的常见问题:四个实验里反复出现的坑
5.1 rm -rf 删掉了不该删的文件
现象:以 root 身份执行rm -rf删除目录时,目录里权限为只读的文件也被删掉了,实验环境里的一个配置文件就这么消失了。
原因:root 用户拥有绕过文件权限的 DAC 能力,-f参数还会跳过写保护确认,两层机制叠加后删除过程没有任何拦截。
解决:实验练习尽量用普通用户身份操作,避免 root 一撸到底;删除前先ls确认内容,需要保留就先mv到回收目录。这是我在实验总结里反复强调的习惯,删文件之前给自己留一个后悔药路径。
5.2 umount 报 target is busy
现象:执行umount /mnt/data时系统返回target is busy,挂载点卸载不掉。
原因:当前 shell 的工作目录或某个进程的文件句柄仍指向挂载点目录,内核拒绝卸载还占用的分区。
解决:先cd /退出挂载点目录,再用lsof /mnt/data或fuser -km /mnt/data找出并结束占用进程。实验环境里九成是当前 shell 没跳出去,先检查 pwd 再查进程。
5.3 chmod 777 之后普通用户还是进不了目录
现象:目录权限已经设置成777,普通用户cd进去时依然报Permission denied。
原因:该用户对目录的父目录没有x执行权限,无法穿越父目录到达目标。Linux 的权限判定是逐级检查的,中间某一级没有x,后续权限再大也白搭。
解决:逐层检查从根目录到目标目录的路径上每一级目录的权限,用namei -l /path/to/dir可以一次列出路径上所有目录的权限位,把缺x的那一级补上即可。
5.4 userdel 删掉了用户,同名家目录文件残留
现象:userdel testuser删除用户后,/home/testuser目录还在,里面有一堆文件。
原因:userdel默认不删除家目录,这是发行版刻意保留的行为,防止误删用户数据。
解决:确认不再需要该用户数据后,用userdel -r testuser连同家目录和邮件池一起清理。实验环境无所谓,真实服务器里这个动作要非常慎重。
5.5 fdisk 分区后系统识别不到新分区
现象:fdisk 写完分区表,执行lsblk却看不到新分区。
原因:分区表修改后内核仍持有旧的分区表缓存,没有自动刷新。
解决:执行partprobe /dev/sdb通知内核重新读取分区表,或者直接重启虚拟机验证。这一步在实验指导书里经常被省略,但实际环境几乎一定会遇到。
6. grep、sed、awk 实战:三个命令处理真实文本任务
6.1 grep:过滤加上下文,别只看匹配行
grep 的基础是过滤,但实验里值得用到的是-A、-B、-E这几个参数。grep -A2 "error" server.log能同时打印匹配行之后的 2 行,排查日志时上下文信息比匹配行本身更有价值。-E启用扩展正则,grep -E "error|warning"一次匹配多个关键词。
6.2 sed:定位到行,再做替换或删除
sed 是流编辑工具,核心用法是"寻址+动作"。sed -i 's/old/new/g' config.conf全文件替换;sed -i '3,5d' file.txt删除指定行区间。-i是原地修改,实验里记得先备份原文件,sed -i.bak一步完成备份。
6.3 awk:列提取和简单的求和统计
awk 按列处理文本,默认按空白符切分,$1取第一列,$NF取最后一列。一套数据行里求和:awk '{sum += $2} END {print sum}' data.txt,统计某个条件出现的次数:awk '/failed/ {count++} END {print count}' app.log。
这份实验总结文档把文本处理放在文件权限和磁盘管理之后,是有道理的:前面的命令解决"文件在哪、谁能动、有多大"的问题,文本工具解决"文件里写了什么"的问题,两者拼起来才是一个完整的系统操作闭环。我在文档里看到这三个命令的练习案例都是日志分析类的场景,这类场景下 grep 先缩小范围、sed 做批量修改、awk 做汇总统计,配合管道符可以串成一条完整的数据处理链。从那以后我每次做文本处理实验都强制自己走一遍"先 grep 定位,再 sed 变换,最后 awk 统计"的流程,不求一步到位,但求每一步可验证。希望这份 Linux 基础操作与系统管理的实验总结能帮到你,照着文档把命令敲一遍,再回来读这六个章节,会比单刷命令列表扎实得多。
本文还有配套的精品资源,点击获取