我该如何确定Apache运行的用户?

15

如何检查Apache用户是谁?

我需要为Web根目录内外的某些目录授予读写权限,我该怎么做?

由于我不知道什么是Apache用户,因此无法回答我的下一个问题。


当你一开始不知道它的作用时,为什么需要给予读写权限?你能添加更多细节吗? - Pekka
目前为了让我的软件正常工作,我需要将整个目录的权限设置为777。但是为了避免这种情况,有人建议我给Apache用户正确的权限,这样就可以避免使用777了。 - tecman
你在使用什么类型的服务器?你是否可以通过命令行访问它? - Pekka
服务器可以是Windows/Linux......场景是,我想通过使用PHP编程首先检查Apache用户是否可以写入相关目录,如果它们不可写,则要求用户授予Apache用户写入权限......所以我想知道什么是Apache用户,如何为其授予写入权限以及如何在程序中进行测试......我发现PHP中有一个名为“is_writable”的方法,我将使用它。 - tecman
6个回答

18

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

通常情况下,您不需要更改默认用户,即“nobody”或“apache”。


6

至少需要说明您正在使用的操作系统。在httpd.conf文件中查找“User”指令,它将告诉您Apache将以哪个用户身份运行。


好的,我会查看。同时,您能否请检查一下我的问题下面的最后一条评论? - tecman
顺便说一句,我快速浏览了一下Apache中的用户指令,但是我没有正确理解这个概念,你能给我推荐一些链接吗?我还不知道如何授予Apache用户权限,我的意思是我要写什么命令来完成这个操作。 - tecman
你可以通过运行 exec('whoami') 在 PHP 中确定用户。 - Coalpaw
请注意,“Group”与“User”一起定义。它们的默认值都是“apache”。 - BuvinJ

4

可以通过以下方式找到apache2用户。 进入/etc/apache2/apache2.conf文件,查找User

User ${APACHE_RUN_USER}
Group ${APACHE_RUN_GROUP}

要查找APACHE_RUN_USER和APACHE_RUN_GROUP的值,请检查/etc/apache2/envvars文件。
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data

3
您可以尝试使用以下命令来检查它:
ps axo user,group,comm | egrep '(apache|httpd)'

要提取精确的用户名,可以通过以下方式:

ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | uniq | cut -d\  -f 1
ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | tail -1 | awk '{print $1}'

对于Apache组,请使用以下命令:
ps axo user,group,comm | egrep '(apache|httpd)' | grep -v ^root | uniq | cut -d\  -f 2

2

答案1:什么是Apache用户及其定义位置

在我的MAC上,默认的http.conf文件位于/etc/apache2/httpd.conf(此文件位置因操作系统而异),其中Apache用户为 _www(随apache下载附带的默认用户名

由于我在httpd.conf中看到了这一点

User _www

答案2:我如何将读写权限授予此用户到一个名为“foo”的文件夹中?

check who owns foo, by doing ls -l
# Use chown command to make _www ( apache user ) own "foo" folder
chown _www foo
# user chmod +666 to make this "foo" folder read write accessible
chmod 666 foo

关于权限的好文,阅读时间大约两分钟 http://www.macinstruct.com/node/415


1

Apache用户通常是Apache httpd服务器在运行时使用的用户。它使用这个“apache”用户来避免使用“人类”用户,并避免以root身份运行。

安装“apache”用户的优点包括不必以root身份运行,因此在处理http请求时,减少了损坏和丢失整个操作系统的风险。

唯一真正的缺点是需要使Web呈现的内容对“apache”用户可访问。这通常涉及Unix命令chownchmod和有时各种selinux命令的组合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接