[php] 어떤 사용자 PHP가 실행 중인지 확인하는 방법은 무엇입니까?

PHP가 아무도 실행 중인지 감지해야합니다. 어떻게해야합니까?

“아무도”에 대한 다른 이름이 있습니까? “아파치”? 다른 사람?



답변

가능한 경우 현재 사용자 계정을 posix_geteuid조사한 다음 posix_getpwuid.

$username = posix_getpwuid(posix_geteuid())['name'];

그러나 안전 모드에서 실행중인 경우 (종종 exec가 비활성화 된 경우), PHP 프로세스가 기본 www-data또는 apache계정 이외의 다른 곳에서 실행되지 않을 가능성이 높습니다 .


답변

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


답변

일종의 역방향이지만 exec / system없이 :

file_put_contents("testFile", "test");
$user = fileowner("testFile");
unlink("testFile");

파일을 생성하는 경우 소유자는 PHP 사용자가됩니다.

이는 tempnam()임시 디렉토리에 임의의 파일을 만들고 해당 파일의 이름을 반환하는와 같은 임시 파일 함수를 사용하여 실행할 수도 있습니다 . 권한과 같은 문제 open_basedir또는 파일 쓰기를 방지하는 안전 모드 로 인해 문제가있는 경우 일반적으로 임시 디렉터리가 계속 허용됩니다.


답변

자세한 내용은 유용 할 수 있지만 Linux 시스템이고 php가 아파치에서 실행되고 있다고 가정하면 사용자 아파치가 실행되는 방식으로 실행됩니다.

확인하는 쉬운 방법 (다시 말하지만 환경과 같은 일부 유닉스를 가정)은 다음을 사용하여 php 파일을 만드는 것입니다.

<?php
    print shell_exec( 'whoami' );
?>

그것은 당신에게 사용자를 줄 것입니다.

내 AWS 인스턴스의 apache경우이 스크립트를 실행할 때 출력으로 표시됩니다.


답변

다음과 같이 백틱을 사용해 볼 수 있습니다.

echo `whoami`;


답변

나는 사용할 것이다 :

lsof -i
lsof -i | less
lsof -i | grep :http

이들 중 하나. ssh 명령 줄에 em을 입력하면 어떤 사용자가 어떤 서비스를 듣고 있는지 확인할 수 있습니다.

이 파일을 확인할 수도 있습니다.

more /etc/apache2/envvars

다음 줄을 찾으십시오.

export APACHE_RUN_USER=user-name
export APACHE_RUN_GROUP=group-name

envvars 파일 데이터를 필터링하려면 grep을 사용할 수 있습니다.

 more  /etc/apache2/envvars |grep APACHE_RUN_


답변

exec('whoami') 이것을 할 것이다

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