tmux 是否没有为会话中的进程询问 sudo 密码(事先进行身份验证)?

sda*_*aau 5 tmux sudo

我已经看到[解决] 为什么 sudo 在 tmux/ssh 会话中要求输入用户密码?· GitHub Gist,看起来这是设计使然,但我想我还是会问:

假设我使用这样的命令:

tmux new-session -d 'sudo udevadm monitor -e' \; attach
Run Code Online (Sandbox Code Playgroud)

一旦tmux开始新会话,它就会sudo按预期要求输入密码。但后来我尝试通过sudo事先验证来“作弊” :

$ sudo --validate
[sudo] password for user:
$ tmux new-session -d 'sudo udevadm monitor -e' \; attach
Run Code Online (Sandbox Code Playgroud)

...这要求再次sudo密码尽快tmux启动对话-即使我已输入密码成功提前。

那么有没有一种方法可以tmux在内部使用 (a) sudo 处理的进程启动会话,并且事先只有一个 sudo 密码验证?

Jef*_*ler 5

如果您可以修改 /etc/sudoers,最简单的解决方案是tty_tickets为您的用户取消设置该选项:

Defaults:yourlogin !tty_tickets
Run Code Online (Sandbox Code Playgroud)

然后你可以在运行 tmux 之前运行一个 sudo 命令,并且 sudo 将更新你的(单个)时间戳并允许后续的 sudo 命令没有密码提示(在timestamp_timeout 内)。

这是相关的选项,因为通常会设置 tty_tickets 选项,它需要为每个 tty 设置密码,而 tmux 会启动一个新的 tty。