[英]Shell script getting superuser privilege without being run as sudo
这是我的脚本:
脚本.sh :
sudo cat /etc/passwd-
如果我在sudo
会话中(例如,几分钟前我用sudo
运行了另一个命令),现在运行
script.sh
该脚本将获得sudo
访问权限。 但是,如果我运行cat /etc/passwd-/
,则会收到权限被拒绝错误。
作为用户,我不希望 script.sh 能够如此简单地获得超级用户权限(例如,我没有通过sudo script.sh
授予超级用户权限)。
这是预期的行为吗? 是否可配置?
我认为这种行为与sudo su
完全相似,例如可能允许超级用户访问您在该会话中运行的任何脚本,但更糟糕的是,因为您甚至可能不知道它,也不知道它何时结束(至少不是没有手动检查)
这是预期的行为吗?
是的,确实,这是预期的行为。 用户的 sudo 缓存凭据对此负责。
可配置吗?
是的,它是可配置的。
我认为您的安全担忧是有效的。 如果脚本是使用显式sudo
命令编写的,则在之前运行sudo
命令的终端中运行script.sh
(在特定超时内)将授予脚本超级用户权限。
您可以通过运行以下命令来避免在以 sudo 身份运行时不提示输入密码的任何脚本:
sudo -k script.sh
无论之前是否有任何 sudo 命令或会话,它都会要求输入密码。
并在没有 sudo 的情况下运行 script.sh,即只使用
script.sh
并仍然提示输入 sudo 命令的密码:
您可以永久更改超时值(sudo 维护会话的持续时间):
运行sudo visudo
然后换行:
Defaults env_reset
到
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 命令,它肯定会提示输入密码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.