登录后如何“解锁”sudo 15 分钟?

fra*_*ter 5 ssh passwords login

对我来说,在通过登录授权自己之后,我必须单独授权自己使用 sudo,可能会输入两次密码,这对我来说没有意义。最近,当我从我的 android 手机登录时,这一切都达到了顶峰,在触摸屏上输入密码需要 10 或 15 秒,而不是在键盘上输入 2 秒!

因此,我希望对 sudo 进行理想的配置,以便在授权自己(无论是通过控制台登录、ssh 密码登录还是 ssh 密钥登录)后,sudo 被解锁 15 分钟,就好像我为 sudo 命令输入了密码一样。

因此,如果我将控制台保持打开状态,这将保持自动锁定 sudo 的安全优势,但会提供一些便利。

我想缺点是无论我是否想使用 sudo,我都会在每次登录时解锁 sudo,并且允许 sudo 进行 ssh 密钥登录可能允许破坏私钥的人在不知道密码的情况下使用 sudo,我认为这是委托机器的安全到私钥的安全。所以丢失私钥会从远程访问漏洞转移到远程根访问漏洞......

不过,还是挺方便的!

use*_*686 4

可以通过pam_exec运行在/var/lib/sudo.

将以下内容附加到/etc/pam.d/sshd和/或/etc/pam.d/login(但不附加 common-session或类似的内容):

session optional pam_exec.so /usr/lib/sudo-auth
Run Code Online (Sandbox Code Playgroud)

该脚本可以是:

#!/bin/sh

# Depends on your distro. May be /var/db/sudo, /var/spool/sudo, etc.
root="/var/lib/sudo"

if [ "$PAM_USER" ]; then
    dir="$root/$PAM_USER/"
    if [ "$PAM_TYPE" = open_session ]; then
        mkdir -p "$dir" && touch "$dir"
    fi
else
    echo "Must be run from PAM." >&2
fi
Run Code Online (Sandbox Code Playgroud)

由于 SSH(特别是 opensshd)与 ttys 的工作方式,需要在sudoerstty_tickets中禁用该选项。

可以将其修改为仅验证指定的远程主机,方法是将pam_access上面的内容放入pam_execPAM 堆栈中,或者仅$PAM_RHOST在脚本中进行比较。(但是,此类检查不适用于移动客户端。)