如何在不使用“sudo”的情况下让自己访问 /var/www 以在其中创建和编辑文件和文件夹?

Emi*_*and 5 filesystem permissions apache2

我的网络服务器中有一个文件夹/var/www。我需要将文件添加到文件夹中,但除非我使用sudo.

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

Web 服务器是 Apache2,以防万一。

Tho*_*ard 18

/var/www/文件夹受系统影响,而不仅仅是用户/管理员,因此/var/www除非您知道自己在做什么,否则不应弄乱基本目录中的这些设置。通常,根据我的运行方式,我在里面 创建特定站点的目录/var/www/,然后在那里给自己权限,这解决了系统意外覆盖站点数据的问题(通常不会弄乱您自己创建的子文件夹) .

因此,你可能会想建立一个文件夹/var/www/和修改你的Apache网站的DocumentRoot设置的网站指向子文件夹(比如/var/www/mysite/),然后运行命令,命令给自己写访问,以及Web服务器读访问,同时阻止其他用户访问。

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

sudo mkdir /var/www/mysite
Run Code Online (Sandbox Code Playgroud)

其次,让您访问,以及 WebServer 访问。Apache2www-data默认运行。

sudo chown $USER:www-data /var/www/mysite
Run Code Online (Sandbox Code Playgroud)

第三,我们需要确保文件夹中创建的任何文件都自动指定www-data为组所有者(这样它才能真正读取它需要读取的文件);我们为此设置了“SetGID”粘性位。我们还可能希望阻止其他用户(超级用户和 Web 服务器除外)访问该文件夹,以防数据中存储的密码不应公开(请参阅我在答案底部的警告):

sudo chmod g+s /var/www/mysite
sudo chmod o-rwx /var/www/mysite
Run Code Online (Sandbox Code Playgroud)

第四,您必须编辑您的 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) .