这是预期行为吗?
确实如此,这是预期的行为。用户缓存的sudo凭据对其负责。
它可以配置吗?
是的,它可以配置。
我认为您的安全问题是有效的。在运行script.sh
之前(在某个超时时间内)在终端中运行sudo
命令将赋予该脚本超级用户特权(如果脚本是使用显式sudo
命令编写的)。
您可以通过以下方式避免任何未提示输入密码就以sudo身份运行的脚本:
sudo -k script.sh
无论之前是否执行过sudo命令或会话,它都会要求输入密码。
如果想要只使用 script.sh
命令运行 script.sh 并提示输入 sudo 命令的密码:
您可以永久更改超时值(sudo维护会话的持续时间):
运行 sudo visudo
然后更改以下行:
Defaults env_reset
To
Defaults env_reset,timestamp_timeout=0
保存并退出(ctrl+X然后Y)
这将确保每次运行sudo时都会要求输入密码。
或者如果您不想永久更改它,并且希望您的脚本至少在一次提示密码后再保持会话,则可以像这样更改您的脚本:
sudo -k first-command-with-sudo
sudo second-command
sudo third
and so on
此脚本将至少要求输入一次密码,无论之前是否使用过sudo命令或会话。
如果您不知道(或无权访问)script.sh脚本的内容(它可能包含sudo命令,也可能没有),并且您想确保任何sudo命令都至少会提示一次密码,请在运行脚本之前运行sudo -K(大写K)。
现在,如果您运行script.sh并且其中包含sudo命令,则它肯定会提示输入密码。
sudo
进行的操作)。 - Etan Reisnersudo
运行的会话视为su
会话,这样你就会更安全(不要从那里做其他事情,限制访问范围等)。你可能能够强制过期缓存等。查看sudo
配置。你可以用它做很多事情。 - Etan Reisner