本次记录的目录结构信息是在CentOs7下进行的 

/根目录

/bin 目录

/bin 目录在Linux系统中用于存放必要的二进制可执行文件

/bin(binary的缩写)目录是Linux和Unix操作系统中的标准目录之一,它包含了用户在系统中执行的基本命令,这些命令对于系统的正常运行至关重要。以下是/bin目录的一些关键点:

  1. 可执行文件:该目录下的文件都是二进制格式,可以直接被操作系统执行。
  2. 基本命令:这里存放的命令是所有用户都可能使用的基本命令,如lscpmv等。
  3. 访问权限:通常,/bin目录下的这些命令对所有用户都是可执行的。
  4. 启动脚本:虽然大部分启动相关的脚本位于/etc/etc/rc.d目录中,但一些基本的系统启动脚本也可能存在于/bin目录。
  5. /usr/bin的区别:在许多现代Linux发行版中,/bin目录中的许多命令实际上是符号链接,它们指向/usr/bin目录中的相应命令。这样做是为了在挂载/usr文件系统之前能够访问这些关键命令。
  6. 兼容性考虑:由于历史原因,一些传统的Unix系统将/bin作为根文件系统的一部分,即使在现代Linux系统中,为了保持向后兼容,这个目录仍然被保留并遵循相同的用途。

/dev 目录

/dev目录在Linux和Unix操作系统中扮演着特殊的角色,它是设备文件系统的所在地。

以下是/dev目录的一些关键信息:

  1. 设备文件: /dev目录下包含了所谓的设备文件,这些文件是操作系统用来与硬件设备通信的接口。设备可以是物理设备,如硬盘、鼠标、键盘,或者是虚拟设备,如网络接口、终端等。

  2. 分类: 设备文件分为两类:块设备文件(例如/dev/sda代表第一个SCSI硬盘)和字符设备文件(例如/dev/console代表系统控制台)。块设备以数据块的形式处理数据,而字符设备则以字符流的形式处理数据。

  3. 创建和管理: 在系统引导过程中,udev服务(或者是传统的init系统,如sysvinitsystemd)负责在/dev目录下创建和管理设备节点。它根据系统中检测到的硬件配置动态地创建设备文件。

  4. 挂载点: /dev通常是一个挂载点,用于tmpfs或者devtmpfs文件系统,这意味着/dev目录中的内容实际上存储在内存中,而不是在硬盘上。这有助于提高访问速度并节省资源。

  5. 安全性: 由于/dev目录下的设备文件直接关联到系统的硬件资源,因此对它们的访问通常受到严格的权限控制。只有具备相应权限的用户才能读取或写入这些设备。

  6. 符号链接: 有时,为了方便或兼容性,/dev目录可能包含指向实际设备文件的符号链接。

  7. 网络文件系统: 对于网络文件系统(NFS),远程设备的访问也是通过/dev目录中的设备文件来实现的。

  8. 设备命名约定: 设备文件名遵循一定的命名规则,如/dev/cdrom表示CD-ROM驱动器,/dev/tty系列代表不同的终端设备。

/home 目录

在Linux和Unix操作系统中,/home目录具有特定的用途和重要性。以下是有关/home目录的详细信息:

  1. 用户数据存储: /home目录是系统中每个用户的个人数据和配置文件的存储位置。每个用户账户在/home目录下都有一个自己的目录,该目录的名称与用户名相同。例如,如果用户名为”johndoe”,则其主目录通常位于/home/johndoe

  2. 个人设置和文件: 用户主目录内通常包含桌面环境、下载、文档、音乐、图片等文件夹,以及各种应用程序的配置文件。这些文件和目录用于存储用户个人的设置和数据。

  3. 安全性: 用户对自己的/home目录拥有访问权限,并对其中的文件和目录负有管理责任。标准的权限设置防止其他用户访问或修改别人的/home目录内容,从而保护了用户的隐私和数据安全。

  4. 多用户环境: 在多用户系统中,/home目录是实现用户隔离的关键。系统管理员可以通过控制对/home目录的访问来管理用户账户。

  5. 备份和恢复: 由于所有重要的用户数据通常都存储在/home目录中,因此它也是备份策略中的重点。在某些灾难恢复场景中,可以仅恢复/home数据以快速重建用户的工作环境。

  6. 磁盘配额: 为了管理磁盘空间的使用,/home目录可能会受到磁盘配额的限制。这允许管理员限制每个用户可以使用的磁盘空间量,避免单个用户占用过多资源。

  7. 挂载点: /home目录可以是一个独立的挂载点,有时甚至可以在不同的物理硬盘上。这样做可以提高性能(通过将/home放在更快的驱动器上),或者在多驱动器系统上提供额外的冗余。

  8. 系统重装: 在系统重装或升级过程中,保留/home目录不变可以保证用户的数据和配置不丢失。因此,许多系统管理员在安装新的操作系统时会选择不格式化/home分区。

