这是我的脚本:
script.sh:
sudo cat /etc/passwd-
如果我处于sudo会话中(例如,几分钟前我用sudo运行了另一个命令),现在运行
script.sh
该脚本将获得sudo访问.但是,如果我运行cat / etc / passwd- /,则会收到拒绝权限错误.
作为用户,我不希望script.sh能够这么简单地获得超级用户特权(例如,没有我通过sudo script.sh授予超级用户特权的访问权).
这是预期的行为吗?
它是可配置的吗?
我认为该行为与sudo su完全相似,例如,可能使超级用户可以访问您在该会话中运行的任何脚本,但更糟糕的是,因为您甚至可能不知道它,也不知道它何时结束(至少不是没有手动检查)
解决方法:
Is this expected behavIoUr ?
是的,确实是一种预期的行为.用户对sudo缓存的凭据负责.
Is it configurable ?
是的,它是可配置的.
而且我认为您的安全隐患是有效的.如果脚本是使用显式sudo命令编写的,则在之前(在一定的超时时间内)运行sudo命令的终端中运行script.sh将赋予脚本超级用户特权.
通过使用以下命令运行它,可以避免以sudo运行时不提示输入密码的任何脚本:
sudo -k script.sh
无论先前的任何sudo命令或会话如何,它都会要求输入密码.
And to run script.sh without sudo i.e with just
script.sh
and still prompt
for password for the sudo command/s:
您可以永久更改超时值(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命令,则肯定会提示您输入密码.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。