우분투 - /var/lib/php/session/에 있지 않으면 바이너리를 실행할 수 없습니다.

우분투 - /var/lib/php/session/에 있지 않으면 바이너리를 실행할 수 없습니다.

저는 Ubuntu 18.04(Bionic Beaver) 상자와 몇 가지 다른 Debian 기반 시스템에서 이 이상한 문제를 발견했습니다. netcat데모를 위해 정적으로 연결된 바이너리(Unix 네트워크 도구)를 사용하겠지만 결과는 어느 시스템에서나 동일합니다. 기타 ELF 실행 파일.

이를 실행하면 다음 메시지가 표시됩니다(예: 일반 디렉터리에서 /tmp).

/tmp$ ./nc
-bash: ./nc: Permission denied

실행 권한에 대한 권한이 chmod정확합니다.

/tmp$ ls -lah nc
-rwxr-xr-x 1 user user 2.8M May 19 19:38 nc

나는 많은 조합을 시도했지만 내 친구가 바이너리를 /var/lib/php/session(PHPSESSID가 있는 위치)에 넣으라고 제안하고 작동하기 전까지는 아무것도 작동하지 않았습니다.

/var/lib/php/session$ ./nc
Ncat: You must specify a host to connect to. QUITTING.

하지만 이에 대한 설명을 찾지 못했고 php모든 시스템에 존재하는 것도 아닌데 이런 경우에는 어떻게 해야 할까요?

답변1

/tmp이는 플래그를 사용하여 설치할 때 발생하며 noexec, 이는 시스템의 경우일 수 있습니다. 출력을 참조하세요 mount. 이렇게 하면 /tmp파일 권한에 관계없이 아래에 저장된 실행 파일이 실행되지 않습니다 . 이 설정을 사용하여 세계적으로 쓰기 가능한 다른 디렉터리를 마운트하는 데 사용되는 아이디어 /tmp는 시스템에 바이너리를 배치하고 실행하는 것을 더 어렵게 만드는 것입니다.

마운트된 볼륨의 모든 디렉터리아니요 noexec(예: /var대부분의 경우) 실행하려는 실행 파일을 저장하는 데 사용할 수 있습니다. 어느 디렉토리무엇을 사용해야 하는지는 정확한 사용 사례에 따라 다릅니다.

관련 정보