我正在研究 sudo grant 如何跨父/子进程工作,但是,我很困惑。
如果我打开终端(模拟器,在图形环境中),并执行:
$ sudo bash -c "sudo -v"
# I'm asked the password
$ sudo -v
# I'm not asked the password
我可以看到,如果子进程被授予 sudo 权限(通过子 shell),则父进程(当前 shell)也会被授予这些权限。
但是,如果我在同一个终端模拟器中打开一个新选项卡,然后执行:
$ sudo -v
现在我被要求输入密码。
由于两个 shell/选项卡都是同一终端仿真器进程的子进程,因此与简单的父/子关系相比,sudo 授予基于不同/附加的内容。
我已经检查了 sudo 手册页,但是,它似乎不包含此特定信息。
与父/子进程相关的权限是如何精确授予的?
答案1
我可以看到,如果子进程被授予 sudo 权限(通过子 shell),则父进程(当前 shell)也会被授予这些权限。
不,孩子不会影响父母。
第二个sudo
不需要密码,因为您在第一个之后运行它不到 5 分钟。
sudo
另一个窗口中的shell在不同的 shell 中运行,该 shell 具有与第一个窗口中的 shell 不同的凭据缓存。缓存为空,因此需要密码。