为什么我要将文件夹权限更改为 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 允许所有人进入该目录并从那里引用文件,但不列出目录内容或添加文件(请注意,如果您知道文件的名称并且您有权限访问它,那么您可以这样做)。