su 和重定向

su 和重定向

下面一行显示了我可以在 Red hat 5.5 下使用的构造原理:

$ echo "foo" | ssh myhost "echo \"cat <&1\" | su --login"
foo

事实上,我一直不清楚为什么 cat 可以读取 FD #1,但它确实有效。

现在 Red Hat 6.3 不再起作用:

$ echo "foo" | ssh myhost "echo \"cat <&1\" | su --login"
cat: -: Bad file descriptor

第一个问题:为什么这不再起作用?第二个问题:有人知道在 Red Hat 6.3 下工作的解决方案吗?

所有想法均受到赞赏。

阿尔明

答案1

等等,所以基本上你想要 ssh 到 myhost,然后立即 su 到 root,而不提示密码,这样做的副作用是将 root 密码放在ps输出中,供本地和可能的远程计算机上的每个人看到?

是的,嗯,不要这样做。

有三种方法可以做到这一点,它们既适用于任何地方,又可以消除 root 密码泄露的情况(按照我喜欢的顺序):

  1. 只需 ssh 到 root@myhost。使用公钥身份验证以避免密码提示。最好对您的私钥进行加密(但使用 SSH 代理和/或连接复用来减少密码提示)。您可以将 ssh 配置为允许使用 root 登录PermitRootLogin yes或仅使用公钥登录PermitRootLogin without-password
  2. sudo -i像现在一样使用 SSH,但使用su --login.配置 sudo (通过visudo)以允许您的非 root 用户以 root 身份执行所有命令(甚至可能没有密码,但从安全角度来看,您的非 root 用户与 root 等效)
  3. 更改您的 PAM 配置,使其su不提示非用户输入密码。从安全角度来看,您的用户再次相当于 root。

相关内容