如何在没有执行权限的情况下执行文件

viu*_*ser 10 permissions

假设user想执行一个脚本test.shls -l test.sh给出

 -rwxrwxr-- 1 root root 96 Feb 25 21:44 test.sh
Run Code Online (Sandbox Code Playgroud)

现在如果user不想复制test.sh(他做了chmod +x),他可以简单地做

sh test.sh
Run Code Online (Sandbox Code Playgroud)

执行test.sh

是否有一种类似的方式来执行没有执行权限的二进制程序?

Mel*_*lan 12

基本上,这与非常有名的 UNIX 技术面试问题之一相同,众所周知:

假设有 root 访问权限的人运行了一个命令chmod -R 444 /并使chmod二进制文件不可执行。你如何从中恢复?

有一个 perl 答案,有一个,它基本上运行的是一个不可执行的程序,chmod在这种情况下:

/lib/ld-linux.so /bin/chmod +x /bin/chmod
Run Code Online (Sandbox Code Playgroud)

我认为您可以将它应用于您知道可执行的任何其他程序。否则就要准备好迎接可能接踵而至的灾难

PS>/lib/ld-linux.so名称可能有所不同。因此,如果直接匹配不可用,请四处寻找名称相似的so's。例如在我的 CentOS 6 服务器上,它/lib/ld-linux.so.2是一个指向/lib/ld-2.12.so. 因此,您的里程可能会有所不同。

  • 好吧,如果你做了一个 `chmod -R 444 /`,那么 `/lib/ld-linux.so` 也不会是可执行的。如果您的(仍在运行的)shell 是 zsh,您可以执行 `zmodload zsh/files`,它会为您提供一个内置的 chmod。如果是 `ksh93`,你也可以执行 `command /opt/ast/bin/chmod` 来获得一个内置的 chmod。 (5认同)
  • 请注意,ld-linux.so 技巧仅适用于动态链接的程序。 (3认同)
  • @viuser 尝试使用 `/lib/x86_64-linux-gnu/ld-2.19.so /bin/ls` 。/lib 中的版本适用于 32 位可执行文件。 (2认同)

归档时间:

查看次数:

15535 次

最近记录:

10 年,2 月 前