为了Linux系统安全,为什么不建议使用chmod 777

在本指南中,我将向你解释chmod 777的作用,以及为了保障Linux系统安全,为什么很少设置该权限。

chmod-777-thumbnail.jpg

有时候我们寻找解决Linux权限问题的方法,会看到有些人推荐使用 “chmod 777 “命令。chmod命令是一个强大的工具,用来修改Linux系统中特定文件或目录的权限。该命令如果被滥用,可能会对系统的安全造成危险,例如,将文件和目录的权限设置为777。在不了解命令的工作原理和它对系统的影响的情况下,不应该运行在网上找到的命令。本指南探讨使用chmod 777对权限的影响以及为什么应该避免这样做。

Linux中的文件权限基础知识

在解释为什么使用chmod 777是不好的之前,需要解释一下Linux的文件权限。本节将让你对文件权限的工作原理以及为什么它们是Linux的重要组成部分有一个基本的了解。如果你想了解更多关于Linux权限系统的信息,请务必查看我的Linux权限的完整指南

权限快速概览

简单地说,文件权限系统的设计是为了控制对文件和目录的访问。这些权限可以阻止未经授权的用户访问或修改文件和目录。

对于每一个文件,有三个不同的权限组,权限组如下:

  1. 文件所有者 – 用户对文件的权限。可以使用chown命令来控制文件的所有者。
  2. 文件组所有者 – 组对文件的权限。虽然只有一个用户可以拥有文件,但许多用户可以组成组共同拥有一个文件。
  3. 其他用户 – 其他用户对文件的权限。

使用chown可以控制每一个组的写、读或执行文件的能力。

下面我就给大家简单介绍一下这三种权限分别是什么,有什么用处。虽然文件和目录具有相同的权限,但它们的行为略有不同。

1、读权限

  • 文件 – 用户可以读取文件的内容
  • 目录 – 用户可以查看该目录的内容。例如,他们可以使用ls命令来列出目录内的文件。

2、写权限

  • 文件 – 用户可以修改文件
  • 目录 – 用户可以改变和修改目录的内容。例如,用户将能够创建、删除、移动或重命名文件。

3、执行权限

  • 文件 – 用户可以运行该文件。例如,如果是一个bash脚本,用户可以运行它。
  • 目录 – 用户可以将此目录设置为其当前目录。

数字化权限

现在你已经对Linux系统上的权限有了简单的了解,现在来了解一下777这个数字在chmod和权限方面的含义。

观察777这个数字,你需要把它分成三个独立的数字。每一个数字都代表了某一个组的权限。

  1. 第一个数字代表拥有该文件的用户的权限。
  2. 第二个数字是文件或目录所属组的权限。
  3. 最后一位也就是第三位是代表所有其他用户的权限。

每个数字由读、写和执行权限的值组成。这些权限有以下的数值分配给它们。

  • 读数=4
  • 写=2
  • 执行=1

如果要将多个权限加在一起,只需要将权限的数值加在一起即可。

例如,如果想让用户能够读取和执行一个文件,在值1(执行)的基础上加上值4(读取)+。将这两个值结合起来,就会得到5,这样用户同时拥有读取和执行的权限。

为什么不使用chmod 777

你现在应该对Linux中的文件权限以及数字有了基本的了解。接下来让我们解释一下为什么使用777是一种不好的做法,为什么应该避免使用777。

当你把一个文件或目录的权限设置为777时,你就给了这三个权限组读、写和执行该文件的能力。权限777说明操作系统上的任何用户都可以对文件进行修改、执行和写入,从而给系统带来巨大的安全风险。未经授权的用户可以利用这一点来修改文件,从而危及系统。在Web服务器的情况下,一个未经授权的用户可能会改变网站以提供恶意内容。简单的说,一般情况下,不应该将文件的权限设置为777,因为它可以让系统中的任何用户完全访问该文件。

取而代之的是什么

因此,你可能想知道你通常应该为文件和文件夹使用什么权限。这个问题有点开放性,因为需要为一个文件设置什么样的权限,最终取决于特定用例。在调整一个文件的权限之前,请确保你已经阅读了chmod和chown命令。另外,一定要读懂Linux上的文件权限。了解权限系统的工作原理是非常重要的。下面我们就来介绍一些推荐的权限,供处理Web服务器的人参考。

适合网络服务器的权限

当你通过Apache或NGINX等Web服务器提供服务的文件时,一些通用的权限将在大多数情况下发挥作用。首先,你所服务的目录内的任何文件都不需要有执行权限。当Web服务器为这些文件提供服务时,它只需要能够从这些文件中读取。一般来说,对于Web服务器内的文件,对文件使用644权限,对目录使用755权限。

设置文件的权限

将文件的权限设置为 “644”,就是在说:

  • 所有者可以对文件进行读写。
  • 组和其他人都只能从文件中读取。

这些权限确保了web服务器可以读取web目录中的文件。可以通过运行以下命令更新一个目录内所有文件的权限。

find /var/www -type f -exec chmod 644 {} \;

这条命令将循环检查”/var/www “目录下的所有文件,并使用chmod命令将其权限改为644。

设置目录的权限

对于目录,需要设置稍微不同的权限。假设不给权限组执行权限。在这种情况下,他们无法进入目录和访问文件。

所以对于web服务器内的每一个目录,都要设置权限为 “755”。与文件唯一的区别就是增加了执行(1)的权限。

  • 所有者可以创建、修改、删除目录内的文件,查看目录的内容。
  • 其他和组权限设置为查看目录内容,进入目录。

要将这些新的权限应用于一个目录内的所有目录,可以使用以下命令。

find /var/www -type d -exec chmod 755 {} \;

这条命令会找到指定目录下的所有目录(本例中为”/var/www”),并将其权限修改为755。

确保正确的用户拥有文件/目录

如果你对文件和目录设置了错误的用户和组,这些权限都没有任何意义。通常情况下,在Web服务器中,需要确保正确的用户拥有Web服务器运行的文件。其中最常见的一个操作用户是 “www-data “用户和组。你可以通过使用chown命令和用户名来获得所有文件的所有权。

chown -R www-data: /var/www

该命令将使用chown命令递归地检查”/var/www “目录,并将所有权赋予 “www-data “用户和组。

结论

总之,应该避免使用 “chmod 777 “命令。权限777赋予任何用户对该特定目录或文件的完全访问权,构成了相当大的安全风险。尽量总是设置权限,只给该用户、组或其他所有人可能需要的最小数量的权限。如果你有任何反馈或问题,欢迎在下方留言。

平均: 5 / 5. votes: 1

到目前为止还没有投票!成为第一位评论此文章。

欢迎转载,请留下出处链接:Labno3 » 为了Linux系统安全,为什么不建议使用chmod 777

赞 (2)

评论

1+8=