我如何授予自己访问 /var/www 的权限,以便在其中创建和编辑文件和文件夹,而无需使用“sudo”?

我如何授予自己访问 /var/www 的权限,以便在其中创建和编辑文件和文件夹,而无需使用“sudo”?

我的 Web 服务器中有一个文件夹/var/www。我需要将文件添加到该文件夹​​中,但系统不允许我这样做,除非我使用sudo

我是否可以授予自己修改文件夹及其内容的权限,这样我就不需要sudo创建文件,而可以使用 FTP 客户端直接将文件上传到 Web 服务器?

如果有必要的话,Web 服务器是 Apache2。

答案1

/var/www/文件夹由系统而非用户/管理员操作,因此除非您知道自己在做什么,否则不应在基本/var/www目录上乱动这些设置。通常,按照我的操作方式,我会创建特定于站点的目录里面 /var/www/,然后在那里授予我自己权限,这解决了系统意外覆盖站点数据的问题(它通常不会弄乱您自己创建的子文件夹)。

因此,您可能希望设置一个文件夹里面/var/www/修改您的 Apache 站点的 DocumentRoot 设置以将网站指向该子文件夹(例如/var/www/mysite/),然后运行命令命令为您自己提供写入权限,并授予 Web 服务器读取权限,同时阻止其他用户访问。

首先,创建文件夹,将“mysite”替换为您想要使用的任何名称:

sudo mkdir /var/www/mysite

其次,让我们授予您访问权限和 WebServer 访问权限。Apache2 默认运行www-data

sudo chown $USER:www-data /var/www/mysite

第三,我们需要确保所有文件创建文件夹中的用户将自动被指定www-data为组所有者(因此它实际上可以它需要读取的文件);我们为此设置了“SetGID”粘性位。我们可能还想阻止其他用户(超级用户和 Web 服务器除外)访问该文件夹,以防数据中存储了不应暴露的密码(请参阅答案底部的警告):

sudo chmod g+s /var/www/mysite
sudo chmod o-rwx /var/www/mysite

第四,您必须编辑 Apache 站点。如果您是新手,您可能正在使用“默认”站点配置。您需要运行一组任务:

  1. 查找配置文件 — — 通常在 中/etc/apache2/sites-enabled
  2. 编辑配置文件 - 找到 DocumentRoot 行,并将其修改为:(DocumentRoot /var/www/mysite将“mysite”替换为您创建的任何目录名称)。
  3. 重新启动 Apache- sudo service apache2 restart

完成所有这些操作后,您应该能够/var/www/mysite直接将文档放入其中,无需sudo(因此 FTP/SFTP 可以工作),并且 Web 服务器应该具有站点目录内所有内容所需的访问权限。


(强制性 IT 安全警告,因为我是一名 IT 安全人员)

警告!

网站权限非常棘​​手,根据您在网站上使用的内容,如果不付出更多努力,几乎不可能让其正常工作。某些 Web 应用程序中的文件也不应该由您必须授予访问权限之外的世界访问。

还需要注意的是,Web 应用程序很容易受到大量潜在攻击,因此不仅要使用 Apache 软件更新来保持您的网站更新,还要更新您在网站上运行的软件(例如 WordPress)。

相关内容