精通Linux系列第三章:文件系统管理与权限设置(含目录结构思维导图)

news2024/11/17 21:50:10

文章目录

    • 一、前言
    • 二、文件系统概述
      • 2.1 文件系统的定义
      • 2.2 常见的Linux文件系统
      • 2.3 查看当前Linux系统所使用的文件系统
      • 2.4 怎么使用特定的文件系统
      • 2.5 文件系统的层次结构
    • 三、文件和目录管理
      • 3.1 文件和目录的基本概念
      • 3.2 创建文件和目录
      • 3.3 查看文件和目录信息
      • 3.4 复制、移动和重命名文件和目录
      • 3.5 删除文件和目录
    • 四、文件权限和所有权
      • 4.1 文件权限的概念
      • 4.2 文件权限的表示方式
      • 4.3 修改文件权限
      • 4.4 文件所有权的概念
      • 4.5 修改文件所有权
    • 五、文件权限的特殊权限
      • 5.1 SUID权限
      • 5.2 SGID权限
      • 5.3 Sticky位权限
    • 六、文件系统挂载和卸载
      • 6.1 挂载点和挂载操作
      • 6.2 查看已挂载的文件系统
      • 6.3 卸载文件系统
      • 6.4 永久挂文件系统
    • 七、磁盘配额管理
      • 7.1 磁盘配额的概念
      • 7.2 配置用户磁盘配额
      • 7.3 监控和管理磁盘配额
    • 八、文件系统检查和修复
      • 8.1 文件系统检查工具
      • 8.2 执行文件系统修复
    • 九、文件系统加密
      • 9.1 文件系统加密的概念
      • 9.2 Linux常见的加密工具
    • 十、Linux目录结构思维导图
    • 十一、总结

一、前言

   欢迎来到《Linux入门到精通》系列的第三篇文章!在上一章《精通Linux系列第二章:虚拟机安装Linux系统环境教程》,我们学会了如何使用虚拟机搭建Linux学习环境,也了解了各种Linux发行版本的搭建方式与区别,有了环境才能更好更深刻的实践与学习,接下来我们一起进入第三章探索Linux文件系统目录结构。“Linux系统一切皆为文件” 是一个经典的说法,它反映了Linux操作系统的设计哲学和特点。在Linux系统中,几乎所有的设备、文件和资源都被视为文件。这包括硬盘驱动器、键盘、鼠标、网络接口、进程、目录等等。通过将这些不同类型的实体都抽象为文件,Linux提供了一种统一的方式来访问和管理它们。这种文件的抽象使得Linux系统具有了许多优势。首先,它简化了系统的管理和配置。通过使用相同的文件系统接口,管理员可以使用相似的命令和工具来处理不同类型的实体。其次,它提供了一种统一的访问机制,使得用户和应用程序可以以相同的方式与不同的资源进行交互。最后,这种文件的抽象也为Linux系统的可扩展性和灵活性提供了基础,因为新的设备和资源可以很容易地被添加和管理。总而言之,“Linux系统一切皆为文件” 的说法强调了Linux操作系统的设计理念和独特之处,它是Linux系统的一个重要特点。

二、文件系统概述

2.1 文件系统的定义

  文件系统是操作系统中用于组织和管理计算机存储设备上的文件和目录的一种机制。它提供了一种结构化的方式来存储、访问和管理文件数据

  例如,我们可以将文件系统比喻为一个文件柜,其中的文件和文件夹就像是柜子里的文件和文件夹一样。文件系统通过创建层次结构来组织文件和目录,使得用户可以方便地找到和管理所需的文件。假设我们有一个名为"Documents"的文件夹,其中包含了多个文件和子文件夹。通过文件系统,我们可以将这些文件和子文件夹组织成一个层次结构,例如:

- Documents
  - File1.txt
  - File2.docx
  - Pictures
    - Image1.jpg
    - Image2.png
  - Reports
    - Report1.pdf
    - Report2.doc

  "Documents"是顶级文件夹,它包含了两个文件(File1.txt和File2.docx)以及两个子文件夹(Pictures和Reports)。子文件夹"Pictures"下有两个图片文件(Image1.jpg和Image2.png),而子文件夹"Reports"下有两个报告文件(Report1.pdf和Report2.doc)。

  文件系统还定义了文件和目录的命名规则。例如,在Linux系统中,文件和目录的命名可以包含字母、数字和特殊字符,但不能包含斜杠(/)和空格。这样的命名规则确保了文件系统的正常运行。

  此外,文件系统还涉及文件的物理存储方式。文件数据被存储在存储设备的扇区中,并使用文件系统元数据来记录文件的属性和位置信息。这样,文件系统可以快速访问和检索文件。

2.2 常见的Linux文件系统

常见的Linux文件系统包括:

  1. Ext4(第四扩展文件系统):Ext4是Linux系统中最常用的文件系统之一。它支持大容量存储和大文件,具有较高的性能和可靠性。实例:你可以使用Ext4文件系统来管理个人文档、照片和音乐等文件。实际用例:作为普通用户的默认文件系统,适用于个人电脑和工作站。
  2. XFS:XFS是一种高性能的文件系统,适用于大型存储设备和高负载环境。它具有快速的文件系统检查和修复功能,适用于大规模数据存储和服务器环境。实例:XFS文件系统常用于大型数据库服务器和文件服务器。实际用例:适用于需要高性能和可靠性的数据存储和访问场景。
  3. Btrfs:Btrfs是一种先进的文件系统,具有快照、数据压缩和数据校验等功能。它支持在线扩展和动态子卷管理,适用于需要高级数据管理功能的场景。实例:Btrfs文件系统可用于备份存储或虚拟机镜像。实际用例:适用于需要灵活管理和保护数据的环境,如虚拟化环境或数据备份。
  4. ZFS:ZFS是一种先进的文件系统,具有强大的数据完整性和容错能力。它支持快照、数据压缩和数据镜像等功能,适用于数据存储和服务器环境。实例:ZFS最初是为Solaris操作系统开发的,但现在也可以在Linux系统上使用。实际用例:适用于需要高级数据保护和管理功能的环境,如大规模数据存储和关键业务应用。

  这些文件系统在不同的场景和需求下具有不同的优势。根据你的具体需求,选择适合的文件系统可以提供更好的性能、可靠性和数据管理功能。

2.3 查看当前Linux系统所使用的文件系统

  1. 使用df命令:

在这里插入图片描述

  1. 使用mount命令:

在这里插入图片描述

  1. 使用lsblk命令:

在这里插入图片描述

  1. 使用cat命令查看/etc/fstab文件,需要root权限:

在这里插入图片描述

  通过观察这些输出,你可以确定你的Linux系统中使用的文件系统类型。在上述示例中,根文件系统使用的是xfs文件系统。

2.4 怎么使用特定的文件系统

​ 当插入新的硬盘,要使用特定的文件系统,可以按照以下方式创建使用。

  1. 创建文件系统:首先,您需要在磁盘分区或设备上创建所需的文件系统。例如,使用ext4文件系统,可以使用以下命令在分区上创建ext4文件系统:

    sudo mkfs.ext4 /dev/sdX
    

    其中,/dev/sdX 是您要创建文件系统的分区设备。

  2. 挂载文件系统:一旦文件系统创建完成,您可以将其挂载到Linux文件系统层次结构中的某个目录上。例如,将ext4文件系统挂载到/mnt/mydrive 目录:

    sudo mount /dev/sdX /mnt/mydrive
    
  3. 访问和管理文件系统:一旦文件系统挂载成功,您可以通过访问挂载点目录来读取、写入和管理文件。例如,使用文件管理器或命令行工具访问 /mnt/mydrive 目录。

  4. 卸载文件系统:在完成对文件系统的操作后,您可以卸载它以确保数据的完整性。使用以下命令卸载文件系统:

    sudo umount /mnt/mydrive
    

2.5 文件系统的层次结构

Linux文件系统的层次结构如下:

  1. 根目录(/):根目录是文件系统的顶级目录,所有其他目录和文件都位于根目录下。实例:/var、/home、/usr等目录都是根目录的子目录。
  2. /bin:/bin目录包含可执行的系统命令,如ls、cp、mv等。实际用例:这些命令是系统管理员和用户常用的工具,用于管理和操作文件系统。
  3. /sbin:/sbin目录包含系统管理员使用的系统命令,如ifconfig、fdisk等。实际用例:这些命令通常需要管理员权限才能运行,用于系统配置和管理。
  4. /etc:/etc目录包含系统的配置文件,如网络配置、用户配置等。实际用例:管理员可以在此目录下编辑配置文件以定制系统行为。
  5. /var:/var目录包含可变数据,如日志文件、缓存文件等。实际用例:系统日志、邮件日志、数据库文件等都存储在/var目录下。
  6. /home:/home目录是用户的主目录,每个用户都有一个对应的子目录。实际用例:每个用户可以在自己的主目录下存储个人文件和配置。
  7. /usr:/usr目录包含用户程序和文件,如应用程序、库文件等。实际用例:大部分用户安装的软件都存储在/usr目录下。
  8. /tmp:/tmp目录用于存储临时文件。实际用例:程序可以使用/tmp目录来创建临时文件,完成某些临时任务后会自动清理。
  9. /dev:/dev目录包含设备文件,用于与硬件设备进行交互。实际用例:硬盘、USB设备、打印机等都在/dev目录下表示为设备文件。
  10. /proc:/proc目录是一个虚拟文件系统,提供了对系统内核和进程的访问。实际用例:可以通过读取/proc目录下的文件获取系统和进程的信息。

  这些目录在Linux文件系统中具有不同的作用和用途。了解文件系统的层次结构可以帮助你更好地组织和管理文件和目录。

三、文件和目录管理

3.1 文件和目录的基本概念

  文件和目录是Linux文件系统中的基本概念,它们用于组织和存储数据。

  1. 文件:文件是存储数据的基本单位。它可以是文本文件、图像文件、音频文件等。实例:example.txt是一个文本文件,image.jpg是一个图像文件。实际用例:文件用于存储和传输数据,如文档、媒体文件、程序代码等。
  2. 目录:目录是用于组织和管理文件的容器。它可以包含文件和其他目录。实例:/home是一个目录,它包含了用户的主目录。实际用例:目录用于组织文件,使其更易于管理和访问。例如,/var/log目录用于存储系统日志文件。
  3. 路径:路径是用于定位文件或目录的字符串。它可以是绝对路径或相对路径。实例:/home/user/example.txt是一个绝对路径,表示位于用户主目录下的example.txt文件。实际用例:路径用于访问文件和目录,可以通过路径来执行操作,如打开文件、复制文件等。
  4. 权限:权限是用于控制对文件和目录的访问和操作的权限设置。它包括读取、写入和执行权限。实例:-rw-r–r–表示一个文件的权限设置,所有者具有读写权限,其他用户只有读取权限。实际用例:权限用于保护文件和目录的安全性,限制对其的访问和修改。
  5. 扩展名:扩展名是文件名的一部分,用于指示文件的类型或格式。它通常位于文件名的最后,由一个点和几个字符组成。实例:example.txt的扩展名是.txt,表示它是一个文本文件。实际用例:扩展名用于标识文件类型,方便用户和程序识别和处理文件。

  文件和目录是Linux文件系统中的基本组成部分,它们共同构成了文件系统的结构和功能。了解这些基本概念可以帮助你更好地理解和管理文件系统中的数据。

3.2 创建文件和目录

  在Linux中,你可以使用以下命令来创建文件和目录:

  1. 创建文件:
touch filename
  1. 创建目录:
mkdir directoryname
  1. 创建多级目录:
mkdir -p path/to/directory

3.3 查看文件和目录信息

  1. 查看文件内容: 要查看文件的内容,可以使用cat命令,它会将文件的内容输出到终端,查看文件内容的常见用例包括查看日志文件、配置文件、脚本文件等。 实例:假设我们要查看名为example.txt的文本文件的内容,可以运行以下命令:
cat example.txt
  1. 查看文件和目录列表: 要查看当前目录下的文件和目录列表,可以使用ls命令,它会列出当前目录中的所有文件和目录。 实例:运行以下命令来查看当前目录下的文件和目录列表:
ls
  1. 查看文件和目录权限: 要查看文件和目录的权限信息,可以使用ls命令的-l选项,它会以长格式显示文件和目录的详细信息,包括权限、所有者、大小等。 实例:运行以下命令来查看当前目录下文件和目录的详细信息:
ls -l

3.4 复制、移动和重命名文件和目录

  1. 复制文件和目录: 要复制文件或目录,可以使用cp命令,后面跟上源文件/目录和目标位置。 实例:将文件example.txt复制到目录backup中,可以运行以下命令:
cp example.txt backup/
  1. 移动文件和目录: 要移动文件或目录,可以使用mv命令,后面跟上源文件/目录和目标位置。 实例:将文件example.txt移动到目录new_folder中,可以运行以下命令:
mv example.txt new_folder/
  1. 重命名文件和目录: 要重命名文件或目录,可以使用mv命令,后面跟上源文件/目录和目标名称。 实例:将文件old_name.txt重命名为new_name.txt,可以运行以下命令:
mv old_name.txt new_name.txt

3.5 删除文件和目录

  1. 删除文件: 要删除文件,可以使用rm命令,后面跟上要删除的文件名。 实例:删除文件example.txt,可以运行以下命令:
rm example.txt
  1. 删除目录: 要删除目录,可以使用rm命令的-r选项,后面跟上要删除的目录名。 实例:删除目录myfolder及其所有内容,可以运行以下命令:
rm -r myfolder

  请注意,删除文件和目录是不可逆的操作,如高危rm操作rm -rf *等,请谨慎使用。在执行删除操作之前,确保你真正想要删除的文件或目录。

四、文件权限和所有权

4.1 文件权限的概念

  文件权限由三个组合在一起的权限集合表示:所有者权限、群组权限和其他用户权限。每个权限集合包含读取(r)、写入(w)和执行(x)三种权限。

实例:假设我们有一个名为example.txt的文件,以下是一个文件权限的示例:

-rw-rw-r--. 1 yishuoit yishuoit      0 Oct 21 08:15 example.txt

  在这个示例中,第一个字符-表示这是一个文件(如果是目录,则显示为d)。接下来的三个字符rw-表示所有者(owner)对文件具有读写权限,而-r-表示群组(group)和其他用户(others)只有读取权限。通过正确设置文件权限,你可以控制谁可以访问、修改和执行文件,从而保护文件的安全性和完整性。

4.2 文件权限的表示方式

  文件权限在Linux中以一串字符的形式表示,共有十个字符。

字符表示文件类型如下:

  • - 表示普通文件
  • d 表示目录
  • l 表示符号链接(软链接)
  • c 表示字符设备文件
  • b 表示块设备文件
  • s 表示套接字文件
  • p 表示命名管道(FIFO)
  • r 表示可读
  • w 表示可写
  • x 表示可执行

在这里插入图片描述

  文件权限的常见用例包括限制对敏感文件的访问、控制文件的编辑权限等。例如,你可以将配置文件的权限设置为只有所有者可以读写,而其他用户只能读取,以确保配置文件的安全性。

4.3 修改文件权限

  要修改文件权限,可以使用chmod命令,后面跟上权限设置和文件名。

在这里插入图片描述

  1. 使用数字表示法修改权限: 可以使用数字表示法来设置文件权限。每个权限(读取、写入和执行)都有一个对应的数字值:读取(4)、写入(2)和执行(1)。将这些数字相加可以得到所需的权限组合。

  实例:将文件example.txt的权限设置为所有者具有读写权限,群组和其他用户只有读取权限,可以运行以下命令:

chmod 644 example.txt

  在这个示例中,6表示所有者具有读写权限(4+2),而4表示群组和其他用户只有读取权限。

  1. 使用符号表示法修改权限: 可以使用符号表示法来设置文件权限。符号表示法使用+-来添加或移除权限,使用=来设置权限。

  实例:将文件example.txt的权限设置为所有者具有读写权限,群组和其他用户只有读取权限,可以运行以下命令:

chmod u+rw,g+r,o+r example.txt

  在这个示例中,u+rw表示为所有者添加读写权限,g+r表示为群组添加读取权限,o+r表示为其他用户添加读取权限。修改文件权限的常见用例包括限制对敏感文件的访问、控制文件的编辑权限等。例如,你可以使用chmod 600 private_file.txt将一个私密文件的权限设置为只有所有者可以读写。

4.4 文件所有权的概念

  每个文件都有一个所有者(owner),可以是用户或用户组。所有者对文件具有特殊的权限,可以控制文件的访问、修改和执行。

  实例:假设我们有一个名为example.txt的文件,以下是一个文件所有权的示例:

-rw-r--r-- 1 user group 1024 Jan 1 00:00 example.txt

  在这个示例中,user是文件的所有者,group是文件所属的群组。文件所有权的常见用例包括限制对敏感文件的访问、控制文件的编辑权限等。例如,你可以将配置文件的所有权设置为只有特定用户或用户组可以修改,以确保配置文件的安全性。

4.5 修改文件所有权

在这里插入图片描述

  1. 修改文件所有者: 可以使用用户名或用户ID来指定新的文件所有者。

  实例:将文件example.txt的所有者修改为yishuo,可以运行以下命令:

chown yishuo example.txt
  1. 修改文件所属群组: 可以使用群组名或群组ID来指定新的文件所属群组。

  实例:将文件example.txt的所属群组修改为yishuogroup,可以运行以下命令:

chown :yishuogroup example.txt
  1. 同时修改文件所有者和所属群组: 可以同时指定新的文件所有者和所属群组。

  实例:将文件example.txt的所有者修改为yishuo,所属群组修改为yishuogroup,可以运行以下命令:

chown yishuo:yishuogroup example.txt

  实际用例:修改文件所有权的常见用例包括更改文件的所有者、更改文件所属群组等。例如,你可以使用chown root:admin sensitive_file.txt将一个敏感文件的所有者修改为root,所属群组修改为admin。通过使用chown命令,你可以灵活地修改文件的所有者和所属群组,以满足你的文件系统管理需求。请注意,修改文件所有权可能需要管理员或所有者的权限。

五、文件权限的特殊权限

5.1 SUID权限

  SUID(Set User ID)权限是Linux文件系统管理中的一种特殊权限,它允许用户以文件所有者的权限来执行文件,当用户执行具有SUID权限的文件时,该文件将以文件所有者的身份运行,而不是执行用户的身份。

  实例:假设我们有一个名为program的可执行文件,具有SUID权限。以下是一个示例:

-rwsr-xr-x 1 owner group 1024 Jan 1 00:00 program

  在这个示例中,s表示SUID权限被设置在文件的执行权限上。SUID权限的常见用例包括允许普通用户执行特定的系统命令或程序,而无需提供管理员权限。例如,passwd命令通常具有SUID权限,允许普通用户更改自己的密码,而无需管理员权限。

  1. 使用chmod命令设置SUID权限。在终端中输入以下命令:
chmod u+s program
chmod 4755 program

5.2 SGID权限

  SGID(Set Group ID)权限是Linux文件系统管理中的一种特殊权限,SGID权限可以应用于可执行文件和目录。当用户执行具有SGID权限的文件或访问具有SGID权限的目录时,该文件或目录将以文件所属群组的身份运行或访问。

  实例:假设我们有一个名为directory的目录,具有SGID权限。以下是一个示例:

drwxr-sr-x 1 owner group 1024 Jan 1 00:00 directory

  在这个示例中,s表示SGID权限被设置在目录的执行权限上。SGID权限的常见用例包括在共享目录中确保新创建的文件继承目录的所属群组,以便多个用户可以共享文件。

  1. 使用chmod命令设置SGID权限。在终端中输入以下命令:
chmod g+s directory
chmod 2755 directory

5.3 Sticky位权限

  Sticky位权限是Linux文件系统管理中的一种特殊权限,它主要应用于目录,当目录具有Sticky位权限时,只有文件的所有者或超级用户才能删除该目录中的文件,其他用户无法删除。

  实例:假设我们有一个名为directory的目录,具有Sticky位权限。以下是一个示例:

drwxrwxrwt 1 owner group 1024 Jan 1 00:00 directory

  在这个示例中,t表示Sticky位权限被设置在目录的执行权限上。Sticky位权限的常见用例是在共享目录中限制其他用户对文件的删除操作。例如,当多个用户共享一个目录,并且你希望确保只有文件的所有者才能删除自己的文件,而其他用户无法删除其他用户的文件。

  1. 使用chmod命令设置Sticky权限。在终端中输入以下命令:
chmod +t directory
chmod 1755 directory

六、文件系统挂载和卸载

6.1 挂载点和挂载操作

  挂载点是一个目录,用于将一个文件系统连接到该目录,使得文件系统中的文件和目录可以在该挂载点下访问。挂载点和挂载操作的常见用例包括将外部存储设备(如硬盘、USB驱动器)挂载到系统中,以便访问其中的文件和目录。例如,你可以将一个USB闪存驱动器挂载到/mnt/usb目录,以便在该目录下访问闪存驱动器中的文件。可以使用mount命令进行挂载操作。

  实例:要将/dev/sdb分区挂载到/mnt目录,可以运行以下命令:

mount /dev/sdb /mnt

  通过使用挂载点和挂载操作,你可以方便地将文件系统连接到目录结构中的特定位置,以便访问其中的文件和目录。请注意,挂载操作可能需要管理员权限 ,这里简单讲解,后续会详细介绍 。

6.2 查看已挂载的文件系统

  mount命令用于显示当前系统中已挂载的文件系统及其挂载点。

  实例:运行mount命令,可以列出当前系统中已挂载的文件系统及其挂载点。示例如下:

/dev/sda1 on / type ext4 (rw,relatime)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
/dev/sdb1 on /mnt type ext4 (rw,relatime)

  在这个示例中,可以看到三个已挂载的文件系统,分别是根文件系统(/),临时文件系统(/run)和挂载点为/mnt的文件系统。通过使用mount命令,你可以方便地查看当前系统中已挂载的文件系统及其挂载点,以便进行文件系统管理和访问。

6.3 卸载文件系统

  umount命令用于卸载已挂载的文件系统,断开文件系统与挂载点之间的连接。

实例:要卸载名为/mnt的挂载点上的文件系统,可以运行以下命令:

umount /mnt

  实际用例:卸载文件系统的常见用例包括安全地移除外部存储设备,以及解除挂载不再需要的网络共享目录。例如,你可以使用umount命令来卸载一个已挂载的USB驱动器,以便安全地将其从系统中移除。通过使用umount命令,你可以方便地卸载已挂载的文件系统,确保文件系统与挂载点之间的连接被断开。请注意,卸载操作可能需要管理员权限。

6.4 永久挂文件系统

  实现永久挂载文件系统,您可以编辑系统的 /etc/fstab 文件,该文件包含了系统启动时要挂载的文件系统的信息。以下是进行永久挂载的步骤:

  1. 打开 /etc/fstab 文件:

    sudo nano /etc/fstab
    
  2. 在文件的末尾添加一行来描述要挂载的文件系统。行的格式如下:

    /dev/sdX   /mnt/mydrive   ext4   defaults   0   0
    

    其中,/dev/sdX 是您要挂载的分区设备,/mnt/mydrive 是挂载点目录,ext4 是文件系统类型,defaults 是挂载选项,0 0 是用于文件系统检查的选项。

  3. 保存并关闭文件(在nano编辑器中,按下 Ctrl + X,然后按下 Y 保存更改)。

  4. 重新启动系统或使用以下命令重新加载 /etc/fstab 文件以应用更改:

    sudo mount -a
    

  此时,文件系统将在每次系统启动时自动挂载到指定的挂载点。请确保在编辑 /etc/fstab 文件之前备份文件以防止意外错误。如果您需要修改或删除挂载点,只需编辑 /etc/fstab 文件并重新加载即可。

七、磁盘配额管理

7.1 磁盘配额的概念

  磁盘配额允许系统管理员为每个用户或用户组设置磁盘使用限制,以防止他们占用过多的磁盘空间。通过使用磁盘配额,系统管理员可以有效地管理磁盘空间的使用,避免资源浪费和滥用。请注意,磁盘配额的实现可能因文件系统类型而有所不同,例如,可以使用quota命令来设置和管理磁盘配额。

