Skip to content

Linux 目录介绍 #28

Description

@mirages

Linux 目录介绍

参考文档:

640

1. 根目录(/)

根目录是整个文件系统的顶级目录,所有其他目录和文件都是从根目录开始的。

2. /bin

/bin 目录包含一些基本的可执行文件,这些文件时系统启动和运行所必需的。例如包含一些常用的命令 ls,cp,rm 等,有时该目录会直接软连接到 /usr/bin 目录。

该目录下的命令都是基本命令,所有的用户都可以执行,是所有用户与系统沟通互动的基础。而 /sbin 中存放是管理员专用的命令,用于系统维护和管理。

3. /boot

/boot 目录包含启动加载程序(bootloader)的相关文件,包括内核映像文件和引导配置文件。在启动过程中,系统会使用 /boot 目录下的文件来引导操作系统。

4. /dev

/dev 目录包含设备文件,这些文件用于与系统中的设备进行交互。在 Linux 中一切都被视为文件,设备文件用于访问硬件设备,如磁盘、键盘、鼠标等。

  • /dev/zero - 是一个特殊的文件,它会提供无限的空字符(NULL, ASCII NUL, 0x00)。典型的用法就是用它提供的字符流来覆盖信息,另一个就是用它产生一个特定大小的空白文件(例如虚拟内存的交换文件)。
  • /dev/null - 称为空设备文件,他丢弃一切写入其中的数据(但报告写入成功),如果读取它则会立即得到一个 EOF。常用于丢弃不需要的输出流。

EOF 是什么?全称是 End Of File 表示流文件的结尾,既可以表示普通文件(file)的结束,也可以表示标准输入(stdin)的结束。

5. /etc

/etc 目录包含系统的配置文件。这些配置文件用于设置系统的各种参数和选项,例如网络配置、用户账户配置、服务配置等。/etc 目录中的文件对系统的正常运行至关重要。

  • /etc/fstab - fstab 是 file system table 的意思,即文件系统表。它在开机的时候告诉系统挂载哪些分区、挂载点是什么、以什么格式挂载、挂载的选项等。系统在开机的时候就根据fstab内容,执行挂载操作,挂载完之后,就可以在文件系统上进行操作。(虚拟内存 Swap 交换文件如果需要开机自动挂载,就需要在该文件中进行配置)

6. /home

/home 目录是用户的主目录(也就是 ~ 所表示的目录),每个用户都有一个与其用户名相对应的子目录。用户可以在自己的主目录中存储个人文件和配置。root 用户的主目录不在该目录下,它在单独的 /root 目录下。

7. /lib 和 /lib64

/lib/lib64 目录包含共享库文件,这些库文件是应用程序和系统工具所需的共享组件。/lib 目录用于 32 位系统,而且有时会直接软连接到 /usr/lib 目录下;/lib64 目录用于 64 位系统,而且有时会直接软连接到 /usr/lib64 目录下。

8. /media

/media 目录用于挂载可移动设备,如光盘、USB驱动器等。当插入可移动设备时,系统会自动将其挂载到该目录下的子目录中。

9. /mnt

/mnt 目录用于临时挂载其他文件系统和网络共享。管理员可以将其他设备或远程共享挂载到该目录中,以便访问其内容。

10. /opt

/opt 目录用于安装第三方软件包。一些应用程序将其安装在该目录下,以便与系统的其他部分分离。

11. /proc

/proc 目录是一个虚拟文件系统,提供有关系统和进程的信息。系统管理员和开发人员可以通过读取该目录下的文件来获取关于系统状态、进程信息、硬件配置等的实时数据。

虚拟文件系统,简称 VFS(Virtual Filesystem),是一个内核软件层。它是物理文件系统和服务之间的一个接口层,它对每个文件系统的细节进行抽象,使得不同的文件系统在 Linux 核心以及系统中运行的其他进程来看,都是相同的。

/sys 目录也是一个虚拟文件系统

12. /root

/root 目录是 root 用户的主目录。只有 root 用户可以访问和操作该目录。

13. /run

/run 目录是一个临时文件系统,用于存储在系统引导过程中需要保存的运行时数据。例如 PID 文件、锁文件等。

  • /run/user 目录包含与用户相关的运行时数据。每个用户都有一个与其用户ID相对应的子目录,用于存储用户特定的运行时数据。

14. /sbin

/sbin 目录包含系统管理员使用的一些系统命令和工具,例如 ifconfig 命令等。这些命令和工具通常用于系统管理和维护任务,例如停止和启动服务、网络配置等。

15. /srv

/srv 目录用于存储系统服务提供的数据。例如,web 服务器可以将网站数据存储到该目录下。

16. /sys

/sys 目录是一个虚拟文件系统,用于提供关于系统硬件和设备的信息。它是与该目录下的文件进行交互的一种方式。

17. /tmp

/tmp 目录用于存储临时文件。该目录中文件通常会在系统重启后被删除。应注意定期清理该目录,确保它不会占用过多的磁盘空间。

19. /usr

/usr 目录包含用户的应用程序和文件。这是 Linux 系统中最大的目录之一,它通常包含共享的可执行文件、库文件、文档、图表等。

usr 是 Unix Shared Resources(Unix 共享资源)的缩写

  • /usr/include 这个目录用于存放 C/C++ 等编程语言的头文件,通常被编译器用来生成程序。它与 /usr/lib 目录作用是一样的。
  • /usr/local 本地安装的应用和文件一般存放在该目录下,它与 /usr 的目录结构很相似。

20. /var

/var 目录用于存储可变数据,例如日志文件、缓存文件、临时文件。该目录中的文件通常会在系统运行时频繁变化。

Linux 文件基本属性

对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。同时在 Linux 中,用户是按组分类的,一个用户属于一个或多个组。因此文件所有者以外的用户又可以分为文件所属组的同组用户和其他组用户。

因此 Linux 系统中按文件所有者,文件所有者同组用户和其他用户来规定文件的访问权限。但是对于 root 用户来说,一般情况下文件的权限对其不起作用。

file-llls22

通过 ls -l 命令可以查看文件的一些基本属性:

[root@www /]# ls -l
total 64
dr-xr-xr-x 2 root root 4096 Dec 14 2012 bin
dr-xr-xr-x 4 root root 4096 Apr 19 2012 boot

1. 第一列

第一列 dr-xr-xr-x 一共有 10 位,其中第一位表示文件的类型,后边每三位为一组,表示不同用户的访问权限。

文件的类型有:

  • d - 表示目录文件
  • - - 表示普通文件
  • l - 表示链接文件(link file)
  • b - 表示块设备文件,例如 U盘等随机存储设备
  • c - 表示字符设备文件,例如键盘、鼠标等(一次性读取设备)
  • s - 表示套接字文件
  • p - 表示管道文件

文件的权限属性由 r, w, x 三位组合而成:

  • r - 表示可读,如果为 - 表示没有读权限
  • w - 表示可写,如果为 - 表示没有写权限
  • x - 表示可执行,如果为 - 表示没有执行权限

第一个三位 r-x 表示文件所有者(owner)拥有的权限。该示例中表示只有读、执行权限,没有写入权限

第二个三位 r-x 表示文件所有者同组用户(group)所拥有的权限。该示例中表示只有读、执行权限,没有写入权限

第三个三位 r-x 表示其他用户(others)所拥有的权限。该示例中表示只有读、执行权限,没有写入权限

2. 第二例

第二列的数字表示链接数,有多少个文件链接到 inode 号码。

3. 第三列

第三列表示拥有者的用户名

4. 第四列

第四列表示拥有者所属的用户组名

5. 第五列

第五列表示文件大小,单位字节

6. 第六列

第六列表示文档的最后修改时间

7. 第七列

第七列表示文件名称,以 . 开头的属于隐藏文件

更改文件属性

  1. chgrp 修改文件的所属群组
  • chgrp [-R] 属组名 文件名 - -R 表示递归更改
  1. chown 更改文件所有者或所属组
  • chown [-R] 所有者 文件名 - 修改文件的所有者
  • chown [-R] 所有者:所属组 文件名 - 修改文件的所属组
  1. chmod 修改文件的 rwx 读、写、执行权限
  • chmod [-R] xyz 目录或文件名 - 修改文件读写执行权限,其中 x、y、z 就分别表示 owner、group、others 数字类型的权限。例如 x=7 (二进制为 111)就表示 rwx,文件所有者可读写执行;y=5 (二进制为 101)就表示 r-x,文件同组用户可读可执行;z=1 (二进制为 001)就表示 --x,其他用户只能执行文件。
  • chmod [u|g|o|a][+|-|=][r|w|x] 目录或文件名 - u 表示文件所有者,g 表示同组用户,o 表示其他用户,a 表示所有用户;+ 表示加入权限,- 表示减去权限,= 表示设定权限。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    linuxlinux commad

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions