ale*_*bal 4 permissions root apache2
出于安全原因,我想通过 ssh 禁用 root 访问。
我创建了一个具有管理权限的新用户 (user1)。
adduser user1
usermod -aG sudo user1
Run Code Online (Sandbox Code Playgroud)
并将 /www 目录分配给该用户。
sudo chown -R $USER:$USER /var/www/
sudo chmod -R 755 /var/www
Run Code Online (Sandbox Code Playgroud)
(我的文件夹结构是 www/site1.com、www/site2.com 等)
我的网站需要写一些文件(比如sitemaps、rss feeds等)所以我把www目录的权限设置为:
sudo chown -R www-data:www-data /var/www
sudo chmod -R 755 /var/www
Run Code Online (Sandbox Code Playgroud)
但是,现在用户 user1 通过 shell 使用 sudo 命令完美工作,但不能再通过 sftp 添加/编辑/删除 /www 目录及其子目录中的文件和文件夹。
我阅读了很多指南,如何设置 apache 权限以提高安全性,与其他用户共享管理等等等等。
但我仍然不明白如何解决我的问题。
目前为了能够通过 sftp 处理我服务器上的文件,我必须使用 root 用户,以确保安全。
我是否错过了有关设置用户或文件夹权限的内容?
可以为文件和目录设置不同的组和用户访问权限,这将允许 Apache 和您的 user1 用户编辑其中的内容,/var/www
而无需 root/sudo 并且无需使任何内容都可写。
因此,将里面的“用户”权限设置/var/www
为user1
. 将“组”权限设置为www-data
(但仅限于 Web 服务器需要写入的特定文件或目录)。
sudo chown -R user1:user1 /var/www
sudo chgrp www-data /var/www/specific-file
Run Code Online (Sandbox Code Playgroud)
您应该避免让 Web 服务器写入整个/var/www
目录及其内容,而应仅在必要时将上述组权限授予特定文件。这是一个很好的安全原则,将 Web 服务器对文件的访问权限限制为仅那些它绝对需要的文件 - 尝试确保这些文件不被直接执行是一个好主意(不是 .php 或其他可执行脚本,例如)。