如何检查用户php运行的是什么?

Wes*_*ley 104 php apache

我需要检测php是否作为无人运行.我该怎么做呢?

"没人"还有其他名字吗?"阿帕奇"?还有其他人?

Ali*_*guy 187

<?php echo exec('whoami'); ?>

  • 对某些用户可能有用:如果从命令行界面运行它,您将获得运行该命令的用户,而不是**PHP用户. (4认同)
  • @EdsonMedina似乎在windows上工作正常! (3认同)

mar*_*rio 75

如果可用,您可以使用posix_geteuid,然后获取用户名 来探测当前用户帐户posix_getpwuid.

$username = posix_getpwuid(posix_geteuid())['name'];
Run Code Online (Sandbox Code Playgroud)

但是,如果您在安全模式下运行(通常是exec被禁用时的情况),那么您的PHP进程不太可能在默认www-dataapache帐户之外的任何情况下运行.

  • [get_current_user()`manpage](http://php.net/manual/en/function.get-current-user.php#57624)有一条评论显示了这种方法.从PHP 5.4开始,它可以缩写为:`print posix_getpwuid(posix_geteuid())['name'];` (10认同)

Jon*_*uhn 67

一种落后的方式,但没有exec/system:

file_put_contents("testFile", "test");
$user = fileowner("testFile");
unlink("testFile");
Run Code Online (Sandbox Code Playgroud)

如果您创建文件,则所有者将是PHP用户.

这也可能与任何临时文件函数一起运行,例如tempnam(),它在临时目录中创建一个随机文件并返回该文件的名称.如果由于权限open_basedir或安全模式之类的问题导致无法编写文件,通常仍会允许临时目录.

  • Nice:这里唯一的非特权解决方案也可以找到PHP运行的_group_. (3认同)
  • 非常聪明的跨平台解决方案.嘘! (2认同)
  • 值得一试的东西,应该得到更高的地位 (2认同)

Set*_*eth 20

更多细节将是有用的,但假设它是一个Linux系统,并假设php在apache下运行,它将运行为用户apache运行的.

一个简单的方法来检查(再次,假设一些unix像环境)是创建一个PHP文件:

<?php
    print shell_exec( 'whoami' );
?>
Run Code Online (Sandbox Code Playgroud)

这会给你的用户.

对于我的AWS实例,我在apache运行此脚本时获得输出.


小智 15

您可以尝试使用这样的反引号:

echo `whoami`;
Run Code Online (Sandbox Code Playgroud)

  • 这只是上述问题的重复. (6认同)
  • 对某些用户可能有用:如果从命令行界面运行它,您将获得运行该命令的用户,而不是**PHP用户. (2认同)

Gab*_*ves 10

您可以直接从 shell 运行:

php -r "echo exec('whoami');"
Run Code Online (Sandbox Code Playgroud)


Luk*_*kas 8

我会用:

lsof -i
lsof -i | less
lsof -i | grep :http
Run Code Online (Sandbox Code Playgroud)

任何这些.您可以在ssh命令行中键入em,您将看到哪些用户正在侦听哪些服务.

你也可以去查看这个文件:

more /etc/apache2/envvars
Run Code Online (Sandbox Code Playgroud)

并寻找这些线:

export APACHE_RUN_USER=user-name
export APACHE_RUN_GROUP=group-name
Run Code Online (Sandbox Code Playgroud)

要过滤掉envvars文件数据,可以使用grep:

 more  /etc/apache2/envvars |grep APACHE_RUN_
Run Code Online (Sandbox Code Playgroud)

  • `grep "APACHE_RUN_" /etc/apache2/envvars` 运行良好,谢谢。 (2认同)

gen*_*sis 7

exec('whoami') 会这样做

<?php
echo exec('whoami');
?>
Run Code Online (Sandbox Code Playgroud)

  • 对于某些用户可能很有用:如果从命令行界面运行此命令,则将获得运行命令的用户,而不是PHP用户。 (2认同)