偶尔的停顿和修整,对于人生是非常必要的。 --随记
文章目录
- Linux目录
- 目录结构
- 磁盘分区
- 相关命令
- 相对路径和绝对路径
- 文件权限
- 用户分类
- umask
- 创建文件权限计算方法
- 粘滞位
- 总结
Linux目录
目录结构
Linux 操作系统采用了一种层次化的目录结构,常被称为标准的 Linux 文件系统层次结构(Filesystem Hierarchy Standard,缩写为 FHS)。
Linux 目录结构的主要内容:
目录名 | 说明 |
---|---|
/(根目录) | Linux 文件系统的最顶层,包含了所有其他目录和文件。 |
/bin | 存放系统可执行程序(二进制文件),如常用的命令(ls、cp、rm等)。 |
/boot | 包含启动 Linux 系统所需的文件,如内核、引导加载程序和配置文件。 |
/dev | 存放设备文件,Linux 将硬件设备视为文件的形式进行访问和管理,如磁盘、键盘、鼠标等。 |
/etc | 存放系统的配置文件,包括网络配置、用户配置、服务配置等。 |
/home | 每个用户的主目录,用户的个人文件和设置存放在这里。 |
/lib | 存放系统所需的共享库文件,这些库文件被可执行程序使用。 |
/media | 用于挂载可移动媒体设备(如光盘、USB 等)的挂载点。 |
/mnt | 临时挂载点,用于临时挂载其他文件系统,如挂载网络共享目录。 |
/opt | 用于存放可选的应用程序包,通常由第三方供应商提供,与系统自带的软件包分开。 |
/proc | 虚拟文件系统,提供有关系统内核和进程的信息,用于访问和配置内核参数。 |
/root | 超级用户(root)的主目录。 |
/sbin | 存放系统管理员使用的系统管理程序,这些程序通常需要超级用户权限才能运行。 |
/srv | 存放服务(如网站、FTP)提供的数据,用于存储由特定服务提供的数据。 |
/tmp | 存放临时文件,系统或用户创建的临时文件将存放在这里。 |
/usr | 存放用户程序和文件,包括用户安装的软件、库文件、文档等。 |
/var | 存放经常变化的文件,如日志文件、邮件、数据库文件等。 |
这些是 Linux 文件系统中的一些主要目录,它们的用途和功能各不相同,有助于组织和管理系统的文件和配置。
注意,不同的 Linux 发行版(如 Ubuntu、CentOS)可能会有一些细微的差异,但总体上保持了相似的目录结构。
磁盘分区
在 Linux 下,磁盘分区是将物理硬盘划分为不同的逻辑部分,每个分区可以作为一个独立的文件系统进行使用。磁盘分区可以提供数据隔离、性能优化、安全性和灵活性等优势。在 Linux 系统中,常用的磁盘分区方案包括以下几种:
分区 | 说明 |
---|---|
主分区 | 主分区是在硬盘上进行的最基本的分区类型。一个硬盘最多可以有四个主分区,其中一个可以设为扩展分区。 |
扩展分区 | 扩展分区是用来划分逻辑分区的容器。一个扩展分区可以容纳多个逻辑分区,以便充分利用硬盘空间。 |
逻辑分区 | 逻辑分区是在扩展分区内创建的分区。逻辑分区的数量没有限制,可以根据需要创建。 |
引导分区 | 引导分区是用于存放引导加载程序和引导配置文件的分区。通常位于硬盘的开头部分,并具有启动标志。 |
根分区 | 根分区是 Linux 系统的根文件系统所在的分区。它包含了操作系统的核心文件和目录结构。 |
/home 分区 | /home 分区是用于存放用户主目录的分区。将用户数据和设置分离到独立的分区可以方便进行备份和恢复。 |
/boot 分区 | /boot 分区是存放启动所需文件的分区,包括内核、引导加载程序和配置文件。 |
交换分区 | 交换分区是用于虚拟内存(Swap)的分区。当系统内存不足时,部分数据可以转移到交换分区以释放内存。 |
在实际使用中,可以根据需求和实际情况选择适当的磁盘分区方案。分区的大小、数量和布局应根据系统的需求、硬件配置和预期的用途来进行规划。可以使用一些工具如 fdisk、parted 等来进行分区的创建和管理。
相关命令
在 Linux 系统中,你可以使用以下几种命令来查看已经存在的磁盘分区,这些命令可以帮助你查看和了解系统中已存在的磁盘分区的信息。但是需要注意,在使用这些命令时,可能需要使用超级用户权限(使用 sudo 前缀)来访问有关硬件和分区的详细信息。
fdisk 命令:fdisk 是一个强大的命令行工具,用于分区表的创建和管理。你可以使用以下命令查看磁盘分区信息:
sudo fdisk -l
上述命令将列出系统中所有硬盘的分区信息,包括设备名称、分区类型、起始和结束扇区等。
parted 命令:parted 是一个分区编辑器,提供了更高级的功能和交互界面。你可以使用以下命令启动 parted,然后检查分区信息:
sudo parted (parted) print all
上述命令将打印出所有磁盘的分区信息,包括分区号、起始和结束扇区、文件系统类型等。
lsblk 命令:lsblk 命令用于列出块设备的信息,包括磁盘和分区。你可以使用以下命令查看磁盘和分区的层次结构:
lsblk
上述命令将显示系统中所有块设备的层次结构,包括磁盘、分区和挂载点。
df 命令:df 命令用于显示文件系统的磁盘空间使用情况,包括分区的挂载点和可用空间。你可以使用以下命令查看分区的挂载点和空间使用情况:
df -h
上述命令将显示已挂载的文件系统的使用情况,包括分区的挂载点、总空间、已用空间和可用空间。
相对路径和绝对路径
在计算机系统中,相对路径和绝对路径是用于定位文件或目录位置的两种不同方式。
- 相对路径:相对路径是相对于当前工作目录(当前所在位置)的路径。它描述了如何从当前位置导航到目标文件或目录的路径。相对路径没有以根目录(/)开头。
例如,假设当前工作目录是/home/user/,而目标文件位于同一目录下的documents/file.txt,那么相对路径就是documents/file.txt。相对路径的优点是简洁,但需要确保当前工作目录的正确性,因为更改工作目录可能会影响相对路径的解析。
- 绝对路径:绝对路径是从根目录(/)开始的完整路径,它提供了文件或目录在文件系统中的完整位置。
例如,一个文件的绝对路径可以是/home/user/documents/file.txt,其中/表示根目录,home是根目录下的子目录,依次类推。绝对路径的优点是确定性,不受当前工作目录的影响,可以准确地定位文件或目录。
无论是相对路径还是绝对路径,它们都用于在文件系统中定位文件或目录。选择使用哪种路径取决于具体的需求和使用场景。相对路径适用于在当前位置进行相对导航的情况,而绝对路径则提供了更确切和独立的位置信息。
文件权限
用户分类
在Linux中,文件权限包括了对文件的读取、写入和执行的权限。文件权限按照用户分类,主要分为以下三个类别:
-
用户(User):用户是文件的拥有者,即文件的创建者或所有者。用户权限通常表示为文件权限中的第一组,用于指定文件所有者对文件的访问权限。
-
组(Group):组是用户的集合,可以将多个用户归为同一组。每个文件都可以属于一个主要组。组权限通常表示为文件权限中的第二组,用于指定文件所属组中的用户对文件的访问权限。
-
其他人(Other):其他人是除了文件所有者和所属组的用户之外的所有用户。其他人权限通常表示为文件权限中的第三组,用于指定其他用户对文件的访问权限。
在文件权限中,每个类别都有自己的权限设置,通常用以下符号来表示:
- r(读取权限):表示可以读取文件内容。
- w(写入权限):表示可以修改或写入文件内容。
- x(执行权限):表示可以执行文件(对于可执行文件)或者进入该目录(对于目录)。
使用数字表示权限时,r、w、x 分别对应数字 4、2、1。通过将这些数字相加,可以表示不同类别的权限组合。例如,权限设置为 rwxr-x— 表示用户具有读取、写入和执行权限,组具有读取和执行权限,其他人没有任何权限。这种基于用户分类的文件权限系统,使得可以根据用户的身份和所属组来限制对文件的访问和操作,提供了一定的安全性和细粒度的权限控制。
umask
umask(用户文件创建掩码)在Linux中用于确定新创建文件或目录的默认权限的设置。它指定了在创建新文件或目录时,文件系统应该屏蔽的权限位。umask 的值是一个八进制数,用于表示禁止设置的权限位。它的计算方式是将所需的权限从完全权限(通常是 777)中减去。umask 的作用是确保新创建的文件和目录不会自动获得过于宽松的权限,从而提高系统的安全性。
默认情况下,umask 的值通常是 0002。这意味着在创建新文件时,其他人(其他用户)不会被授予写入权限,而对于新创建的目录,其他人没有写入和执行权限。
umask 值的具体设置可能因操作系统和用户环境而有所不同。某些系统可能使用不同的默认 umask 值,或者用户可能在其配置文件中自定义了 umask 值。要查看当前系统中的 umask 值,可以在终端中运行 umask
命令。它将显示当前的 umask 值。
如果需要更改 umask 值,可以使用 umask
命令。例如,要将 umask 设置为 0002,可以运行以下命令:
umask 0002
这将更改当前会话的 umask 值。如果要使更改永久生效,可以将 umask 值添加到 shell 的配置文件(例如 ~/.bashrc
或 ~/.profile
)中。
创建文件权限计算方法
-
确定所需的权限。根据文件的需求,确定用户、组和其他人所需的权限,例如读取、写入和执行权限。
-
确定 umask 的值。
-
将所需权限转换为对应的八进制数。例如,读取权限(r)对应 4,写入权限(w)对应 2,执行权限(x)对应 1。
-
计算权限。对于每个权限位,将所需权限与 umask 的反码进行按位与操作,以获取最终的权限设置。
-
应用权限。使用
chmod
命令将计算得到的权限应用于文件。
例如,假设要创建一个文件,用户需要读取、写入和执行权限,组需要读取和执行权限,其他人不需要任何权限,并且当前的 umask 值是 0002。
计算步骤如下:
用户权限:rwx = 4 + 2 + 1 = 7
组权限:r-x = 4 + 0 + 1 = 5
其他人权限:— = 0 + 0 + 0 = 0
umask 的反码:0002 的反码是 0775。
计算结果:
用户权限:7 & ~0 = 7
组权限:5 & ~0 = 5
其他人权限:0 & ~2 = 0
最终的权限设置为:rwxr-x—。
然后,可以使用 chmod
命令将权限应用于文件:
chmod 750 filename
请注意,umask 的默认值通常是 0002,这意味着默认情况下其他人(其他用户)无法进行写入和执行操作。这样可以确保新创建的文件对其他人是只读的。
粘滞位
粘滞位(Sticky Bit)是一种特殊的权限位,用于设置目录的权限。当粘滞位设置在目录上时,只有目录所有者、文件所有者和超级用户能够删除或重命名该目录下的文件,即使其他用户对该目录拥有写权限。
粘滞位通常用于公共目录,例如 /tmp
目录,以确保只有文件的所有者能够删除或修改自己的文件,而其他用户不能删除或修改他人的文件。粘滞位可以通过设置目录的权限来启用,使用数字形式权限设置时,粘滞位的权限位表示为 1,使用符号形式权限设置时,粘滞位的符号为 “t” 或 “T”。
- 当粘滞位设置为 “t” 时,表示粘滞位已启用,并且其他用户不能删除或重命名目录下的文件,即使他们对目录有写权限。
- 当粘滞位设置为 “T” 时,表示粘滞位已启用,但其他用户可以删除或重命名目录下的文件,前提是他们对目录有写权限。
要启用粘滞位,可以使用 chmod
命令和数字形式或符号形式来设置目录的权限。以下是一些示例:
使用数字形式设置粘滞位为 “t”:
chmod 1755 directory
使用符号形式设置粘滞位为 “t”:
chmod +t directory
使用符号形式设置粘滞位为 “T”:
chmod +T directory
要检查目录是否设置了粘滞位,可以使用 ls
命令并查看权限列表。在粘滞位启用的目录中,权限列表中的最后一位会显示为 “t” 或 “T”。
总结
文章首先介绍了Linux中的目录相关知识,例如目录结构、磁盘分区等,然后对文件的权限等细节进行介绍,例如用户的分类,文件掩码以及创建文件权限的计算方式和粘滞位。希望文章对你有帮助!