明确使用 `sudo -S` 的目的是什么?

Tim*_*Tim 6 sudo

从 sudo 的联机帮助页:

-S, --stdin

将提示写入标准错误并从标准输入读取密码,而不是使用终端设备。密码后必须跟一个换行符。

使用sudo -S而不仅仅是的目的是什么sudo

  • sudo默认情况下从标准输入读取密码是否正确?

  • “将提示写入标准错误”的目的是什么?sudo默认情况下是否将其写入标准输出?

  • 他们是否都要求密码后面必须跟一个换行符?

例如,在/sf/answers/2768715701/ 中sudo -S true仍然需要输入密码,那么它如何解决该帖子中的原始问题?当我搜索解决方案时,我找到了该链接是否应该在某些 shell 配置文件中运行需要 sudo 的脚本?

谢谢。


更新:

J.Taylor 的回复说

sudo 默认情况下不从 stdin 读取密码 - 它从终端界面读取。

我想知道如何在实现方面理解它。

当程序从标准输入读取时,它从标准输入始终绑定到的文件描述符 0 读取是否正确?

为什么sudo在使用sudowithout时无法判断是使用标准输入还是终端-S

程序(如sudo -S)如何实现从终端读取而不是从标准输入读取?

J. *_*lor 11

sudo没有从读取密码标准输入默认情况下-这从它读取终端接口。使用sudo -S允许您从另一个命令/文件输入密码,如下所示:printf "yourpassword\n" | sudo -S nano /etc/apt/sources.list

这可以在 shell 脚本中用于登录 sudo 而不提示输入密码,但您需要注意不要直接从 shell 执行此类操作,因为那样您的 sudo 密码将在 shell 历史记录中。

  • 对于密码提示,是的。例如,`echo abcd | sudo cat` 会让你输入密码,而不是使用 `abcd` 作为密码。 (7认同)