题 找出Apache运行的用户是什么?


我想在我的服务器上保护文件上传目录,如此处所描述的那样精美,但在我遵循这些说明之前我遇到了一个问题。我不知道Apache正在运行什么用户。

我发现你可以查看httpd.conf并且会有一个“User”行,但我的httpd.conf文件中没有这样的行,所以我猜Apache正在作为默认用户运行。但是我不知道那是什么。

所以,我的问题是(是):

  • 我如何找出默认值 用户是
  • 我是否需要更改默认用户
  • 如果答案是肯定的,我会改变 默认用户编辑httpd.conf, 它有可能搞砸了吗?

谢谢!


191
2018-03-24 16:22




为什么这个问题被贬低了?是的,它已被更新,因为它已被回答elswhere,但我认为没有必要投票?这是一个非常好的问题?也许我们的下来选民会关心为此添加一个建设性的评论? - Bryan
您可能希望将该更新作为答案发布,并接受它,因为您当前处于未答复队列中。 - Fahad Sadah
在StackOverflow上被告知+1;一些用户似乎坚持要逃避新用户 - wruckie
链接的问题不再存在 - pal4life
接下来的问题:做什么因为它是两个用户中的一个,比如 root 和 www-data。你如何赋予“正确的”Apache组访问权限? - jww


答案:


ps aux | egrep '(apache|httpd)' 通常会显示正在运行的apache。

通常您不需要更改默认用户,“nobody”或“apache”通常都是优秀用户。只要它不是“根”;)

编辑:更准确的命令,用于捕获apache二进制文件


194
2018-04-19 23:19



是的,或者它将是Ubuntu上的www-data。 - gravyface
......和Debian。 :) - cubuspl42
那个命令向我展示了一系列的东西,大部分来自 apache 但是1来自 root 太。 - User
我有3个过程(/usr/sbin/apache2 -k start),一个人的用户是 root 和另外两个 www-data。我应该担心吗? - zundi
@zundi,该服务以root身份启动,以便执行绑定到保留端口(例如80和443)之类的操作。然后,它启动任何配置的进程数,进行Web服务器工作以及任何其他任务,作为已定义的用户。这样,请求由非特权进程处理。您会注意到所有其他进程的父ID(PPID)是相同的。这个想法是以root身份运行的那个进程的PID。 - Kevin


您可以尝试以下命令:

ps -ef | egrep '(httpd|apache2|apache)' | grep -v `whoami` | grep -v root | head -n1 | awk '{print $1}'

31
2018-04-23 13:53



我喜欢这个答案,比最受欢迎的答案更好(更通用)。谢谢 - pgr


根据 ubuntuforums.org,在Ubuntu上,apache2的默认用户是 www-data

在Ubuntu 13.10 Saucy看来是真实的。


LarsNoodén 在上面的论坛上。

要确定[用户]实际设置的是什么,请检查实际的配置文件。   伞文件, apache2.conf 会有类似以下的东西,

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

这是对设置的环境变量的引用 /etc/apache2/envvars。    mod_suexec 还允许脚本作为不同的用户和组运行。

要查找可能使用备用用户,组或两者的任何虚拟主机,请检查配置。

$ egrep "^User|^Group|^SuexecUserGroup" /etc/apache2/apache2.conf /etc/apache2/sites-available/*.conf

对于基于Red Hat的发行版(它通常是运行httpd的用户) apache):

$ egrep "^User|^Group|^SuexecUserGroup" /etc/httpd/conf/httpd.conf /etc/httpd/conf.d/*.conf

9
2018-06-10 13:14





我知道这是一个旧帖子,但它仍然没有答案,所以我会提出一个建议。如果您无法找到正在运行的用户或组,请尝试打开httpd.conf文件。 “用户”和“组”应该有一个条目。您不仅可以看到Apache应该运行的用户,还可以在需要时更改它。


8
2018-04-23 07:53





您可以在PHP脚本中包含一行代码:

echo exec('whoami');

7
2017-09-26 02:08



在这里注意,这显示了PHP运行的用户,而不是Apache用户。如果使用mod_php这些是相同的,但如果现在很常见,你正在使用别的东西(如php_fpm),它们可以很容易地区别开来。 - benz001


使用 apachectl -S,这将显示一些Apache用户和组,如下所示:

User: name="_www" id=70
Group: name="_www" id=70

7
2017-09-11 00:28



谢谢,在我的Mac上我看到apache正在运行'_www'。 - Mercury


此代码将 - 或多或少 - 按字母顺序列出运行进程的所有非root用户 apache (或其名称包含 apache

ps aux | grep -v root | grep apache | cut -d\  -f1 | sort | uniq

5
2018-03-06 12:28



该列表可能包括正在运行“grep apache”等进程的用户,例如你的好人。 - mwfearnley