/lib64 目录

/lib64 目录在Linux系统中用于存放64位系统级别的库文件

以下是 /lib64 目录的一些信息:

  1. 64位库文件存储:在64位的Linux系统中,/lib64 目录是标准库文件(如C库,系统启动文件和内核模块等)存放的地方。这些库文件允许操作系统及应用程序执行特定的任务。
  2. 与 /lib 的关系:在某些64位Linux发行版中,/lib64 可能是 /lib 目录的一个符号链接,这意味着这两个目录实质上指向同一个位置,用于存放64位的库文件。
  3. 兼容性考虑:为了向后兼容32位应用程序,许多64位系统同时维护 /lib(用于32位应用程序)和 /lib64(专门用于64位应用程序)两个目录。
  4. 编译问题解决:如果在编译软件时出现找不到库文件的问题,通常需要检查库文件是否存在于 /lib64 目录中,或者 /lib64 是否被正确地添加到了系统的库文件搜索路径中。
  5. 系统维护:对于系统管理员来说,了解 /lib64 目录的作用是非常重要的,因为它涉及到系统级库文件的管理,可能会影响到系统的稳定性和应用程序的运行。

/lib64 目录对于64位Linux系统来说至关重要,它包含了运行系统和应用程序所必需的64位库文件。在进行系统维护或软件开发时,应确保该目录中的库文件是最新的且未被错误修改。

/mnt 目录

/mnt 目录在Linux系统中主要用于临时挂载文件系统

/mnt 目录是Linux系统中用于挂载光盘、USB设备或其他文件系统的专用目录。当一个设备或分区被挂载到这个目录时,它的文件系统就可以通过/mnt下的相应子目录来访问。以下是关于/mnt目录的一些详细信息:

  • 挂载点:在Linux中,挂载是指将一个文件系统连接到文件系统目录树的过程。/mnt是一个标准的挂载点,用于临时挂载文件系统,如CD-ROM、DVD、USB驱动器或者其他磁盘分区。
  • 临时使用:通常情况下,/mnt目录用于临时挂载,这意味着挂载的设备或文件系统不会在系统重启后自动重新挂载。如果需要系统启动时自动挂载,一般会配置/etc/fstab文件。
  • 结构:挂载后,/mnt目录下会出现一个新的子目录,该子目录的名称通常是挂载设备的名称或标签。例如,如果你挂载了一个USB驱动器,可能会在/mnt下看到一个名为usbdrive的目录。
  • 权限:由于/mnt目录通常用于挂载各种设备,因此对其的访问通常需要较高的权限。在大多数情况下,只有root用户才能在/mnt目录下挂载或卸载文件系统。
  • 自定义挂载点:虽然/mnt是一个传统的挂载点,但现代Linux系统允许管理员根据需要创建自定义挂载点。这样做可以提高灵活性并适应特定的用例。

/proc 目录

/proc 目录是Linux系统中的一个虚拟文件系统,它提供了一种独特的机制来访问内核内部的数据结构和改变内核设置。

/proc 是一个伪文件系统,这意味着它并不占用硬盘空间,而是存在于内存中。通过/proc,系统管理员和开发者可以获取系统的实时信息,包括但不限于:

  • 进程信息:每个进程在/proc下都有一个对应的以PID为名的目录,里面包含了该进程的状态、环境变量、内存使用等信息。
  • CPU信息/proc/cpuinfo文件提供了处理器的类型、速度、缓存大小等详细信息。
  • 硬件信息/proc/pci展示了连接到PCI总线上的设备信息。
  • 加载的内核模块/proc/modules列出了当前内核已加载的所有模块。
  • 系统配置:可以通过/proc中的文件来查看或更改某些内核参数,例如通过sysctl

