我需要检测php是否以没有人的身份运行。我该怎么做呢?“ nobody”还有其他名称吗?“ apache”?还有其他吗?
3 回答
慕斯709654
TA贡献1840条经验 获得超5个赞
如果可用,您可以使用来探测当前用户帐户,posix_geteuid然后使用来获取用户名 posix_getpwuid。
$username = posix_getpwuid(posix_geteuid())['name'];
但是,如果您以安全模式运行(通常是在禁用exec的情况下),则您的PHP进程不太可能在默认值www-data或apache帐户下运行。
Smart猫小萌
TA贡献1911条经验 获得超7个赞
有点落后,但没有exec / system:
file_put_contents("testFile", "test");
$user = fileowner("testFile");
unlink("testFile");
如果创建文件,则所有者将是PHP用户。
这也可能与任何临时文件功能(例如)一起运行,该功能tempnam()会在临时目录中创建一个随机文件并返回该文件的名称。如果由于诸如权限open_basedir或安全模式之类的问题而导致无法写入文件的问题,通常,仍将允许temp目录。
守候你守候我
TA贡献1802条经验 获得超10个赞
更多细节将很有用,但是假设它是一个linux系统,并且假设php在apache下运行,它将以用户apache所运行的状态运行。
一种简单的检查方法(再次假设环境是unix)是使用以下方法创建一个php文件:
<?php
print shell_exec( 'whoami' );
?>
这将给您用户。
对于我的AWS实例,apache运行此脚本时得到的是输出。
- 3 回答
- 0 关注
- 979 浏览
添加回答
举报
0/150
提交
取消