7.2 配置用户磁盘配额

  磁盘配额是Linux文件系统管理中的一种功能,用于限制用户或用户组在文件系统上可以使用的磁盘空间。

实例:假设我们有一个名为/home的文件系统,我们要为用户user1设置磁盘配额为1GB,而为用户user2设置磁盘配额为500MB。

  1. 首先,我们需要确保文件系统支持磁盘配额。可以使用以下命令检查文件系统类型:
df -TH /home

  命令执行结果示例:

Filesystem     Type     1K-blocks    Used Available Use% Mounted on
/dev/sda1      ext4      10485760  524288   9961472   6% /home

  在这个示例中,文件系统类型为ext4

  1. 接下来,我们需要启用磁盘配额。可以使用以下命令启用磁盘配额:
sudo quotacheck -cug /home
  1. 然后,我们可以为用户user1设置磁盘配额为1GB。可以使用以下命令设置磁盘配额:
sudo setquota -u user1 1048576 1048576 0 0 /home
  1. 同样地,我们可以为用户user2设置磁盘配额为500MB。可以使用以下命令设置磁盘配额:
sudo setquota -u user2 524288 524288 0 0 /home

  实际用例:磁盘配额的常见用例包括在共享文件系统上限制用户的磁盘使用,以确保公平分配和避免资源滥用。通过使用磁盘配额,系统管理员可以有效地管理磁盘空间的使用,避免资源浪费和滥用。

7.3 监控和管理磁盘配额

  监控和管理磁盘配额是Linux文件系统管理中的重要任务,用于跟踪和管理用户或用户组在文件系统上的磁盘使用情况。以下是相关内容:

  1. 监控磁盘配额:可以使用repquota命令来监控磁盘配额的使用情况。以下是一个示例:
repquota /home

命令执行结果示例:

*** Report for user quotas on device /dev/sda1
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
user1       --  524288 1048576 1048576          10     0     0
user2       --  262144  524288  524288           5     0     0

  在这个示例中,我们可以看到用户user1使用了524288个磁盘块,而用户user2使用了262144个磁盘块。

  1. 管理磁盘配额:可以使用edquota命令来管理磁盘配额,包括修改配额限制和警告设置。以下是一个示例:
edquota -u user1

命令执行结果示例:

Disk quotas for user user1 (uid 1000):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda1                    524288    1048576    1048576         10        0        0

  在这个示例中,我们可以看到用户user1的磁盘配额限制。监控和管理磁盘配额的常见用例包括定期检查磁盘使用情况,警告用户接近配额限制,并根据需要调整配额限制。

八、文件系统检查和修复

8.1 文件系统检查工具

  文件系统检查工具是Linux文件系统管理中的重要工具,用于检查和修复文件系统中的错误。以下是相关内容:

  1. fsck:fsck是一个常用的文件系统检查工具,用于检查和修复文件系统中的错误。可以使用以下命令运行fsck
sudo fsck /dev/sda1

命令执行结果示例:

fsck from util-linux 2.34
e2fsck 1.45.5 (07-Jan-2020)
/dev/sda1: clean, 100/65536 files, 200/262144 blocks

  在这个示例中,fsck检查了/dev/sda1文件系统,并显示了文件系统的状态。

  1. badblocks:badblocks是一个用于检测磁盘坏道的工具。可以使用以下命令运行badblocks
sudo badblocks -v /dev/sda1

  命令执行结果示例:

Checking blocks 0 to 262143
Checking for bad blocks (read-only test): done
Pass completed, 0 bad blocks found. (0/0/0 errors)

  在这个示例中,badblocks检查了/dev/sda1文件系统中的坏道,并显示了检测结果。通过使用文件系统检查工具,可以及时发现和修复文件系统中的错误,确保文件系统的完整性和稳定性。请注意,运行文件系统检查工具可能需要管理员权限。

8.2 执行文件系统修复

  执行文件系统修复是Linux文件系统管理中的重要任务,用于修复文件系统中的错误。

  1. 执行文件系统修复:如果文件系统检查发现错误,可以使用fsck命令的修复选项来修复文件系统。以下是一个示例:
sudo fsck -y /dev/sda1

  命令执行结果示例:

fsck from util-linux 2.34
e2fsck 1.45.5 (07-Jan-2020)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/sda1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda1: 11/65536 files (0.0% non-contiguous), 200/262144 blocks

  在这个示例中,fsck修复了/dev/sda1文件系统中的错误,并显示了修复后的文件系统状态。通过执行文件系统检查和修复,可以及时发现和修复文件系统中的错误,确保文件系统的完整性和稳定性。请注意,运行文件系统检查和修复命令可能需要管理员权限。

九、文件系统加密

9.1 文件系统加密的概念

  文件系统加密是Linux文件系统管理中的一种安全措施,用于保护文件系统中的数据免受未经授权的访问。文件系统加密通过对文件系统中的数据进行加密,确保只有授权用户才能解密和访问文件系统中的数据。

9.2 Linux常见的加密工具

  在Linux上有多种加密工具可供选择,以下是一些常见的加密工具:

  1. eCryptfs:eCryptfs是一个基于文件的加密工具,可以用于加密单个目录或文件。它提供了透明的加密和解密功能,可以在用户级别进行操作。
  2. LUKS(Linux Unified Key Setup):LUKS是一个磁盘加密规范,它允许您加密整个磁盘分区。它使用一个主密钥来加密数据,并支持多个用户密钥来访问数据。
  3. VeraCrypt:VeraCrypt是一个开源的磁盘加密工具,它可以在Linux、Windows和macOS等操作系统上使用。它支持创建加密容器或加密整个磁盘分区。
  4. GnuPG(GNU Privacy Guard):GnuPG是一个用于加密和签名数据的免费开源软件。它使用公钥加密和私钥解密的方式来实现加密功能。
  5. OpenSSL:OpenSSL是一个强大的加密库,提供了许多加密算法和协议的实现。它可以用于加密文件、生成证书、进行SSL/TLS通信等。

  这些加密工具都有各自的特点和用途,您可以根据您的需求选择适合您的加密工具。请注意,在使用加密工具时,请确保备份重要数据,并妥善保管加密密钥和密码。后续文章会详细介绍windows和linux加密工具的使用。

十、Linux目录结构思维导图

在这里插入图片描述

十一、总结

  学习Linux系统是进入开源世界的大门,它将为你打开更广阔的职业发展道路,并使你在各种工作角色中更加灵活和自主。无论你是系统管理员、网络工程师、软件开发人员还是数据分析师,掌握Linux系统技能都将为你的工作带来巨大的价值。在后续的文章中,我们将继续探索Linux的更多主题,敬请期待!微信公众号搜索关注艺说IT,分享各种原创技术干货文章,对你有用的话请一键三连,感谢🙏。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1121216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

codeforces (C++ Simple Design)

题目&#xff1a; 翻译&#xff1a; 思路&#xff1a; 1、难点在于读题&#xff0c;输入两个数x&#xff0c;k&#xff0c;从x开始递增寻找最小可整除k的数。 代码&#xff1a; #include<iostream> using namespace std; int main() {int x, k;int n;cin >> n;…

使用 OpenGL 渲染会旋转 会变色的三角形(LearnOpenGL P3)

文章目录 前言代码 前言 本文参考文献&#xff0c;侵删&#xff01;LearnOpenGL - 你好&#xff0c;三角形 本文将假设您完成了 OpenGL 的配置&#xff0c;并且使用 VAO、VBO 渲染图形 由于时间问题&#xff0c;代码的详细讲解将在几日内给出~ 代码 #include <glad/glad…

UML类图中各箭头表示总结

UML类图中各箭头表示总结 1、泛化2、实现3、依赖4、关联5、聚合6、组合 在UML类图中&#xff0c;箭头关系是用来表示类之间的关系的。箭头关系的种类有以下几种&#xff1a; 1、泛化 泛化&#xff1a;表示类之间的继承关系。箭头从子类指向父类。箭头&#xff1a;实线空心三角…

【计算机网络】UDP/TCP协议

文章目录 :peach:1 UDP协议:peach:1.1 :apple:UDP协议端格式:apple:1.2 :apple:UDP的特点:apple:1.3 :apple:UDP的缓冲区:apple:1.4 :apple:UDP使用注意事项:apple:1.5 :apple:基于UDP的应用层协议:apple: 2 :peach:TCP协议:peach:2.1 :apple:TCP协议端格式:apple:2.2 :apple:确…

《windows核心编程》第3章 内核对象

一、内核对象简介 1.1 内核对象有哪些 令牌对象 token、事件对象 Event、文件对象 File、文件映射对象 Mapping_File、线程对象 Thread、时钟对象 Timer、线程池对象 ThreadPool、I/O完成端口对象 Completion port、工作对象 job、邮槽对象 mailslot、互斥对象 Mutex、管道对…

Hook原理--逆向开发

今天我们将继续讲解逆向开发工程另一个重要内容--Hook原理讲解。Hook&#xff0c;可以中文译为“挂钩”或者“钩子”&#xff0c;逆向开发中改变程序运行的一种技术。按照如下过程进行讲解 Hook概述Hook技术方式fishhook原理及实例符号表查看函数名称总结 一、Hook概述 在逆…

LeetCode刷题---有效的括号

这里用到了栈的思想 栈(stack)是限定仅在表尾进行插入或者删除的线性表。对于栈来说&#xff0c;表尾端称为栈顶&#xff08;top&#xff09;&#xff0c;表头端称为栈低&#xff08;bottom&#xff09;。不含元素的空表称为空栈。因为栈限定在表尾进行插入或者删除&#xff0c…

