【发布时间】: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