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
一旦你执行这个命令,你将看到当前位置的所有文件和目录的列表。你的输出将类似于下面的屏幕截图:
看起来很混乱?让我们试着用一个例子来理解这个问题:
在上述例子中:
- 第一个字符(-)表示文件类型;’
-
‘表示该项目是一个文件,’d
‘表示一个目录。 - 接下来的九个字符指定了该条目的权限设置(后面会有更多介绍)。
- 接下来的数字显示了该文件的链接数。默认情况下,该项目将有1。
- 下一栏显示了文件所有者的名字。
- 接着下一栏显示哪个组对该文件有访问权。
- 倒数第三栏显示了文件的大小。
- 倒数第二栏显示了文件的最近修改时间。
- 最后一栏显示文件/目录的名称。
在简化了 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
注意:为了改变文件所有者,你需要有root权限。如果你没有root权限,那么只需使用 ” sudo
” 命令来获得root权限。
如果你需要改变一个文件的组,使用 chgrp
命令:
chgrp <new_group_name> <filename_or_directory_name>
例如,如果你想把组改为test,使用 chgrp
命令:
sudo chgrp test test.txt
注意:没有两个组可以是同一个文件/目录的所有者。如果你想知道如何将一个新的用户添加到一个组,请查看我们关于如何将一个新用户添加到一个组的指南。
管理文件权限是最重要的,特别是在多用户环境中。通过定期检查你的Linux系统上的文件权限,你可以确保你的敏感文件保持安全,不被人窥视。我们希望这篇文章能帮助你理解这个基本概念,如果你有任何疑问,请在评论中告诉我们。
评论留言