首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >‘`sudo -v &’和‘`sh /dev/stdin`’在这里的目的是什么?

‘`sudo -v &’和‘`sh /dev/stdin`’在这里的目的是什么?
EN

Unix & Linux用户
提问于 2018-07-17 22:27:04
回答 1查看 1.3K关注 0票数 3

来自https://calibre-ebook.com/download_linux

代码语言:javascript
复制
sudo -v && wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sudo sh /dev/stdin

sudo -v &&在这里的目的是什么,因为man sudo

-v,--验证更新用户缓存的凭据,必要时对用户进行身份验证。对于sudoers插件,默认情况下这会将sudo超时时间再延长15分钟,但不会运行命令。并非所有安全策略都支持缓存的凭据。

sh /dev/stdin的目的是什么?(在Ubuntu18.04中,sh是破折号)

谢谢。

EN

回答 1

Unix & Linux用户

发布于 2018-07-17 23:31:57

sudo -v &&在这里的目的是什么?

我相信这会尽量减少用户的惊讶。考虑两种情况:

  1. sudo未配置为命令需要密码( NOPASSWD标记)

相对于:

  1. sudo被配置为需要命令的密码。

在第一个场景中,对sudo的两个调用都在没有任何提示的情况下成功。问题解决了!

在第二个场景中,还有两种可能性:用户最近已经通过sudo身份验证,或者他们没有。

  • 如果它们最近进行了身份验证,sudo -v只需更新缓存凭据的时间戳即可。
  • 如果用户最近没有对sudo进行身份验证,它将提示他们输入密码;一旦经过验证,他们的凭据就会被缓存。

一旦sudo -v进程成功,第二个sudo sh /dev/stdin调用应该使用其缓存的凭据并不间断地运行。

考虑另一种情况( sudo仍然被配置为提示输入密码),其中没有初始的sudo -v命令。在这种情况下,wget可能已经将输出写到stdout或stderr,这可能会导致用户错过看到它,并想知道为什么什么都没有发生。

sh /dev/stdin的目的是什么?

在这里,sh是用一个参数作为command_file调用的,这个参数是一个特殊的文件--一个指向stdin的链接。

名称破折号-命令解释器(外壳)简要说明破折号.[command_file 争论...]

结果,sh读取command_file,期待并执行它的命令。这个特殊的stdin“文件”通过管道连接到来自wget的输出,因此最终的结果是将URL的内容发送到根级shell。

我不知道为什么口径项目具体选择这种语法。备选办法包括:

  • ... | sudo sh
  • ... | sudo sh -
票数 6
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/456881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档