在没有 sudo 的情况下运行 root 拥有的二进制文件

14 permissions executable

我在求职面试中遇到了一个问题:

您如何在user1没有sudo权限且无法访问root帐户的情况下使用用户执行(运行)程序:

$ whoami
user1
$ ls -l ~/binary_program
-rw-r--r-- 1 root root 126160 Jan 17 18:57 /home/user1/binary_program
Run Code Online (Sandbox Code Playgroud)

Tho*_*man 20

您可以直接使用 Linux动态链接器/加载器来运行您已阅读但没有执行权限的ELF 可执行文件

$ /lib/ld-linux.so.* /home/user1/binary_program
Run Code Online (Sandbox Code Playgroud)

通常执行ELF可执行文件时,会使用存储在.interp程序代码段中的动态链接器。直接调用动态链接器(外部工作面试)的原因包括传递它的命令行选项以修改其行为。

请注意,动态链接器的实际位置可能非常依赖于环境,例如在 64 位 Ubuntu 中,链接器位于/lib64/ld-linux-x86-64.so.2.


Jos*_* R. 16

由于您有阅读权限:

$ cp ~/binary_program my_binary
$ chmod +x my_binary
$ ./my_binary
Run Code Online (Sandbox Code Playgroud)

当然,这不会自动神奇地授予您升级的权限。您仍然会以普通用户身份执行该二进制文件。

  • @user2555595 仅[适用于脚本](https://unix.stackexchange.com/a/87600/43779),而不是二进制文件。更具体地说,如果`bash` 作为解释器被调用,则只有`bash` 或POSIX shell 脚本。 (5认同)
  • @ user2555595 恐怕你错了。尝试删除文件 _you own_ 上的执行位并执行它。在没有设置执行位的情况下执行文件时,即使是 root 也会“权限被拒绝”。 (4认同)
  • @inivanoff1 请不要忘记将其中一个答案标记为“已接受”,以便人们知道此问题已解决。 (2认同)