我已经看过了[已解决] 为什么 sudo 在 tmux/ssh 会话中要求用户密码? · GitHub 要点,看起来这是设计使然,但我想我还是会问:
假设我使用这样的命令:
tmux new-session -d 'sudo udevadm monitor -e' \; attach
正如预期的那样,一旦tmux
启动新会话,它就会要求sudo
输入密码。但后来我尝试通过sudo
事先验证来“作弊”:
$ sudo --validate
[sudo] password for user:
$ tmux new-session -d 'sudo udevadm monitor -e' \; attach
...这要求再次sudo
会话启动后立即输入密码tmux
- 即使我已经事先成功输入了密码。
那么有没有一种方法可以启动一个tmux
会话,其中包含(一个)sudo 进程,并且事先只进行一次 sudo 密码验证?
答案1
如果您可以修改 /etc/sudoers,最简单的解决方案是取消tty_tickets
用户的选项设置:
Defaults:yourlogin !tty_tickets
然后,您可以在运行 tmux 之前运行 sudo 命令,并且 sudo 将更新您的(单个)时间戳并允许后续 sudo 命令而无需密码提示(在 timestamp_timeout 内)。
这是相关选项,因为通常会设置 tty_tickets 选项,该选项需要每个 tty 的密码,并且 tmux 会启动一个新的 tty。