使用 sudo 和 su 自动登录

使用 sudo 和 su 自动登录

我知道存在安全风险,但我正在家里放置的一台很少使用的旧 *nix 机器上执行此实验/练习。所以做这个练习不会给我的机器带来任何安全风险。话虽如此,请不要发表任何有关安全的评论。

我也知道我可以更改sudoers以禁用密码提示,但我对此不感兴趣。

我找到了一个命令:

echo "password" | sudo -S su

但效果很奇怪。我输入它,域名保持不变;我不会变成root。我还缺少其他东西还是有更好的方法来做到这一点?


我做过的事情:

  1. \n在密码末尾添加了一个:密码验证不正确。
  2. 省略su: 打印出如何sudo正确使用的用法

答案1

这很奇怪,但这对我有用:

% echo -e "password\n" | sudo -S su
<myusername>'s password:HOSTNAME: Undefined variable.
% sudo -S su

因此,在第一步中,密码被传递到sudo(使用-e标志来回显,因此这\n实际上是一个换行符),并且在第二次运行中,身份验证将在不提示输入任何密码的情况下进行。

(第二行的返回可能是由于系统设置不当......)

编辑:在该 xterm 会话中,我可以sudo -S <command>根据需要多次调用...这可能是因为我在 sudo 密码只需输入一次的时间限制内。

答案2

我用了以下

echo password | sudo -S su - user_to_switch_to

然后运行

sudo -S su - user_to_switch_to

切换到您想要的用户,无需手动输入密码。

(注意用您的密码和用户替换密码和 user_to_switch_to )

答案3

我有一种挥之不去的感觉,你正在尝试在执行 I/O 重定向时运行 su (和朋友)的交互式 shell。我认为这不会起作用,echo passwd|即会在密码后给你一个 eof (文件结尾)。我认为您将需要诸如 Expect 或拨号脚本实用程序之类的东西。 Expect 有一个传递模式,可以在脚本末尾调用。如果您的命令不像 xterm 那样是交互式的(尽管完全交互式,但不需要标准输入),则不需要这样做。还要注意从标准错误中读取的一些密码,这至少可以说使事情变得有趣。(他们这样做是为了我/o 重定向不太可能干扰您的密码提示)

相关内容