/run 目录

/run 目录在Linux系统中用于存放运行时数据

以下是 /run 目录的一些关键信息:

  1. 临时文件和数据: /run 目录主要用于存储系统运行时的临时文件,例如进程ID (PID) 文件、套接字 (socket) 文件、锁文件 (lock files) 以及用户和系统的其他运行时信息。

  2. 易失性数据: 由于 /run 目录中的数据通常在系统重启后会丢失,所以它特别适合存放那些只在当前会话或启动周期内需要的数据。

  3. 挂载点: /run 是一个标准的挂载点,通常在系统启动时通过tmpfs(一种内存文件系统)来挂载。这意味着 /run 下的内容实际上存储在物理内存中,而不是硬盘上,从而提供了更快的读写速度。

  4. 兼容性考虑: 在较老的Linux系统中,/run 目录可能不存在,其功能由 /var/run 目录代替。随着时间推移,为了更好的符合文件系统层次标准(Filesystem Hierarchy Standard, FHS),/run 被引入作为更合适的位置来存放这些运行时数据。

  5. 安全性: /run 目录中的许多文件涉及到系统运行的关键方面,因此它们通常受到严格的权限控制,只有root用户或有特定权限的用户才能访问或修改这些文件。

  6. 服务状态: 一些系统服务会在 /run 下创建状态文件,以记录服务的当前运行状态或是为了同步多个相关进程的信息。

/srv 目录

/srv 目录在Linux系统中用于存放服务(service)相关的数据

以下是 /srv 目录的一些关键信息:

  1. 标准目录结构/srv 目录是为了存放与服务相关的数据,这包括但不限于在此目录下创建的站点(site)目录、服务(service)目录等。这些服务可能包括FTP服务器、Web服务器、数据库服务器等。
  2. FHS规定:按照文件系统层次标准(Filesystem Hierarchy Standard, FHS),/srv 目录应该包含独立于系统的服务数据。这意味着即使系统其他部分被升级或更改,这些服务的数据应保持不变,从而便于管理和备份。
  3. 数据存储/srv 通常用于存放那些由特定软件使用的静态数据。例如,一个web服务器可能会在 /srv/www 或 /srv/httpd 下存放其网页文件。
  4. 权限管理:由于 /srv 目录通常包含敏感数据,因此对其访问通常会有较为严格的权限控制。只有特定的用户和服务才能访问或修改其中的文件。
  5. 多用途:虽然 /srv 目录主要用于存放服务数据,但具体使用方式可能因不同的系统和管理员而异。有些系统可能不会使用 /srv 目录,或者只在特定情况下使用。
  6. 与SRV记录的区别:SRV记录是DNS服务器中的一种资源记录类型,用于指定哪台计算机提供了哪个服务。这与Linux文件系统中的 /srv 目录没有直接关系,但两者都与网络服务的管理有关。

/tmp 目录

/tmp 目录在Linux系统中用于存放临时文件

/tmp 目录是Linux系统中一个重要的目录,它的主要功能和特点如下:

  1. 临时存储/tmp 是一个用于存放临时文件的目录。这些文件通常是由系统或用户程序在运行时创建的,用于暂时存储数据。
  2. 权限宽松:默认情况下,/tmp 目录对于所有用户都是可读写的,这意味着任何用户都可以在这个目录下创建、修改或删除文件。因此,/tmp 目录通常用于存放那些需要多用户或系统进程共享的临时文件。
  3. 安全性:由于/tmp目录的开放性,它可能会成为安全风险的来源。恶意用户可能会利用这个目录来存放恶意文件或执行攻击。因此,系统管理员需要定期监控/tmp目录的内容,并确保只有信任的程序才能使用它。
  4. 清理机制:为了避免/tmp目录被填满,系统通常会在启动时以及在一定时间间隔内自动清理这个目录下的文件。此外,许多程序在正常退出时也会删除它们创建的临时文件。
  5. 系统重启:在系统重启后,/tmp目录中的内容通常会被清空,因此在该目录下存放的数据不应该是重要的或持久的。
  6. 与Windows的tmp文件区别:虽然在Windows系统中也存在名为tmp的临时文件,但它们的用途和处理方式可能有所不同。在Linux中,/tmp目录是系统范围内的临时文件存储地,而在Windows中,每个用户账户可能有自己的临时文件夹。

/var 目录

/var目录在Linux系统中用于存放变化的数据,如日志文件、数据库、邮件等。

以下是/var目录的一些关键信息:

  1. 可变数据存储/var目录是Linux文件系统中的一个标准目录,用于存储系统运行时会产生变化的文件,例如日志文件(/var/log)、邮件队列(/var/mail)、打印队列(/var/spool/cups)等。
  2. 日志文件:系统和服务的日志文件通常存储在/var/log目录下,这些日志文件对于系统管理员来说非常重要,因为它们记录了系统的运行情况和可能的错误信息,有助于故障排查和安全审计。
  3. 缓存和暂存数据/var还包含了一些缓存和暂存数据,这些数据在系统重启后通常会保留,与/tmp目录中的临时文件不同,后者在系统重启后通常会被清空。
  4. 软件包和数据库:某些系统可能会将软件包安装文件和数据库存储在/var目录下的相应子目录中,例如/var/lib目录通常用于存放数据库和软件包的状态信息。
  5. 权限管理:由于/var目录中包含系统的关键数据,因此对这些文件的访问通常受到较严格的权限控制,只有特定的用户和服务才能读写这些文件。
  6. 备份重要性:考虑到/var目录中的数据对于系统的重要性,定期备份这些数据是非常重要的,以防数据丢失或损坏。

/boot 目录

/boot 目录在Linux系统中用于存放启动相关的文件

以下是 /boot 目录的一些关键信息:

  1. 内核文件存放/boot 目录中最重要的文件是Linux内核文件,通常命名为 vmlinuz 或类似的名称。这个文件是系统启动时加载的核心文件。
  2. 引导加载器配置:该目录下还包含了引导加载器的配置文件,如GRUB(GNU GRand Unified Bootloader)的配置文件。这些文件用于配置启动菜单和其他启动时的选项。
  3. 初始内存磁盘映像/boot 目录还包含初始内存磁盘映像(initrd 或 initramfs),这是一个临时的根文件系统,用于支持内核的启动过程。它在内核能够挂载实际的根文件系统之前提供必要的驱动程序和工具。
  4. 系统映射文件:此外,/boot 目录还可能包含系统映射文件,如内存映射等,有助于内核了解系统的硬件布局。
  5. 挂载点:需要注意的是,/boot 目录并不是一个独立的分区,而是文件系统目录树上的一个目录。在Linux系统中,目录树是单根的,根目录就是 //boot 作为一个挂载点,是目录树上的一部分。
  6. 重要性:由于 /boot 目录包含了启动Linux系统所必需的文件,因此它对于系统的正常运行至关重要。如果 /boot 目录中的文件损坏或丢失,系统可能无法启动。

/etc 目录

/etc 目录在Linux系统中用于存放系统配置文件

以下是 /etc 目录的一些关键信息:

  1. 系统配置/etc 目录包含了大部分系统和服务的配置文件,这些文件定义了系统的行为和各种服务的操作参数。例如,用户的登录信息、网络配置、设备驱动设置等都在这个目录下。
  2. 安全性:由于 /etc 目录中的文件对系统的运行至关重要,因此对这些文件的访问通常受到严格的权限控制。只有root用户或具有适当权限的用户才能修改这些文件。
  3. 文件管理:系统管理员经常需要编辑 /etc 目录下的文件来调整系统设置或更新服务配置。因此,熟悉这个目录的内容和管理方法是系统管理的重要部分。
  4. 备份重要性:考虑到 /etc 目录中数据的重要性,定期备份这些配置文件是非常重要的,以防系统出现问题时能够快速恢复。
  5. 目录结构/etc 目录下通常会有多个子目录,每个子目录负责存储特定服务的配置文件。例如,/etc/init.d 目录用于存储系统的启动脚本,/etc/passwd 文件存储用户账户信息。

/lib 目录

/lib 目录在Linux系统中用于存放系统的库文件

