lyy1234

导航

 

Linux 文件权限是指对于每个文件和目录,系统会为其分配三种权限:读取、写入和执行。这三种权限又各有三种不同的用户组可以进行访问,包括用户自身、用户所在的用户组、以及其他所有用户。

文件的所有者可以使用命令 `chmod` 来更改文件的权限,命令格式如下:

chmod [模式] 文件名

其中,模式指定为三个数字,每个数字代表一个用户组的权限。第一个数字代表文件所有者的权限,第二个数字代表拥有相同组ID的用户组的权限,第三个数字则代表其他用户的权限。

在 Linux 文件权限中,读写执行权限均用数字来表示,代表如下含义:

`4` 表示可读权限,`r` 代表读取权限;
`2` 表示可写权限,`w` 代表修改权限;
`1` 表示可执行权限,`x` 代表执行权限。

每种用户组都可以使用上述数字来设定文件权限。例如,设定一个文件为 `-rw-r--r--`,其中第一个字母代表文件类型,- 表示文件,r 表示可读,w 表示可写,x 表示可执行。接下来的三个字符 `rw-` 表示文件所有者有读写权限,即 `4+2=6`;之后的 `r--` 表示相同组ID的用户组只有读取权限,即 `4`;最后的 `r--` 表示其他用户也只有读取权限,即 `4`。

我们可以使用 `ls -l` 命令来查看文件的权限和所有权信息,例如:

-rw-r--r-- 1 username users 1234 Nov 26 2023 example.txt

其中,第一个字符代表文件类型。接下来的 9 个字符可以用数字来表示。例如 `-rw-r--r--` 可以表示为 `644`。

为了更好的管理文件和目录的权限,建议在创建文件和目录的时候就指定好文件的所属用户组,以及对应的权限。这样可以有效地提高系统安全性,避免恶意用户更改文件的权限和读取敏感信息。

 

除了基本的文件权限,Linux 还提供了一些特殊的权限和属性,用于进一步控制文件和目录的访问和操作。

1. SUID:Set User ID 是一种特殊权限,可以让可执行程序在运行时获得文件所有者的权限而不是运行者的权限。这对于一些需要特定权限才能执行的程序很有用。例如,当普通用户执行具有 SUID 权限的密码更改程序时,程序将以 root 用户的权限来执行,以便修改密码文件。

2. SGID:Set Group ID 类似于 SUID,但是它是应用于目录的。当 SGID 权限被设置在目录上时,新创建的文件将继承目录的组所有权,而不是创建者的组所有权。这对于多个用户需要共享访问权限的目录非常有用。

3. Sticky Bit:当 Sticky Bit 被设置在目录上时,只有文件所有者可以删除或重命名文件,其他用户只能对自己拥有的文件进行删除或重命名操作。这在共享目录中有很大的作用,可以防止其他用户删除或更改他人的文件。

4. ACL(Access Control List):ACL 允许在文件或目录上分配更细粒度的权限,包括给特定用户或用户组授予特定的权限。ACL 提供了更灵活和精确的权限控制,可以适应更复杂的需求。使用 `getfacl` 和 `setfacl` 命令可以查看和设置文件的 ACL。

除了权限外,Linux 文件系统还有一些重要的属性:

1. 所有者和用户组:每个文件和目录都有一个所有者和用户组,用于控制访问权限。文件所有者可以更改文件的权限和属性。

2. 文件类型和链接:在文件权限前的第一个字符表示文件类型。常见的类型包括 `-`(普通文件)、`d`(目录)、`l`(符号链接)等。

3. 文件时间戳:Linux 记录了每个文件的三个时间戳,分别是访问时间(atime)、修改时间(mtime)和更改时间(ctime)。这些时间戳可以用来跟踪文件的访问和修改历史。

通过正确地理解和使用 Linux 文件权限和属性,您可以更好地管理和保护您的文件和目录。确保为每个文件和目录分配适当的权限,避免滥用和误操作。同时,了解和使用特殊权限和属性,可以增加更高级别的访问控制和灵活性。

 

除了上述提到的文件权限和属性,还有一些重要的知识点需要了解。

1. umask:umask 是掩码的缩写,用于确定在新建文件或目录时应该删除哪些权限位。实际上,umask 值是从文件的默认权限中“减去”掩码中的值。默认情况下,umask 是 0022,表示在新建文件时应该删除“其他用户”的写权限。在新建目录时应该删除“其他用户”的写和执行权限,这是为了防止其他用户访问新建的目录。

要更改 umask 值,可以使用命令 `umask`。例如,将 umask 值更改为 077,可以使用命令 `umask 077`。

2. chown:chown 命令可以更改文件或目录的所有者和用户组。它的基本格式如下:

chown [选项] 用户名 文件名

其中,选项可以用来指定更改用户组或递归更改子目录和文件的所有权。

3. chgrp:chgrp 命令是用来修改文件或目录所属的用户组,其基本格式如下:

chgrp [选项] 用户组 文件名

4. chmod:chmod 命令用于更改权限,我们已经提到过了。在此重申一下,chmod 命令的基本格式如下:

chmod [选项] 模式 文件名

其中,模式代表新的权限模式,例如“777”表示所有用户都有读、写、执行权限,而“755”表示文件所有者有读、写、执行权限,相同组ID的用户组和其他用户只有读和执行权限。

总之,Linux 文件权限和属性是系统管理和安全性的核心组成部分。在使用 Linux 时,熟练掌握文件权限和属性的基本知识是非常必要的。掌握这些知识,可以在保证文件和目录的安全性的同时,提高系统的效率和可靠性。

posted on 2023-11-26 23:18  摆烂的大王  阅读(129)  评论(0编辑  收藏  举报