【问题标题】:Are these LAMP permissions secure?这些 LAMP 权限是否安全?
【发布时间】:2012-04-17 12:08:45
【问题描述】:

我有一个 LAMP 服务器,我在其中运行了以下命令来设置 /var/www 中文件的权限:

groupadd web
usermod -a -G web my_user
chown -R root:web /var/www
chmod -R 775 /var/www
chmod -R g+s /var/www

我的目标是让“web”组的任何成员都可以写入所有文件。是否有一种安全的方法可以在不更改文件所有权的情况下允许文件上传(例如在 Wordpress 中)?注意:这是一个私人服务器。

【问题讨论】:

  • 我认为您需要将那些您希望用户登录到系统以便能够编辑的内容与那些必须由网络用户写入才能正常运行的内容(例如,上传目录)。如果您的 Apache 服务器运行的凭据授予它对整个 Web 层次结构的写入权限,那么有人会在您的服务器上投放伟哥广告。
  • 是的——不想那样。 “web”组(上图)应该只是让 root 和网站管理员能够通过 SFTP 读取/写入文件。我的理解是 www-data (默认的 Apache 用户)只会因为上面的 chmod 775 命令而获得读取权限。我是否像我认为的那样安全?最好不要有任何网络用户可写的目录(chmod 777),包括上传目录?
  • 注意chmod -R g+s /var/www 命令。对于目录,s 位会更改目录中的默认文件组,但对于可执行的常规文件,它意味着不同的东西。使用此命令,您会意外创建 setgid 可执行文件。您需要将此命令仅应用于目录,而不是递归地应用于所有内容。
  • 我该如何解决这个问题?运行 chmod -R g-s /var/www 并返回并将其不带递归标志仅应用于目录?
  • @larsks - “如果您的 Apache 服务器运行的凭据允许它对您的整个 Web 层次结构进行写访问,那么有人会在您的服务器上投放伟哥广告。”你能解释一下那个说法吗?怎么会这样?

标签: linux apache security ubuntu permissions


【解决方案1】:

仅对目录应用权限的一种方法是使用find 命令。例如:

# Set the owner and group on everything.
chown -R root:web /var/www

# Make *directories* read/write/execute and set the `sgid` bit.
find /var/www -type d -print | xargs chmod g+rwxs

您不想运行chmod -R 775 /var/www,因为这将使您的所有文件都可执行,这可能不是您想要的。

【讨论】:

  • 谢谢!我应该将 775 权限更改为什么? 774?
  • 一般来说,你不希望文件是可执行的,除非你真的想让人们运行它们。给定像775 这样的文件模式,每个数字对应于一组以八进制表示的三个权限位。所以7 表示rwx(所有位设置)。根据您的目标,静态文件应该是所有者和组可写的,并且每个人都可以阅读。那是模式664rw-rw-r。 CGI 脚本等需要可执行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 2011-03-25
  • 2012-06-07
  • 1970-01-01
相关资源
最近更新 更多