深入了解Linux文件权限的定义、查看及修改等

深入了解Linux文件权限的定义、查看及修改等

Linux以其强大而可靠的操作系统而闻名,它具有无与伦比的安全性、稳定性和灵活性。为了维护系统的完整性和安全性,Linux以 “权限” 的形式实现了特定设置。这些权限控制谁可以访问、修改或执行文件和目录。无论你是一个新的Linux用户还是一个经验丰富的老手,了解Linux的权限对于一个安全的系统是极其重要的。在这篇文章中,我们将深入探讨什么是Linux权限,以及如何以最佳方式保持你的文件和目录的安全。

了解Linux的权限

Linux文件权限是允许用户控制谁可以访问他们的文件的特定设置。在Linux中,每个文件或目录都有一组权限,分布在三个级别的系统用户中:

  • User:用户,这是指文件或目录的所有者。一般来说,创建文件/目录的用户是所有者。
  • Group:组,一个组是多个用户的集合,对一个文件或目录具有相同的权限。
  • Others:其他,每一个既不是所有者也不是组的成员的其他用户都属于这个类别。

这些用户中的每一个都有三种类型的文件权限,决定了用户可以执行的不同类型的操作:

  • Read (r):读取,允许用户查看一个文件或目录的内容。对于一个文件,读权限意味着用户可以打印和复制文件的内容。如果是目录,有了读的权限,用户可以查看和复制目录中的文件。
  • Write (w):写入,允许用户修改文件/目录的内容。当为一个用户设置了写权限时,该用户可以添加、删除甚至重命名文件或目录。
  • Execute (x):执行,允许用户执行文件或访问目录。这与我们在Windows上看到的情况形成鲜明对比,可执行文件有一个”.exe” 扩展名,用户可以简单地执行它。但在Linux中,如果文件对用户来说有可执行的权限,那么用户才可以执行它。
  • Dash (-):破折号,它意味着没有设置权限或没有权限。

如何查看Linux中的文件权限

现在你知道了Linux中存在哪些文件权限,让我们看看如何查看授予文件的权限。查看文件权限是非常容易的,你只需要使用这个命令:

ls -l

一旦你执行这个命令,你将看到当前位置的所有文件和目录的列表。你的输出将类似于下面的屏幕截图:

当前位置的所有文件和目录的列表

看起来很混乱?让我们试着用一个例子来理解这个问题:

Linux权限解释

在上述例子中:

  • 第一个字符(-)表示文件类型;’ - ‘表示该项目是一个文件,’ d ‘表示一个目录。
  • 接下来的九个字符指定了该条目的权限设置(后面会有更多介绍)。
  • 接下来的数字显示了该文件的链接数。默认情况下,该项目将有1。
  • 下一栏显示了文件所有者的名字
  • 接着下一栏显示哪个对该文件有访问权。
  • 倒数第三栏显示了文件的大小
  • 倒数第二栏显示了文件的最近修改时间
  • 最后一栏显示文件/目录的名称

Linux权限图解

在简化了 ls-l 命令的输出后,让我们用” rwxr-xr-- “的样本权限集来展开权限部分:

  • 这里,前3个字符,’ rwx ‘表示文件所有者有读(r),写(w),和可执行(x)的权限。
  • 接下来的3个字符,’ r-x ‘表示组内用户有读取(r)和可执行(x)的权限,但没有写入权限(-)。
  • 最后3个字符,’ r-- ‘表示所有其他用户只有读(r)权限。最后的两个破折号表示没有权限(在这种情况下没有写和执行的权限)。

因此,总的来说,前3个字符表示文件所有者的权限;第二组3个字符表示组内用户的权限,最后3个字符表示其他用户的权限。

如何改变Linux中的文件权限

要改变Linux中的文件权限,我们使用chmod命令,它代表了 “change mode”。使用chmod命令的基本语法是:

chmod <options> <permissions> <filename>

你可以与chmod搭配的一些命令选项是:

选项 描述
-v 为每个被处理的文件显示诊断信息
-c -v 的工作原理相同,只是如果有任何改变,它只显示一个诊断信息。
-f 用来抑制大多数错误信息。
-R 用来递归地改变文件和目录。

对于<权限>部分,你可以使用两种方法中的任何一种:

  • 绝对模式
  • 符号模式

