我们怎么知道一个目录是 apache 可写的?

MEM*_*MEM 21 permissions directory apache2

有人告诉我,我应该创建一个图像文件夹和一个资产文件夹,并且我需要确保:“它们是 apache 可写的”。我还被告知要使应用程序/运行时目录可通过网络写入。这与 apache 可写相同吗?如果是这样的话:

我怎样才能立即做到这一点,或者知道这一点?

做一个ls -l我得到的东西:

drwxr-xr-x 13 user user 4096 2011-08-26 10:23 app
drwxr-xr-x 4 user user 4096 2011-08-26 10:23 runtime
drwxr-xr-x 2 user user 4096 2011-08-26 11:11 images
drwxr-xr-x 2 user user 4096 2011-08-26 11:12 assets
Run Code Online (Sandbox Code Playgroud)

Rin*_*ind 25

Apache,是一个在后台运行的程序。Apache 最初是由用户root(也称为root-process)启动的。这root-process将启动几个处理客户端请求的子进程。出于安全原因,子进程不是由用户运行,root而是作为具有最低权限的用户运行。通常此用户名为apachewww-data

要找出这是 apache v1 的用户:

ps -ef | grep httpd | grep -v grep
Run Code Online (Sandbox Code Playgroud)

或者对于 apache v2:

ps -ef | grep apache | grep -v grep
Run Code Online (Sandbox Code Playgroud)

apache 2 的结果将是这样的:

根 5001 1 0 07:21 ? 00:00:00 /usr/sbin/apache2 -k 开始
www-data 5021 5001 0 07:21 ? 00:00:00 /usr/sbin/apache2 -k 开始
www-data 5022 5001 0 07:21 ? 00:00:00 /usr/sbin/apache2 -k 开始
www-data 5023 5001 0 07:21 ? 00:00:00 /usr/sbin/apache2 -k 开始

在这种情况下,用户/组是 www-data

因此,为了使网络服务器可写目录,我们必须将目录的所有者或组设置为 Apache 的所有者或组,并为其启用写入权限。通常,我们将目录设置为属于 Apache 组(apache或 `www-data 或用于启动子进程的任何用户)并启用该组的写入权限。

chgrp www-data /path/to/mydir
chmod g+w /path/to/mydir
Run Code Online (Sandbox Code Playgroud)

www-data是您使用上述ps命令找到的名称)。

关于:

2) 我还被告知要使应用程序/运行时目录可通过网络写入。这与 apache 可写相同吗?

是的,这是一个您需要将其设置为 Apache 期望的组可写的目录。可能这将在某处/var/www/或被设置为虚拟主机/etc/apache2/sites-enabled/和/或/etc/apache2/sites-available

  • `ps -ef | grep [a]pache` 是一种常见的习惯用法,用于避免输出中的虚假 `grep` 行。 (2认同)