有人可以解释一下 Unix 文件夹权限和安全性吗?

有人可以解释一下 Unix 文件夹权限和安全性吗?

为什么我要将文件夹权限更改为 755 或 777?

我读到它的意思是读写和执行,但我想知道,有人可以根据这些权限窃取 php 代码吗?

谢谢。

答案1

每个文件或文件夹都有一个用户所有者和一个组所有者。对文件执行 ls -l 将显示当前所有者是谁。“所有者”是来自 /etc/passwd 的某个用户,组是来自 /etc/groups 的某个组,其他代表其他一切。

权限编号中的三位数字代表用户、组和“其他”的权限。

因此 755 意味着:

user=7
group=5
other=5

文件可以具有读权限、写权限和执行权限。

读取=4 写入=2 执行=1

它们本质上就是字面意思,读取允许您读取文件的内容,写入允许您编辑文件。执行是运行脚本所必需的,对于文件夹,执行允许访问它们。

将它们相加即可得到权限编号。例如 755:

User: read(4)+write(2)+execute(1)= 7
Group: read(4)+execute(1)=5
Other: read(4)+execute(1)=5

您需要在文件夹上授予 755,因为访问您网站的互联网用户将属于“其他”类别,并且为了访问您服务器上的文件夹(以及该文件夹内的任何脚本),他们需要能够进入该文件夹,因此他们需要执行权限。

777 通常不是一个好主意,这样想想.. 您希望任何其他用户能够在您的服务器上编辑某些内容吗?

关于权限还有很多需要学习的内容,请查看此链接了解更多信息。

至于窃取 PHP 代码,您的网络服务器应该自动将任何带有句柄 .php 的文件作为 PHP 脚本提供,而不向用户显示 PHP。但是,如果您将脚本命名为网络服务器无法处理的任何名称,则如果您的网络服务器用户有权读取它,它将以文本形式显示出来。

如果您说的是内部用户通过终端窃取代码,那么您可以删除除您的网络服务器之外的任何人的读取权限。

答案2

755对于二进制来说,是八进制111-101-101,这意味着......

User    | Group   | Others
==========================
Read    | Red     | Read
Write   | -       | -
Execute | Execute | Execute

因此只有用户可以write访问此文件。777允许用户,组和其他人写入此文件,这通常不受限制。

答案3

当然 - 如果他们能够读懂,那么他们就能“看到它”。

应用程序保护其代码的方法有几种。这些都是特定于应用程序,任何深入处理都应该咨询应用程序编码员。

  • 文件系统权限

简单地说“没有人可以看到这些文件”很容易。但是,您至少需要您的 Web 服务器能够读取这些文件,并且能够提供这些文件。php 可以由 Web 服务器执行,因此需要权限 7。假设您以 Web 服务器正在运行的用户身份登录,您将获得 755 中的 7。

其他人必须能够确定他们想要什么文件,因此他们需要能够看到它们。他们可能还需要能够读取文件(具体取决于应用程序),以便 Web 服务器能够处理它。

  • 代码级保护

PHP 代码可以通过多种方法查看。在过去,您必须将 die() 命令放在页面的某个位置,因此如果人们通过 splunking 而不是他们应该的方式访问它,则不会显示任何不雅代码。

通过将其构建到代码中,通过设置 Web 服务器来执行此操作,或者通过同时执行这两者,您都可以阻止不必要的监视。

  • 应用程序级别保护

任何代码都可能受到损害,因此阻止恶意用户并让好用户留在他们应该在的地方非常重要。

答案4

有一些有趣的权限组合:

  • /tmp通常是模式 1777 - 每个人都可以在这里创建文件,但“粘性位”意味着只有文件的所有者才被允许删除它。
  • 有些人会在主目录中保留一个incoming目录,供其他人将文件放入其中。这样的目录通常具有 733 模式,因此每个人都可以进入该目录并在那里创建新文件,但无法找出哪些文件存在。
  • 如果您有一个public_html带有用户主页的目录,但不想让其他人查看您的主目录,那么您可以使用 711 允许所有人进入该目录并从那里引用文件,但不列出目录内容或添加文件(请注意,如果您知道文件的名称并且您有权限访问它,那么您可以这样做)。

相关内容