安全的chmod权限?

时间:2010-08-05 09:14:48

标签: php apache unix chmod

标准的chmod权限对于文件是“644”,对于目录是“755”,不是吗?

在大多数情况下,PHP不需要写入文件或目录。所以我不能从所有组中获取写权限吗?

我可以为所有文件分配“444”,为所有目录分配“555”。

这不会更安全吗?

提前致谢!

注意:chmod()位于我的PHP disable_functions列表中。

4 个答案:

答案 0 :(得分:3)

新创建的文件和目录的默认权限由umask环境变量设置。文件的所有者和root可以更改权限。

如果您不需要在应用中使用chmod,请将其保留在禁用列表中。你应该看看安全性的方式是:现在比我更聪明的人让chmod成为我应用程序中更安全的部分之一。因此,我将花费我的时间使其他部分安全。

如果您将应用程序自动化,则可以在服务器上将其设置为只读。当您对应用程序代码进行更改时,它会让您感到非常困难。在某些时候,你会来回走动,进行一些代码更改并在服务器上测试它们......然后忘记将文件/目录权限重置为只读。

如果您的生产计算机上只有1个用户帐户,我会坚持使用默认权限 - 可能会为您管理。或者,您可以删除组和“其他”权限,如下所述。

典型的生产设置是拥有您所属的应用程序组。您还需要一个单独的用户来运行您的php应用程序。保留所有者和组的完全权限,并从“其他”中删除所有权限。这样:

  • 开发人员保留他们的个人登录信息 - 您可以跟踪谁做了什么。
  • 您和其他开发人员可以将新代码复制到服务器。
  • 应用程序可以运行代码。
  • 应用程序无法访问代码之外的任何内容。
  • 没有其他用户可以看到您的代码。

我猜测管理您的生产服务器是别人的工作吗?他们会花时间确保没有人可以登录并四处寻找。虽然您确实需要确保没有人可以运行操作系统命令,但我认为最好的起点是了解xss。默认的php服务器设置应该没问题。应用程序中安全性最低的部分是您所见过的部分。 如果有人要访问系统调用,则最有可能是通过表单。即使您消除了系统调用,表单仍然容易存储ja​​vascript。除非您在应用程序中存储信用卡,否则更可能的目标是用户浏览器中的密码/会话。

答案 1 :(得分:1)

它不是更安全,因为即使在000-chmoded文件(如果它们由PHP拥有)上,PHP也可以始终执行chmod 777。 但是,它更安全,因为你不能在不修改它们的情况下编写这个文件。

答案 2 :(得分:1)

抱歉我的英文。

我在想三个可能的原因。

  1. 检查php.ini中的 safe_mod 标志,如果safe_mod ON ,您可能会遇到该功能的一些问题。
  2. 如果您有plesk,如果您使用尚未使用plesk创建的其他用户创建文件夹或文件,则会出现问题。
  3. 可能你错过了一个php库。

答案 3 :(得分:0)

  

chmod()位于我的PHP disable_functions列表中   那不是更安全吗?

使用disable_functions可以禁用特定功能 如果chmod()指令中出现disable_functions,则使用起来并不安全;它被简单地禁用,使用chmod()的PHP代码将发出警告。

指令disable_functions不应与Safe Mode指令混淆。即使指令disable_functions设置为0,safe_mode也处于活动状态;启用safe_mode后,some functions被禁用或受限制。

要注意安全模式在PHP 5.3中被认为已弃用;这意味着该指令仍然在PHP 5.3中被接受,但它可能在任何时候都不再使用。

相关问题