Apache 服务器设置问题

Apache 服务器设置问题

我已经在 AWS 上的 RedHat 7 Image 上安装并配置了 apache。但我在使用 filezilla 通过 ssh 上传文件时遇到权限/所有权问题。

我设置了一个 ssh 用户并将其主目录添加到 apache /var/www/html/ 并在其上安装了 Magento。

原始设置:

  1. 用户:/var/www/html/组是apache
  2. 用户:root /组:apache for /var/lib/php/session dir(不确定,但我认为magento将会话文件存储在那里,并且当所有者更改时我收到写入错误)
  3. httpd.conf 用户:组是 apache
  4. 使用这些设置,无法使用 ftp 或 sftp 上传文件 - 权限错误。

当我更改为:

  1. 用户:/var/www/html/的组是ssh_user
  2. 用户:ssh_user /组:ssh_user for /var/lib/php/session dir
  3. httpd.conf 用户:组是 ssh_user
  4. 有了这些,我能够上传,但缓存文件是作为 root 生成的。

我想要的是:

  1. 用户:/var/www/html/的组是ssh_user
  2. /var/lib/php/session 目录的默认设置
  3. httpd.conf 用户:组是 apache

我希望普通用户能够通过 ftp 或 sftp 上传文件。

我如何实现这个目标?这是我第一次设置 apache,所以只是想学习如何正确地进行设置。

答案1

任何需要 Web 服务器 uid 可写入所有目录和文件的 Web 应用程序在设计上都是损坏且不安全的。如果你乐于接受这样的生活...

  1. 提供一个新组来包含每个帐户应该能够编写文件 - 为了说明起见,我将其称为网络作家

  2. 将这些用户添加到该组 - 它不需要是他们的主要组(usermod -G webwriters ssh_user ; usermod -G webwriters apache ; ....)

  3. 在范围内的每个顶级目录上,运行以下命令:

chown -R apache:webwriters $DIR
find $DIR -type f -exec chmod g+rw {} \;
find $DIR -type d -exec chmod g+rws {} \;

现在所有文件和目录都可由该组写入。并且当您创建新文件时,它将由网络编写者组拥有。

  1. 编辑 /etc/ssh/sshd_config 添加到-u 002sftpserver 之后并重新启动 sshd。这将确保通过 sftp 复制的新文件可由该组写入。不要使用 FTP。如果你想使用 scp,你需要在 shell rc 文件中设置 umask)。

  2. 在 /etc/systemd/system/httpd.service.d 创建一个新目录(如果它尚不存在)添加一个文件 - 您可以随意命名它 - 包含:

[Service]
UMask=0002

然后重新启动阿帕奇。这将确保网络服务器创建的文件也获得预期的所有权/权限。

最后,也是最重要的,安装 HIDS(L5、LIDS、Tripwire)并学习如何管理它。安装fail2ban 并添加对登录尝试率的限制。

答案2

请检查您的 apache httpd.conf。在那里您还可以看到 ServerRoot 和 ServerAdmin。在那里,您将拥有:

ServerRoot "/etc/httpd"
ServerAdmin root@localhost

服务器安装或配置的访问权限必须是 root,如上所示,不建议修改。

但是,对于通常为 /var/www/html 的 docroot 位置,用户和组将为 apache。可以更改为除 root 之外的任何其他用户。使用 apache 或任何其他非 root 用户更改 docroot 或 DocumentRoot 目录位置(即 /var/www/ 或 /var/www/html)的所有者非常重要。您可以将其更改为您选择的用户。不建议在 httpd.conf 中将 root 设置为用户和组

User apache
Group apache

确保您必须使用 httpd.conf 中提到的相同用户更改 docroot 目录的所有者。默认情况下,用户和组是 apache。因此,您需要将 docroot 目录 /var/www/html 的所有者更改为 apache,如下所示:

sudo chown -vR apache. /var/www/html

现在您的网站页面将开始创建缓存每当您访问由 apache 加载的网页时。

在您的场景中,当您使用 ssh_user 作为用户时,您可以设置 User:Group 您所需的目录位置及其所有内部层次结构,例如,对于路径 /var/www/html/,然后您可以将其设置为使用以下命令。

语法: sudo chown -vR 用户名:组名 {目录位置路径}

sudo chown -vR ssh_user:ssh_user /var/www/html
sudo chown -vR apache:apache /var/lib/php/session

如果您希望普通用户能够通过ftp或sftp上传或传输文件,您可以使用FileZilla Server或WinSCP中的任何一个,建议使用拥有该目录的用户登录,然后传输文件。

确保您对尝试访问的目录是否具有用户或组权限。

相关内容