我想保护我的服务器上的文件上传目录,如此处所述,但在遵循这些说明之前我遇到了一个问题。我不知道 Apache 以什么用户身份运行。
我发现了一个建议,您可以查看 httpd.conf 并且会有一个“用户”行,但我的 httpd.conf 文件中没有这样的行,所以我猜 Apache 正在以默认用户身份运行。不过,我不知道那是什么。
所以,我的问题是(是):
- 我如何找出默认用户是什么
- 我需要更改默认用户吗
- 如果答案是肯定的,并且我通过编辑 httpd.conf 更改了默认用户,它可能会搞砸什么吗?
谢谢!
ps aux | egrep '(apache|httpd)'
通常会显示 apache 的运行方式。通常您不需要更改默认用户,“nobody”或“apache”通常是很好的用户。只要它不是“根”;)
编辑:更准确的命令来捕获 apache 二进制文件
您可以尝试以下命令:
使用
apachectl -S
,它将显示一些 Apache 用户和组,如下所示:根据ubuntuforums.org,在 Ubuntu 上 apache2 的默认用户是
www-data
.在 Ubuntu 13.10 Saucy 上看起来是正确的。
来自上述论坛上的Lars Noodén 。
对于基于 Red Hat 的发行版,它将是(通常运行 httpd 的用户是
apache
):我知道这是一个旧帖子,但它仍然列为未答复,所以我会提出建议。如果您找不到 Apache 以哪个用户或组运行,也许可以尝试打开 httpd.conf 文件。“用户”和“组”应该有一个条目。您不仅可以看到 Apache 应该以哪个用户身份运行,而且如果您觉得有必要,您可以更改它。
您可以在 PHP 脚本中包含一行代码:
此代码将或多或少按字母顺序列出所有运行包含
apache
(或名称包含apache
)的进程的非 root 用户ps aux | grep apache
在它运行时简单地使用。注意:这与我在Stackoverflow上给出的答案相同。
或者您可以检查 apache 配置文件并查找所有者和组。
至少对于基于 Debian/Ubuntu 的发行版而言,另一种方法是使用 Apache 设置其用户和组的相同方法:source
/etc/apache2/envvars
!如果您想花哨,可以在找不到文件时抑制错误,并提供默认值: