AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 125865
In Process
Anna
Anna
Asked: 2010-03-25 08:22:31 +0800 CST2010-03-25 08:22:31 +0800 CST 2010-03-25 08:22:31 +0800 CST

找出 Apache 以什么用户身份运行?

  • 772

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

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

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

  • 我如何找出默认用户是什么
  • 我需要更改默认用户吗
  • 如果答案是肯定的,并且我通过编辑 httpd.conf 更改了默认用户,它可能会搞砸什么吗?

谢谢!

apache-2.2
  • 15 15 个回答
  • 484806 Views

15 个回答

  • Voted
  1. grufftech
    2010-04-20T15:19:13+08:002010-04-20T15:19:13+08:00

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

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

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

    • 281
  2. nowthatsamatt
    2010-04-24T05:53:36+08:002010-04-24T05:53:36+08:00

    您可以尝试以下命令:

    ps -ef | egrep '(httpd|apache2|apache)' | grep -v `whoami` | grep -v root | head -n1 | awk '{print $1}'
    
    • 63
  3. Kyaw
    2016-09-11T16:28:35+08:002016-09-11T16:28:35+08:00

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

    User: name="_www" id=70
    Group: name="_www" id=70
    
    • 48
  4. Kevin
    2014-06-11T05:14:57+08:002014-06-11T05:14:57+08:00

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

    在 Ubuntu 13.10 Saucy 上看起来是正确的。


    来自上述论坛上的Lars Noodé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
    
    • 15
  5. kainosnous
    2010-04-23T23:53:09+08:002010-04-23T23:53:09+08:00

    我知道这是一个旧帖子,但它仍然列为未答复,所以我会提出建议。如果您找不到 Apache 以哪个用户或组运行,也许可以尝试打开 httpd.conf 文件。“用户”和“组”应该有一个条目。您不仅可以看到 Apache 应该以哪个用户身份运行,而且如果您觉得有必要,您可以更改它。

    • 12
  6. JG Estiot
    2011-09-26T18:08:42+08:002011-09-26T18:08:42+08:00

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

    echo exec('whoami');
    
    • 10
  7. user163193
    2013-03-07T04:28:08+08:002013-03-07T04:28:08+08:00

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

    ps aux | grep -v root | grep apache | cut -d\  -f1 | sort | uniq
    
    • 5
  8. Kjir
    2012-08-02T06:49:05+08:002012-08-02T06:49:05+08:00
    • 要找出用户,您可以ps aux | grep apache在它运行时简单地使用。
    • 您不需要,但如果 Apache 以 root 身份运行,则存在安全问题。
    • 第三,改变Apache的用户会改变他访问某些目录的权限。您需要确保新用户和组可以访问 /var/www(或您拥有网站的任何地方)。
    • 在我查看过的系统上,始终使用 apache:apache (或类似的)作为用户和组来安装 apache,因此它可能应该已经这样设置了。

    注意:这与我在Stackoverflow上给出的答案相同。

    • 4
  9. AliGibbs
    2010-04-24T07:33:18+08:002010-04-24T07:33:18+08:00

    或者您可以检查 apache 配置文件并查找所有者和组。

    • 3
  10. MestreLion
    2016-02-04T16:55:01+08:002016-02-04T16:55:01+08:00

    至少对于基于 Debian/Ubuntu 的发行版而言,另一种方法是使用 Apache 设置其用户和组的相同方法:source/etc/apache2/envvars!

    $ echo "$(source /etc/apache2/envvars && echo "$APACHE_RUN_GROUP")"
    www-data
    

    如果您想花哨,可以在找不到文件时抑制错误,并提供默认值:

    $阿帕奇用户=$(
         源 /fail/etc/apache2/envvars 2>/dev/null &&
         回声“$APACHE_RUN_GROUP”||
         没有人回声  
    )
    $ echo "$apacheuser"
    没有人
    
    • 3

相关问题

  • Apache Django Mod_Wsgi - 自动重新加载应用程序

  • Apache:对多个虚拟主机使用相同的目录指令

  • Apache 上的子域不工作 - 找不到服务器

  • PHP 作为 CGI 还是 Apache 模块?

  • 避免将某些丢失的文件记录到 Apache2 错误日志中

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve