我有一台装有 ubuntu 14.04 的服务器。
我安装了 apache2、php5 和 pure-FTPd。
因此 apache 在 mpm prefork 中运行,其中一个进程由 root 拥有,所有子进程由 www-data 拥有。
/var/www/html 由 root 拥有 (-rw-r--r-- 1 root root)
现在我有一个名为ftpuser的ftp用户。
什么是最好的方法(更安全),以便 ftpuser 可以在 /var/www/html 下创建和编辑文件?
我可以将 /var/www/html 的组所有者更改为具有写权限的 www-data 并将 ftpuser 添加到 www-data 组吗?
如果现在我也想使用 mediawiki,有时需要对 /var/www/html 具有写权限。同样的问题:我可以将 /var/www/html 的组所有者更改为具有写权限的 www-data 吗?
答案1
通常,向运行 Web 服务器(Ubuntu 下的 www-data)的帐户授予写权限不是一个好主意。
对于您的情况,我会将的所有者更改/var/www/html
为FTP用户对他来说是读写的,对组和其他人来说是只读的。Apache 至少需要能够读取此目录。
更新:如果您有多个用户需要访问权限,请将他们全部放在同一组中,将组所有权更改为该组,并授予该组读写访问权限。
从安全角度来看,授予 Apache 对其可以访问的所有文件的写权限并不是一个好主意。如果有人能够对您的 Web 服务器进行“恶意操作”,至少他无法直接使用 Apache 更改文件。
不要忘记确保您打算使用的 FTP 服务器的安装安全,以便让 ftpuser 上传文件。
如果 Mediawiki 需要写入某些文件,我会将这些文件的读写权限仅授予 www-data 用户(通过将这些文件的所有者设置为 www-data)。如果您无法预测哪些文件需要由 Web 应用程序写入,则最好将此应用程序隔离到“/var/www/html”的子文件夹中。
根据经验,我知道当某些文件需要正确访问时,应用程序的文档通常会详细说明哪些文件需要访问。
答案2
Apache2 Web 服务器在 Ubuntu Linux 中可用。要安装 Apache2:
在终端提示符下输入以下命令:
sudo apt-get install apache2
基本设置
如果您希望配置新的虚拟主机或站点,请将该文件复制到同一目录中并使用您选择的名称。例如:
sudo cp /etc/apache2/sites-available/default /etc/apache2/sites-available/mynewsite
编辑新文件以使用下面描述的一些指令来配置新站点。
答案3
如果您尚未安装 Apache,您可以通过发出以下命令来安装:
sudo apt-get update
sudo apt-get install apache2
这就是拥有一个可以正常工作的 Web 服务器所需的全部内容。如果您在 Web 浏览器中访问 VPS 的 IP 地址,您将获得默认的 Apache 索引页:
your_domain_name_or_ip_address
It works!
This is the default web page for this server.
The web server software is running but no content has been added, yet.
Ubuntu 和 Debian 中的 Apache 文件层次结构
在 Ubuntu 和 Debian 上,Apache 将其主要配置文件保存在“/etc/apache2”文件夹中:
cd /etc/apache2
ls -F
apache2.conf envvars magic mods-enabled/ sites-available/
conf.d/ httpd.conf mods-available/ ports.conf sites-enabled/
查看 Apache2.conf 文件
Apache 服务器的主要配置详细信息保存在“/etc/apache2/apache2.conf”文件中。
该文件分为三个主要部分:全局 Apache 服务器进程的配置、默认服务器的配置和虚拟主机的配置。
在 Ubuntu 和 Debian 中,该文件的大部分内容是全局定义,而默认服务器和虚拟主机的配置则在最后通过使用“Include ...”指令来处理。
“Include”指令允许 Apache 将其他配置文件读入语句出现位置的当前文件中。结果是 Apache 在启动时动态生成一个总体配置文件。
如果您滚动到文件底部,会发现许多不同的“Include”语句。这些语句加载模块定义、ports.conf 文档、“conf.d/”目录中的特定配置文件,最后是“sites-enabled/”目录中的虚拟主机定义。
我们将重点关注文件的第一部分,以了解 Apache 如何定义其全局设置。
我希望这个对你有用