我知道手册页中关于 -K 和 -k 是怎么说的:
‑K
‑K(sure kill)选项与 ‑k 类似,不同之处在于它会完全删除用户的缓存凭据,并且不能与命令或其他选项一起使用。此选项不需要密码。并非所有安全策略都支持凭据缓存。
‑k[命令]
单独使用时,sudo 的 ‑k(kill)选项会使用户的缓存凭据无效。下次运行 sudo 时将需要输入密码。此选项不需要密码,添加该选项是为了允许用户从 .logout 文件中撤销 sudo 权限。并非所有安全策略都支持凭据缓存。与可能需要密码的命令或选项结合使用时,‑k 选项将导致 sudo 忽略用户的缓存凭据。因此,sudo 将提示输入密码(如果安全策略需要密码),并且不会更新用户的缓存凭据。
因此,如果不需要结合这些选项使用命令,我是否可以正确地假设 K 总是比 k 更好的选择?
答案1
sudo -K
并且sudo -k
,无需命令,执行相同的操作:它们使用户的缓存凭据无效。
sudo -k command ...
不同之处在于:忽略用户对当前命令的缓存凭据,但不会使其无效。
当您想要运行单个命令而不使用或破坏缓存的凭据时,请-k
使用命令。(我实际上不确定您为什么要这样做,但有这个功能。)
如果您想要破坏缓存的凭据,请使用sudo -k
或。sudo -K
概括:
sudo -k # clobbers cached credentials
sudo -K # clobbers cached credentials
sudo -k command # ignores cached credentials
sudo -K command # invalid
更新 :
重新审视这个答案,看起来-k
和之间的唯一区别-K
在于-k
接受命令而不-K
接受命令。我不相信有两个单独的选项是有用的,因为-K
实际上并没有添加任何-k
未提供的功能。手册页中的措辞有细微的差别;-k
“使用户的缓存凭据无效”,而-K
“完全删除用户的缓存凭据”。我不相信思考这表明其影响凭证的方式存在着真正的差异。
答案2
sudo -K
将使所有终端会话中的缓存凭据失效。在锁定 DE 之前运行此功能很有用。
sudo -k
只会使当前终端会话的缓存凭据无效。