【问题标题】:Do I need to set "group" permissions when using chmod?使用 chmod 时是否需要设置“组”权限?
【发布时间】:2014-07-31 18:51:19
【问题描述】:

我需要为一个文件设置chmod,这样每个人都可以查看该文件,并且只有拥有它的Web服务器(或PHP脚本)才能覆盖它。

什么是正确的chmod 设置?你能解释一下什么是组吗?它们与我相关吗?

【问题讨论】:

标签: php file-permissions chmod


【解决方案1】:

通常,该文件应归网络服务器用户所有,或属于网络服务器用户的组。假设您的网络服务器在www-data 下运行,这意味着运行以下代码:

chmod u+w file.txt        # write access for the file's user
chmod ugo+r file.txt      # read access for user, group, other
chown www-data file.txt   # change owner

或者这个:

chmod g+w file.txt        # write access for the file's group
chmod ugo+r file.txt      # read access for owner, group, other
chgrp www-data file.txt   # change group

如果您希望文件可由所有者用户写入,后者很有用 - 如果您希望在您的普通帐户下 rsync 文件或 git pull,这很常见。

请注意,用户和组是不同的东西。上面的例子利用了'www-data'是一个普通的user,是通过安装Apache创建的,而'www-data'是一个普通的group也是同时创建的。是的,它们的名称相同,而且是两种不同的东西!

你问什么是组。它通常用作用户的类别,例如,大学可能有称为“学生”和“员工”的组。用户可以添加到任意数量的组中,因此研究生可以同时添加到这两个组中,例如,因为他们有资格同时属于这两个类别。然后,组成员身份允许系统管理员在全局基础上授予读取和写入权限,而不必担心单独重置用户。

注意您使 Web 服务器可写的内容,尤其是普通文档根目录中的文件和文件夹。如果您的 Web 应用程序存在漏洞,您不希望用户能够通过 Web 服务器创建 PHP 文件,否则可能会导致任意远程执行。

为了防止这种情况,如果您(例如)只是上传文本文件,请在文档根目录之外执行此操作,这样它们就无法远程执行。如果您要上传图片(需要在文档根目录中),请禁用该目录的 PHP 引擎。

【讨论】:

  • 好的。我正在将图像上传到服务器(php),有时会覆盖(也通过 php)。因此,如果我在上传后将文件设置为 chmod($file, 0646) .. 只有服务器/脚本才能更改/覆盖它吗?
  • 646 = 所有者读/写,组读,“其他”读/写。因此,在此服务器上拥有 Unix 帐户的其他用户将能够读/写它。但是,如果您信任盒子上的其他用户,您会没事的。这是共享主机吗?如果是这样,最后一个八进制数应该为零。此外,如果 Web 服务器为所有用户以同一用户身份运行,则需要考虑更多安全隐患。
  • (我不是共享主机权限方面的专家,因为确切的配置因人而异。如果您托管一项严肃的服务,我倾向于推荐 VPS,因为您的安全问题较少担心)。
  • 是的,它是一个共享主机。嗯,好吧,我会做一些测试.. 但实际上,主机上的其他用户永远不应该访问其他人的文件。我看不出这是怎么发生的(如果主持人只是非常专业的话)
  • 不用担心。要更紧密地模拟您的环境,请考虑使用 Vagrant,它默认使用在 VirtualBox 上运行的 Ubuntu。它非常易于设置。
猜你喜欢
  • 2013-11-04
  • 1970-01-01
  • 2021-02-16
  • 2011-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多