chmod中的绝对模式

在这种模式下,权限是用1到7的3位数的组合(也称为八进制数)来指定的。这里,第一个数字对应于文件所有者,第二个数字对应于组用户,第三个数字对应于其他用户。在绝对模式下指定权限的基本语法是::

chmod <options> <permission_combination> <file_name>

你可以使用不同的数字组合来获取权限:

权限类型 数字
无权限 0
执行 1
写入 2
写入 + 执行 3 (i.e. 2+1)
读取 4
读取 + 执行 5 (i.e. 4+1)
读取 + 写入 6 (i.e. 4+2)
读取 + 写入 + 执行 7 (i.e. 4+2+1)

让我们看一个例子,使之更容易理解。假设你想为 “test.txt” 文件的所有用户设置读、写和执行的权限,那么使用这个命令:

chmod -v 777 test.txt

所有用户设置读、写和执行的权限

这是一个在Linux系统中相当频繁使用的命令,因此,我们准备了一份详细的指南,说明在Linux中chmod 777的含义。

如果你想为文件所有者设置只读权限,而对组和其他用户没有权限,你可以使用这个命令:

chmod -v 400 test.txt

为文件所有者设置只读权限

chmod中的符号模式

绝对模式的主要问题是你总是要为所有的用户提供权限设置,即使你需要为一个用户修改。

这就是符号模式开始发挥作用的地方。符号模式是比较常用的,因为它使用字母而不是数字,大多数用户认为这很难理解。除了便于用户使用外,你还可以用符号模式只为某个特定的用户设置权限,这与绝对模式不同。在chmod中使用符号模式改变文件权限的基本语法是:

chmod <options> <user_type><symbol><permission_set> <file_name>

在上面的语法中:

  • <user_type>指定了你要为之设置权限的用户类型。
  • <symbol>指的是’-‘、’+’和’=’,分别表示’删除’、’添加’和’等价’。
  • <permission_set>指的是你想为用户设置的权限。

在符号模式下,你可以将<user_types>指定为:

  • 文件所有者为’u’
  • 群组用户为’g’
  • 其他用户为’o’
  • 所有用户(三者的组合)为’a’或’ugo’。

对于<permission_set>部分,你可以使用以下任一组合:

权限类型 符号
无权限
执行 -x
写入 -w-
写入 + 执行 -wx
读取 r-
读取 + 执行 r-x
读取 + 写入 rw-
读取 + 写入 + 执行 rwx

现在让我们看看一些例子,看看我们如何在Linux中使用符号模式设置权限。假设你想为组设置执行权限,那么使用这个命令:

chmod -v g+x test.txt

为组设置执行权限

你甚至可以为不同的用户类型设置多个权限。例如,你想从其他用户类型中删除执行权限,并为文件所有者增加读、写和执行权限:

chmod o-x,u+rwx test.txt

从其他用户类型中删除执行权限,并为文件所有者增加读、写和执行权限

在Linux中改变文件/目录的所有者和组

假设你需要拥有所有的权限,但又不想与组内的用户分享权限。在这种情况下,你可以使用 chown (改变所有者)命令来改变文件所有者。改变所有者的语法非常简单:

chown <new_user_name> <filename_or_directory_name>

例如,如果你想把文件test.py的所有者改为root,你可以使用这个命令:

sudo chown root test.py

把文件test.py的所有者改为root

注意:为了改变文件所有者,你需要有root权限。如果你没有root权限,那么只需使用 ” sudo ” 命令来获得root权限。

如果你需要改变一个文件的组,使用 chgrp 命令:

chgrp <new_group_name> <filename_or_directory_name>

例如,如果你想把组改为test,使用 chgrp 命令:

sudo chgrp test test.txt

把组改为test

注意:没有两个组可以是同一个文件/目录的所有者。如果你想知道如何将一个新的用户添加到一个组,请查看我们关于如何将一个新用户添加到一个组的指南。

管理文件权限是最重要的,特别是在多用户环境中。通过定期检查你的Linux系统上的文件权限,你可以确保你的敏感文件保持安全,不被人窥视。我们希望这篇文章能帮助你理解这个基本概念,如果你有任何疑问,请在评论中告诉我们。

评论留言