Ubuntu终端中sudo结合&后台运行时密码明文显示问题咨询
sudo 结合后台操作符 & 时密码明文显示的原因
这是作业控制机制导致的预期行为,并非sudo的bug。
具体原因
当你执行sudo wireshark &这类命令时,shell会把sudo进程放到后台运行:
- 后台进程默认无法获取终端的控制权,shell会接管当前终端的输入输出
- sudo原本是通过终端控制调用(比如
tcsetattr)来关闭密码输入时的回显,但后台状态下这些调用无法生效 - 终端就会按照默认模式,把你输入的密码明文显示出来
正确的操作方式
如果要后台运行需要sudo权限的命令,推荐两种方式:
- 先执行
sudo -v刷新sudo会话(此时会正常隐藏密码输入),之后再后台运行目标命令,比如:sudo -v wireshark & - 使用
screen或tmux这类终端复用工具,在独立会话中运行sudo命令,再detach后台,这样能保证终端控制权正常。
内容的提问来源于stack exchange,提问作者Firato
相关产品推荐
相关产品推荐

