我这里有这种很不寻常的情况。我有一个旧的 Linux 系统,没有 sudo 或 su 命令。我没有对这台计算机的物理访问权限,因此无法以其他用户身份登录。
Linux内核是2.6.18-498,系统是red-hat 4.1.2-55。
我可以转到 /bin 目录,并且可以肯定地说那里没有 su 或 sudo 二进制文件。所以这不是 PATH 变量配置错误的情况。
这也是一个网络服务器,所以也许它是这样配置的。有没有办法以不同的用户身份运行命令?任何帮助,将不胜感激。
答案1
查看是否有任何远程登录服务正在运行(in.telnetd
、rlogind
、sshd
),然后对本地主机 (127.0.0.1) 运行适当的登录命令。例如,如果你有sshd
那么:
$ ssh [email protected]
和telnet
你一起跑:
$ telnet -l root 127.0.0.1
和rlogin
你一起跑:
$ rlogin -l root 127.0.0.1
答案2
任何带有 set-uid 或 set gid-bit 的命令。将作为拥有用户或组运行。然而,如果它们写得正确,它们不会让你做任何你不应该做的事情。sudo
并且su
仅当您提供正确的密码时才允许您执行任何重要操作。大多数其他工具只会安全地做一件事,但不允许您升级权限。
但是,如果您可以以 root 身份写入存储(通过删除介质,然后插入另一台计算机,或启动到不同的操作系统),那么您可以使用适当的权限添加所需的文件。
具有 set-uid/set-gid 位的可执行文件是仅有的Unix 系统中提升权限的方式(现代系统现在具有功能,但这些功能是相同的)。
内核不使用密码,因此为了实现密码,需要创建一个具有 root 所有者和 set-uid 位设置的可执行文件。该可执行文件将检查密码,然后适当地设置用户,并启动 shell(或其他东西)。
假设没有使用功能,那么find / -executable -type f -user root -perm -u+s -print 2>/dev/null
将列出所有提升权限的可执行文件(至少暂时),大多数(也许全部)将毫无用处。