Ubuntu - 无法执行二进制文件,除非它们驻留在 /var/lib/php/session/ 中

Ubuntu - 无法执行二进制文件,除非它们驻留在 /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,在大多数情况下)可用于存储您希望运行的可执行文件。哪个目录应该使用取决于您的确切用例。

相关内容