当前位置: 首页 > news >正文

第2章 文件和用户管理

第2章 文件和用户管理

2.1 Linux文件简介

inux 的核心哲学是 “一切皆文件”:无论是文本文档、视频等普通数据,还是进程、磁盘、管道、socket(套接字)等系统资源 / 硬件,都被抽象为文件。抽象为文件的好处便是可以用统一的一套api来操作不同的资源。

在windows中是文件的东西,它们在Linux中也是文件,其次一些在windows中不是文件的东西, 比如进程, 磁盘, 也被抽象成了文件。你可以使用访问文件的方法访问它们获得信息。甚至一些很离谱的东西,比如管道,也是文件。甚至类似于socket(套接字)这样的东西, 使用的接口跟文件接口也是一致的。

这种设计的核心优势是统一操作接口:开发者只需掌握一套 API(如读操作用read函数、写操作用write函数),就能操作 Linux 系统中绝大部分资源,无需针对不同资源学习不同接口。

2.2 文件操作

2.2.1 文件的组织方式

  1. 目录结构差异

    • Windows:多根结构(以 C 盘、D 盘等盘符为根);
    • Linux:单根结构(所有文件 / 文件夹都从根目录/开始,呈树形结构)。
  2. 挂载的核心概念

    Linux 使用硬件设备前,必须将设备的文件系统与根目录下某一目录 “挂载”(合并两个独立的文件系统目录),否则无法访问设备。例如光驱、U 盘、ISO 镜像文件,都需要挂载到指定目录才能使用。

2.2.2 Linux主要目录及其作用

Linux文件目录视图如下图所示:

目录核心作用
/bin存放普通用户可执行的二进制命令(如 ls、cd)
/boot存放 Linux 启动所需的核心文件(如内核、启动配置)
/dev存放设备文件(硬盘、鼠标等),Linux 访问设备的方式与访问文件一致
/etc存放系统所有配置文件(如网络配置、用户配置)
/home普通用户的主目录(每个普通用户在此有专属目录,如 /home/user01)
/lib存放系统运行依赖的库文件
/mnt临时挂载目录(常用于挂载光驱、ISO 镜像等)
/proc虚拟文件系统,映射系统内存数据(可直接查看内核状态、进程信息)
/root超级用户(root)的专属主目录
/sbin存放系统管理员使用的管理命令(如 mount、useradd)
/tmp临时文件目录,系统重启后自动清空
/var存放日志、缓存等动态变化的大文件(如服务日志 /var/log)
/usr最大的目录,存放应用程序和共享资源(如软件安装包、文档)
拓展知识:挂载的含义:

Linux使用任何硬件设备都必须与根目录下某一目录执行挂载操作,否则无法使用。我们知道,本身Linux具有一个以根目录为树根的文件目录结构,每个设备也同样如此(每个文件都有自己的文件系统),它们是相互独立的。如果我们想通过Linux上的根目录找到设备文件的目录结构,就必须将这两个文件系统目录合二为一,这就是挂载的真正含义

下面这些目录是Linux系统自有的!
目录路径全称/含义功能描述
/netNetwork存放与网络相关的配置文件或挂载点。
/optOptional主要供源码安装软件时选择的安装目录位置。
/procProcesses用户与内核交互信息的接口;存储当前内核运行状态的特殊文件。
/rootRoot Home超级用户(root)的主目录。
/sbinSystem Binaries存放系统管理员使用的管理命令和程序。
/selinuxSELinux存放与安全增强型 Linux (SELinux) 相关的策略和上下文文件。
/srvService系统启动服务时可以访问的数据目录。
/sysSystem管理设备文件的接口。
/tmpTemporary临时文件存储目录。
/varVariable可变数据文件目录,作为某些大文件的溢出区。
/usrUnix Shared Resources最大的目录,存放着应用程序和共享资源文件。

实操案例:挂载 Linux ISO 文件

以挂载 CentOS 7 镜像文件为例:

# 1. 将ISO文件挂载到/mnt目录(-o loop支持挂载镜像文件) mount -o loop CentOS-7-x86_64-DVD-1804.iso /mnt/ # 2. 创建目标目录,用于复制ISO内容 mkdir /opt/centos # 3. 复制挂载目录下的所有内容到目标目录 cp -rvf /mnt/* /opt/centos/ # 4. 卸载挂载点(用完后需卸载) umount /mnt/

解释:-o参数,可以设置挂载的行为,例如只读、读写、字符集等。

常用挂载选项
  • ro: 以只读模式挂载。

  • rw: 以读写模式挂载。

  • noexec: 禁止在挂载点执行二进制文件。

  • remount: 重新挂载已挂载的文件系统,通常用于更改挂载选项。

  • ocharset=编码: 指定文件系统的字符集(如 utf8 或 gb2312)。

  • loop: 挂载 ISO 文件等镜像文件。

注意:挂载点必须是一个已存在的目录。

若需开机自动挂载,需将配置写入/etc/fstab文件

2.2.3 文件类型

通过ls -l命令可查看文件类型(结果第一列第一个字符为类型标识),Linux 主要文件类型如下:

文件类型标识字符说明 & 常用操作
普通文件-如文本文档、可执行程序;创建:touch 文件名;删除:rm 文件名
目录文件d存放文件的 inode 号和文件名;创建:mkdir 目录名;删除:rmdir 空目录/rm -r 非空目录
链接文件l分软链接和硬链接:1. 软链接(快捷方式):ln -s 原文件 软链接名,删除原文件则软链接失效;2. 硬链接(别名):ln 原文件 硬链接名,与原文件共用 inode
设备文件b/c存于 /dev 目录,分两种:1. 块设备(b):如硬盘,按块读写;2. 字符设备(c):如鼠标 / 键盘,按字节流顺序读写
管道文件p用于进程间通信;创建:mkfifo 管道文件名
套接字文件s关联网络地址,用于网络进程通信

2.2.4 常用文件操作命令

所有命令形式:Linux 命令格式:命令 选项 参数(参数多为文件 / 目录路径),核心命令如下:

参数就是文件的路径。

功能命令 & 示例
切换目录cd 路径(如cd /homecd ..
创建文件touch 文件名(批量创建:touch {file1,file2}
查看目录文件ls -l /(列出根目录文件详情)、ls -a(显示隐藏文件,隐藏文件以.开头)
创建目录mkdir 目录名(递归创建:mkdir -p /a/b/c
复制文件 / 目录cp 源路径 目标路径(复制目录:cp -r 源目录 目标目录
移动 / 改名mv 源路径 目标路径(如mv test.txt /tmp/mv old.txt new.txt
删除文件 / 目录rm 文件名(强制删除目录:rm -rf 目录名
查看文件内容cat 文件名(全量查看)、more 文件名(翻页查看)、head -2 文件名(前 2 行)、tail -2 文件名(后 2 行)、grep 关键字 文件名(过滤内容)
重定向ls -a > list.txt(覆盖写入文件)、ls -a >> list.txt(追加写入)、command 2>&1 > file(标准输出 + 错误输出写入文件)
监控命令结果watch -n 2 -d ls /tmp(每 2 秒刷新,高亮变化)

2.2.5 vi/vim 编辑器

Linux默认安装vi,但不安装vim,要想使用vim,需要自己安装vim。

vim = vi improved vim 是从 vi 发展出来的一个文本编辑器,支持 代码补全、编译 及 错误跳转 等方便编程的功能特别丰富。

vim 是 vi 的增强版(需手动安装),支持代码补全、编译跳转等功能,核心操作如下:

  1. 核心模式切换
    • 命令模式:默认进入模式,可执行快捷键(如移动、删除);
    • 编辑模式:命令模式下按i/a/o进入,可输入文本;
    • 末行模式:命令模式下按:进入,可执行保存、退出、替换等指令;
    • 可视模式:命令模式下按v/V/ctrl+v进入,可选中文本。
    • 四种种模式的转变关系图如下所示:

在命令模式下输入插入命令i、附加命令a、打开命令o、修改命令c、取代命令r(replace)或替换命令s(substitution)都可以进入文本输入模式。

可视模式下可以进行文本的选取!

  1. 常用操作
操作类型指令 / 快捷键
查找文本/关键字(向前找)、?关键字(向后找)、n(同方向继续找)、:set ic(忽略大小写)
替换文本:%s/旧文本/新文本/g(全局替换)、:%s/旧文本/新文本/gc(替换前确认)
保存 / 退出:w(保存)、:q(退出)、:q!(强制退出)、:wq/:x(保存并退出)
移动光标h/j/k/l(左 / 下 / 上 / 右)、0(行首)、$(行尾)、gg(文件首行)、G(文件末行)
删除文本dd(删除当前行)、5dd(删除 5 行)、:1,$d/:%d(清空所有内容)
复制 / 粘贴yy(复制当前行)、5yy(复制 5 行)、p(粘贴)
撤销 / 恢复u(撤销)、ctrl+r(恢复)
环境设置:set nu(显示行号)、:set nonu(隐藏行号)

2.2.6 临时文件

编辑文件时异常关闭(如 vim 编辑1.txt时强制退出),系统会生成隐藏临时文件(以.开头),需手动清理:

这个文件当用ls的时候不会在当时编辑的目录中出现。其实这个文件是由系统变成了一个隐藏文件,如下图所示:

那这些临时文件如何删除呢?

# 查看隐藏临时文件 ls -a # 删除临时文件 rm -f .1.txt.swp

拓展知识:隐藏文件前面会有个点(.),想看这些隐藏文件,可以在ls命令的选项中加a。

2.3 用户管理

2.3.1 用户 / 组基本概念

  1. 用户核心作用:Linux 需通过用户登录,不同用户分配不同权限,实现系统管理;root 是系统默认超级用户(最高权限)。

有了用户的概念就可以给不同用户操作计算机不同的权限,达到管理计算机的目的。

  1. 核心配置文件
文件路径作用
/etc/passwd存储用户基本信息(7 列):用户名:密码占位符:UID:GID: 备注:家目录:登录 Shell
/etc/shadow存储用户加密密码(1 列对应 1 用户),含密码有效期、加密算法等
/etc/group存储组信息(4 列):组名:密码占位符:GID: 组成员

2.3.2 用户 / 组管理命令

1. 用户管理

操作命令 & 示例
创建用户useradd user01(默认普通用户)、useradd user02 -u 1503 -d /home/user02(指定 UID + 家目录)
验证创建grep user01 /etc/passwd(查配置文件)、ls /home(查家目录)、id user01(查用户信息)
设置密码passwd user01(按提示输入密码)
修改用户属性usermod -s /sbin/nologin user03(禁止 user03 登录)
删除用户userdel -r user01(-r 删除家目录等关联文件)

创建完用户,怎么知道这个用户已经创建成功呢?

第一种:在/etc/passwd文件中必须已经存在,可以通过grep user01 /etc/passwd,看能否将该用户查找出来。

第二种:ls /home看是否已经为用户创建家目录。

第三种:id user01

第四种:创建完用户后,会自动创建/var/spool/mail/user01,

2. 组管理

组用于批量授权,分为 “基本组”(随用户创建,与用户名同名)和 “附加组”(用户额外加入的组),核心操作

操作命令 & 示例
创建组groupadd group01(默认)、groupadd -g 1005 group02(指定 GID)
删除组groupdel group01
添加用户到组usermod -g group01 user01(设为基本组)、usermod -G group02 user01(设为附加组)
查看用户组id user01(显示 UID、基本组、附加组)
移除用户出组gpasswd -d user01 group02(从 group02 删除 user01)

3. 提权操作

提权指普通用户获取 root 权限,分两种方式:

  1. 永久提权:su - root(切换为 root 身份,同时切换 shell 环境;su root仅切换身份,保留原环境);

  2. 临时提权:sudo(执行单条 root 权限命令),需先配置:

    # 编辑sudo配置文件(需root权限) vim /etc/sudoers # 添加如下行(syf用户免密执行所有root命令,需放在%wheel行下方) syf ALL=(ALL) NOPASSWD:ALL

补充:wheel 组是特殊组,加入该组的用户可配置 sudo 权限,实现临时提权。

  • root(切换为 root 身份,同时切换 shell 环境;su root`仅切换身份,保留原环境);
  1. 临时提权:sudo(执行单条 root 权限命令),需先配置:

    # 编辑sudo配置文件(需root权限) vim /etc/sudoers # 添加如下行(syf用户免密执行所有root命令,需放在%wheel行下方) syf ALL=(ALL) NOPASSWD:ALL

补充:wheel 组是特殊组,加入该组的用户可配置 sudo 权限,实现临时提权。

http://www.jsqmd.com/news/500334/

相关文章:

  • 金仓数据库在文档型数据迁移中的实践复盘:从MongoDB协议兼容到政务系统平滑替换
  • 算法设计与分析-习题9.4
  • OpenClaw 第十三篇:核心技术实现拆解——从指令输入到执行落地的全链路原理
  • godot中文不显示,仅显示编码,是因为没设置字体,设置字体就好了
  • 2025 CCF 非专业级软件能力认证 解析
  • 2026年靠谱的北京酒店木门品牌推荐:江苏民宿木门/新疆工程木门正规生产厂家推荐 - 行业平台推荐
  • 关于 HarmonyOS 版本的简述
  • 参考文献崩了?AI论文写作软件,千笔AI VS 笔捷Ai,毕业论文全流程必备!
  • nodejs+vue基于springboot的车辆二手汽车交易综合服务平台
  • LeetCode Hot100第二题 字母异位词分组
  • 2026年热门的有机水溶肥品牌推荐:含氨基酸水溶肥/陕西中量元素水溶肥口碑厂家汇总 - 行业平台推荐
  • linux内核 Netfilter
  • 程序员必看:大模型参数高效微调(PEFT)全攻略,建议收藏
  • ESP-IDF 简介
  • 学生3类课堂行为(举手、阅读、书写)识别目标检测数据集(近 4200 张图片已标注)| YOLO训练数据集 AI视觉检测
  • 四轮转向汽车稳定性控制策略:从理论到实践
  • 东华OJ-进阶题-19-排队打水问题(C++)
  • OpenClaw部署 + 多agent智能体协作
  • 无刷直流电机自抗扰控制策略:转速转矩双闭环系统的高效调节机制
  • 三相静止无功发生器SVG并网仿真模型说明报告
  • OpenClaw 全网板块公开的数据自动收集(2026 版)
  • 2026年比较好的二通电动球阀厂家推荐:水处理电动球阀生产厂家推荐几家 - 行业平台推荐
  • OpenClaw 和 Claude Code、Cursor、Copilot 有什么区别
  • 网络医疗解决方案:Windows/Linux平台优化指南
  • 2026年热门的模拟量执行器品牌推荐:断电复位执行器实力品牌厂家推荐 - 行业平台推荐
  • SpeedAI科研小助手:多语言降AI降重专业工具
  • 老品牌第二曲线方法拆解:从判断到落地的完整框架
  • 解析 6 款客户管理系统:2026全场景客户服务管理能力核心差异与适用场景
  • C++变量的作用域
  • STM32常用变量类型位数及取值范围