生成包含10个随机字母或数字的字符串,然后统计每个字符的出现次数

from random import choices from string import ascii_letters, digitsx .join(choices(ascii_lettersdigits, k10)) d dict() # 创建空字典 for ch in x:d[ch] d.get(ch, 0) 1 # x中有ch字符,个数1,并作为字典的值 print(x) print(d)也可以使用collections模块的defaul…

从车窗升降一探 Android 车机的重要 API:车辆属性 CarProperty

前言 前面我们介绍过 Android 车机 Automotive OS 的几块重要内容&#xff1a; 一文了解 Android 车机如何处理中控的旋钮输入从实体按键看 Android 车机的自定义事件机制深度入门 Android 车机核心 CarService 的构成和链路 本篇文章我们聚焦 Android 车机上最重要、最常用…

LeetCode--180 连续出现的数字

文章目录 1 题目描述2 结果示例3 解题思路3.1 MySQL 代码 4 知识拓展 1 题目描述 Logs表: ---------------------- | Column Name | Type | ---------------------- | id | int | | num | varchar | ----------------------在 SQL 中&#xff0c;id …

Mybatis的SqlRunner执行流程

Mybatis的SqlRunner执行流程 SqlRunner exec new SqlRunner(connection); Map<String, Object> row exec.selectOne("SELECT * FROM PRODUCT WHERE PRODUCTID ?", "FI-SW-01");connection.close();assertEquals("FI-SW-01", row.ge…

YOLOv5算法改进(19)— 手把手教你去更换NMS(DIoU-NMS/CIoU-NMS/EIoU-NMS/GIoU-NMS/SIoU-NMS)

前言:Hello大家好,我是小哥谈。YOLOv5中的NMS指非极大值抑制(Non-Maximum Suppression),它是一种用于目标检测算法中的后处理技术。在检测到多个重叠的边界框时,NMS可以帮助选择最佳的边界框。NMS的工作原理是首先根据预测边界框的置信度对它们进行排序,然后从置信度最高…

iOS逆向工程之Theos

如果你对iOS逆向工程有所了解&#xff0c;那么你对Tweak并不陌生。那么由Tweak我们又会引出Theos, 那么什么是Theos呢&#xff0c;简单一句话&#xff0c;Theos是一个越狱开发工具包&#xff0c;Theos是越狱开发工具的首先&#xff0c;因为其最大的特点就是简单。大道至简&…

python中多行注释与取消注释

在小白学习python编程的过程中&#xff0c;我们经常会发现很多同学们喜欢问的一个问题&#xff1a; 怎么多行注释呢&#xff1f; 怎么取消多行注释呢&#xff1f; 以上种种问题我相信来到这里都会得到相应答案 那我们接下来开始吧&#xff01; 文章目录 单行注释多行注释取消多…

c初阶检测题

选择题 1.局部变量的作用域是&#xff1a;&#xff08;D&#xff09; A.main函数内部 B.整个程序 C.main函数之前 D.局部变量所在的局部范围 2.字符串的结束标志是&#xff1a;&#xff08;A&#xff09; 作业内容 A.是’0’ B.是EOF C. 是’\0’ D.是空格 3.下面那个不是…

精选六个大学生可以做的兼职副业,学习赚钱两不误

在当今的社会中&#xff0c;大学生们面临着学业压力和生活开销。为了减轻家庭的负担&#xff0c;同时也为了更好地拓宽自己的视野和实践能力&#xff0c;许多大学生开始寻找一种既可以学习又能赚钱的副业。这样的选择&#xff0c;不仅可以弥补金钱上的不足&#xff0c;还可以提…

【java计算机毕设】博客管理系统 javaweb springboot vue mysql

目录 1.项目功能截图​ 2.项目简介 3.源码下载地址 1.项目功能截图 2.项目简介 博客管理系统 idea mysql5.7/8 vue html jdk1.8 系统功能&#xff1a; 前台功能&#xff1a;文章信息&#xff0c;相册信息&#xff0c;留言板&#xff0c;个人中心&#xff0c;后台管理 后…

闭包(函数)

把内部函数通过return扔出去 必要条件

靶机 DC-2

DC_2 信息搜集 存活检测 详细扫描 添加 host 后台网页扫描 网页信息搜集 主页面 找到 flag1&#xff0c;提示使用 cewl 密码生成工具 wp 登陆界面 使用 wpscan 扫描用户 wpscan --url http://dc-2/ --enumerate u 扫描出用户 tom、jerry、admin 将三个用户名写入文件中…

一文解密网络背后的秘密

一文解密网络背后的秘密 网络的发展史从键入网址到网页进行显示期间法上了什么&#xff1f;首先我们需要了解一下URLDNS解析建立连接什么是三次握手&#xff0c;可不可以两次呢&#xff1f; 本地发送请求&#xff0c;服务器处理请求断开连接 实践一下 相信大家对网络都不陌生了…