Linux / Unix 中的文件权限:如何读取、写入和更改?

Linux是UNIX的克隆,UNIX是一种可以被多个用户同时访问的多用户操作系统。Linux也可以在大型机和服务器上使用,无需任何修改。但这会引发安全问题,因为不受欢迎或恶意的用户可能会损坏、更改或删除关键数据。为了实现有效的安全,Linux将授权分为两个级别。

  1. 所有权
  2. 权限

Linux 文件权限所有权的概念在Linux中至关重要。在这里,我们将解释Linux权限和所有权,并讨论两者。让我们从所有权开始。

如果视频无法访问,请点击此处

Linux 文件所有权

您的Unix/Linux系统上的每个文件和目录都指定了以下3种所有者。

用户

用户是文件的所有者。默认情况下,创建文件的人成为其所有者。因此,用户有时也称为所有者。

分组

用户组可以包含多个用户。属于该组的所有用户将拥有相同Linux组的权限来访问文件。假设您有一个项目,其中许多人需要访问一个文件。您可以将所有用户添加到组中,然后为文件分配组权限,以便只有该组的成员才能读取或修改文件,而无需手动为每个用户分配权限。

其他

任何有权访问文件的其他用户。这个人既没有创建文件,也不属于可以拥有该文件的用户组。实际上,这意味着所有其他人。因此,当您为其他人设置权限时,它也被称为对全世界设置权限。

现在,最大的问题来了:Linux如何区分这三种用户类型,以便用户“A”不能影响包含其他用户“B”的文件的重要信息/数据?这就好比您不希望在您的Linux电脑上工作的同事查看您的图片。这就是权限发挥作用的地方,它们定义了用户行为

让我们来理解Linux上的权限系统

Linux 文件权限

您UNIX/Linux系统上的每个文件和目录都为上述所有3种所有者定义了以下3种权限。

  • 读取:此权限授予您打开和读取文件的权限。目录上的读取权限授予您列出其内容的权限。
  • 写入:写入权限授予您修改文件内容的权限。目录上的写入权限授予您在目录中添加、删除和重命名文件的权限。考虑一种情况,您对文件有写入权限,但对存储该文件的目录没有写入权限。您将能够修改文件内容。但您将无法重命名、移动或从目录中删除该文件。
  • 执行:在Windows中,可执行程序通常具有“.exe”扩展名,您可以轻松运行它。在Unix/Linux中,除非设置了执行权限,否则您无法运行程序。如果未设置执行权限,您可能仍然能够查看/修改程序代码(前提是设置了读写权限),但无法运行它。

Linux File Permissions
Linux/Unix中的文件权限

让我们通过示例查看Linux中的文件权限

终端上的ls – l会给出

ls - l

Linux File Permissions

这里,我们重点关注了‘-rw-rw-r–‘,这段看起来奇怪的代码告诉我们授予所有者、用户组和所有人的Unix权限。

这里,第一个‘‘表示我们选择的是一个文件。

Linux File Permissions

否则,如果它是一个目录,就会显示d

Linux File Permissions

这些字符很容易记住。

r = 读取权限
w = 写入权限
x = 执行权限
= 无权限

让我们这样看。

代码的第一部分是‘rw-‘。这表明所有者“Home”可以

Linux File Permission

  • 读取文件
  • 写入或编辑文件
  • 由于执行位设置为‘-’,他无法执行该文件。

根据设计,许多Linux发行版,如Fedora、CentOS、Ubuntu等,会将用户添加到与用户名同名的组中。因此,用户“tom”会被添加到名为“tom”的组中。

第二部分是‘rw-‘。它用于用户组“Home”,组内成员可以

  • 读取文件
  • 写入或编辑文件

第三部分是为所有人(即任何用户)设置的。它显示为‘r–’。这意味着该用户只能

  • 读取文件

 Linux File Permissions

使用“chmod”命令更改Linux中的文件/目录权限

假设您不想让同事查看您的个人图片。这可以通过更改文件权限来实现。

我们可以使用‘chmod’命令,它是“change mode”的缩写。使用此命令,我们可以为文件/目录的所有者、组和所有人设置权限(读取、写入、执行)。

语法

chmod permissions filename

有2种使用命令的方法——

  1. 绝对模式
  2. 符号模式

Linux中的绝对(数字)模式

在此模式下,文件权限不表示为字符,而是三位八进制数

下表为所有权限类型提供了数字。

数字 权限类型 符号
0 无权限
1 执行 –x
2 写入 -w-
3 执行+写入 -wx
4 读取 r–
5 读取+执行 r-x
6 读+写 rw-
7 读+写+执行 rwx

让我们看看chmod权限命令的实际应用。

Absolute(Numeric) Mode in Linux

在上面提供的终端窗口中,我们将文件“sample”的权限更改为“764”。

Absolute(Numeric) Mode in Linux

‘764’绝对代码表示以下含义:

  • 所有者可以读、写和执行
  • 用户组可以读和写
  • 所有人只能读

这显示为‘-rwxrw-r–’

这就是如何通过分配绝对数字来更改文件上的用户权限。

Linux中的符号模式

在绝对模式下,您可以更改所有3个所有者的权限。在符号模式下,您可以修改特定所有者的权限。它利用数学符号来修改Unix文件权限。

运算符 描述

+

向文件或目录添加权限

删除权限

=

设置权限并覆盖之前设置的权限。

各种所有者表示为——

用户表示

u

用户/所有者

g

o

其他

a

全部

我们将不使用像755这样的数字来表示权限,而是使用rwx这样的字符。让我们看一个例子

Symbolic Mode in Linux

更改Linux中的所有权和组

要更改文件/目录的所有权,可以使用以下命令

chown user filename

如果您想更改文件或目录的用户和组,请使用命令

chown user:group filename

让我们看看实际操作

Changing Ownership and Group in Linux

如果您只想更改组所有者,请使用命令

chgrp group_name filename

chgrp’代表更改组。

Changing Ownership and Group in Linux

提示

  • 文件/etc/group包含系统中定义的所有组
  • 您可以使用“groups”命令查找您是成员的所有组
  • Changing Ownership and Group in Linux

  • 您可以使用newgrp命令作为默认组以外的其他组的成员进行工作
  • Changing Ownership and Group in Linux

  • 您不能让2个组拥有同一文件。
  • Linux中没有嵌套组。一个组不能是另一个组的子组
  • 目录的x-执行意味着允许“进入”一个目录并可能访问子目录
  • 在文件和目录上可以设置其他权限,这些将在后续的高级教程中介绍

摘要

  • Linux作为多用户系统,使用权限和所有权来保障安全。
  • Linux系统上有三种用户类型:用户、组和其他。
  • Linux将文件权限分为读、写和执行,分别用r、w和x表示。
  • 文件的权限可以通过‘chmod’命令更改,该命令可进一步分为绝对模式和符号模式。
  • ‘chown’命令可以更改文件/目录的所有权。使用以下命令:chown user file 或 chown user:group file。
  • ‘chgrp’命令可以更改组所有权chgrp group filename
  • 目录的x-执行意味着什么?A:允许“进入”目录并可能访问子目录。