以下是 /lib 目录的一些关键信息:

  1. 系统库文件存放/lib 目录中包含了系统运行所必需的库文件,这些库文件是程序在运行时需要链接的代码和数据。静态库文件通常以.lib为扩展名,它们包含了程序链接时所需的所有函数代码和接口信息。
  2. 系统启动相关文件/lib 目录还包含了一些启动时必需的文件,比如硬盘参数配置等。
  3. udev规则存储/lib/udev 子目录是Linux内核设备管理器udev的规则存储位置。udev负责在系统启动时创建和管理设备节点(如 /dev/sda),以及处理设备的热插拔事件。
  4. 权限控制:由于 /lib 目录中的文件对系统的稳定性和安全性至关重要,因此对这些文件的访问通常受到严格的权限控制。一般来说,只有root用户才有权限修改这些文件。
  5. 系统维护:系统管理员在维护系统时,可能需要更新或替换 /lib 目录下的库文件以确保系统的稳定运行和安全。
  6. 与 /usr/lib 区分:在现代Linux系统中,/lib 目录通常用于存放启动时必需的库文件,而 /usr/lib 目录用于存放系统运行时的库文件。这种区分有助于提高系统的可维护性和灵活性。

/media 目录

/media 目录在Linux系统中用于挂载可移动媒体设备,如CD-ROM、USB闪存驱动器和其他可移动存储设备。

以下是 /media 目录的一些关键信息:

  1. 挂载点:当用户插入一个可移动媒体设备(如U盘、CD等)时,系统通常会在/media目录下自动创建一个挂载点。这个挂载点通常是一个目录,其名称可能与设备卷标或设备名有关。
  2. 访问权限:由于 /media 目录通常用于存放用户数据,因此对其的访问权限相对宽松,普通用户通常可以读写自己设备的挂载点。
  3. 文件管理器操作:在图形界面环境下,用户可以通过文件管理器查看和操作/media目录下的挂载点。例如,在文件管理器中打开一个CD-ROM或U盘,实际上是访问了/media下的相应挂载点。
  4. 自动挂载:许多Linux发行版使用udev规则来管理设备的挂载,这意味着当设备被插入时,系统会自动识别并在/media目录下创建相应的挂载点。
  5. 持久性存储:需要注意的是,/media目录主要用于临时挂载可移动设备,而不是用于持久性存储。对于硬盘分区或其他需要长期挂载的设备,通常会在其他目录下创建挂载点,如/mnt/mount
  6. 安全性:虽然 /media 目录提供了方便的数据访问方式,但也可能存在安全风险。例如,如果恶意软件通过U盘传播,一旦U盘被挂载到/media,恶意软件就可能执行。因此,在使用可移动设备时,应始终谨慎并确保设备来源可靠。

/opt 目录

/opt目录在Linux系统中通常用于安装可选的应用程序软件

以下是/opt目录的一些关键信息:

  1. 可选软件包/opt目录是符合FHS(Filesystem Hierarchy Standard)标准的Linux和UNIX系统上用于安装可选应用程序的软件包的标准位置。它用于存放那些不属于系统默认安装的应用程序。
  2. 第三方应用:第三方应用程序,特别是那些不通过系统包管理器安装的应用,经常被放置在/opt目录下。这样做可以使得这些应用程序与系统默认的应用相隔离,便于管理和维护。
  3. 目录结构:在/opt目录下,每个应用程序或软件集通常都有自己的子目录,这个子目录的名称通常是软件的名称或版本号。例如,/opt/myapp/opt/myapp-1.2.3
  4. 可执行文件和库/opt目录下的应用程序通常会包含可执行文件、库文件、配置文件和其他支持文件,这些都是应用程序运行所必需的。
  5. 权限控制:由于/opt目录中可能包含敏感数据或复杂的应用程序,因此对这些文件的访问通常受到较严格的权限控制。只有具有适当权限的用户才能安装或更新/opt中的软件。
  6. 与 /usr/local 区分:虽然/opt/usr/local都用于存放用户安装的软件,但/usr/local更倾向于系统管理员安装的软件,而/opt则用于放置第三方应用程序。

/root 目录

/root目录在Linux系统中是root用户的主目录

