![如何在没有执行权限的情况下执行文件](https://linux22.com/image/84309/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%B2%A1%E6%9C%89%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6.png)
假设user
想要执行一个脚本test.sh
但ls -l test.sh
给出
-rwxrwxr-- 1 root root 96 Feb 25 21:44 test.sh
现在,如果user
不想复制test.sh
(他确实这样做了chmod +x
),他可以简单地这样做
sh test.sh
执行test.sh
。
是否有一种类似的方法来执行没有执行权限的二进制程序?
答案1
基本上,这与众所周知的著名 UNIX 技术面试问题之一是一样的:
假设具有 root 访问权限的人运行了命令chmod -R 444 /
并使chmod
二进制文件不可执行。你如何从中恢复?
有一个 perl 答案,有一个,它基本上是运行一个不可执行的程序,chmod
在这种情况下:
/lib/ld-linux.so /bin/chmod +x /bin/chmod
我认为您可以将其应用于您知道可执行的任何其他程序。否则准备好迎接可能发生的灾难
PS>/lib/ld-linux.so
名称可能有所不同。因此,如果直接匹配不可用,请四处寻找类似名称的so
。例如,在我的 CentOS 6 服务器上,它是/lib/ld-linux.so.2
一个指向/lib/ld-2.12.so
.因此,您的里程可能会有所不同。
答案2
如果用户没有执行权限并且不能或不愿意更改它,则他们必须作为具有执行权限的组或用户来执行它。
如果他们知道 root 密码,那么:
su -c <executable>
如果他们不知道 root 密码,但受信任,sudo
则:
sudo <executable>
如果他们不知道 root 密码并且不受sudo
权限信任,那么他们就有理由运行可执行文件。