以下是/root目录的一些关键信息:

  1. root用户主目录/root目录是Linux系统中root用户的家目录,类似于普通用户的/home目录下的个人文件夹。它用于存放root用户的个人配置文件和私人数据。
  2. 系统文件保护:由于root用户具有极高的权限,对系统文件的不当操作可能会带来安全风险。因此,将root用户的主目录定在/root,在一定程度上有助于保护系统文件不被误操作。
  3. 权限管理:只有root用户才有权限访问/root目录,这有助于保护root用户的个人信息和系统安全。普通用户即使通过其他方式获取了对/root目录的访问权,也只能看到root用户的个人文件,而不是系统文件。
  4. 系统维护:系统管理员在进行系统维护或配置更改时,通常会使用root用户身份登录,此时/root目录就成为了操作的起点。
  5. 安全性考虑:在某些Linux发行版中,默认情况下禁用了root用户登录,以增强系统的安全性。在需要的时候,可以通过设置启用root用户。
  6. sudo命令:在Linux系统中,为了减少以root用户身份执行日常任务的风险,通常建议使用sudo命令来临时提升权限执行特定的管理员命令,而不是直接登录为root用户。

/sbin 目录

/sbin目录在Linux系统中用于存放系统管理员专用的命令

以下是/sbin目录的一些关键信息:

  1. 系统管理工具/sbin目录中存放的是系统管理员用于系统维护和管理的工具,这些工具通常需要更高的权限才能运行。
  2. 启动和修复工具:除了系统管理工具外,/sbin还包含了一些对系统启动、恢复、修复至关重要的二进制文件。
  3. 权限限制:由于/sbin目录下的命令具有很高的权限,普通用户通常无法直接访问或执行这些命令。如果需要执行/sbin下的命令,用户需要使用sudo命令来获取管理员权限,或者使用su命令切换到root用户。
  4. 与 /bin 区分:与/bin目录存放的基本命令不同,/sbin目录中的程序通常是系统管理员在进行系统维护时才会使用到的特殊工具。
  5. 安全性:将高权限命令与普通用户可执行的命令分开存放,是Linux系统中的一种安全措施,用以防止未经授权的用户执行可能影响系统安全的操作。

/sys 目录

/sys目录在Linux系统中是一个虚拟文件系统,它提供了内核对象和属性的接口。

以下是/sys目录的一些关键信息:

  1. 内核对象信息/sys目录包含了各种内核对象(如进程、设备、文件系统等)的信息。这些信息通常以文件的形式存在,可以通过读取这些文件来获取相关对象的当前状态。
  2. 可写接口:某些/sys中的文件是可写的,允许用户通过写入这些文件来改变内核对象的属性或行为。例如,用户可以通过修改/sys/class/backlight/acpi_video0/brightness文件来调整笔记本电脑的屏幕亮度。
  3. 设备管理/sys/devices子目录包含了系统中所有设备的层次结构,用户可以浏览这个目录来查看和管理系统中的硬件设备。
  4. 文件系统管理/sys/fs子目录提供了关于系统支持的文件系统的信息,以及挂载点的状态。
  5. 性能监控/sys/block子目录中包含有关块设备(如硬盘和分区)的信息,可以用于监控系统的I/O性能。
  6. 安全性:由于/sys目录提供了对内核对象的直接访问,因此对其的访问通常受到权限控制,只有具有适当权限的用户才能读取或写入这些文件。
  7. 与 /proc 区分:虽然/sys/proc都是虚拟文件系统,提供有关系统内部状态的信息,但/sys更侧重于提供内核对象的静态信息,而/proc则包含了动态的运行时信息。

/usr 目录

/usr目录在Linux系统中用于存放用户安装的软件和文件

/usr目录是Unix和Linux文件系统结构中非常重要的部分,通常包含以下子目录:

  1. /usr/bin:这个目录存放用户可执行的二进制文件,如常用的命令和工具。
  2. /usr/lib:这里存放共享库文件和系统级别的函数库。
  3. /usr/include:该目录包含C/C++等编程语言的头文件,这些文件在软件开发过程中被引用。
  4. /usr/local:用户自行安装的软件和文件存放在这里,特别是那些不是通过操作系统默认的软件包管理系统安装的内容。
  5. /usr/share:共享的数据文件存放于此,比如文档、帮助手册、示例配置文件等。

此外,/usr目录曾是用户的家目录,即存放用户个人文件的地方,但现在这一角色已经由/home目录取代。