linux推出超级用户_关于linux:Shell脚本获得超级用户权限而不以sudo身份运行

这是我的脚本:

script.sh:

sudo cat /etc/passwd-

如果我在sudo会话中(例如我几分钟前用sudo运行了另一个命令),现在运行

script.sh

该脚本将获得sudo访问权限。 但是,如果我运行cat /etc/passwd-/,我将收到权限被拒绝错误。

作为一个用户,我不希望script.sh能够如此简单地获得超级用户权限(例如,没有我使用sudo script.sh访问超级用户权限)。

这是预期的行为吗?

它是可配置的吗?

我认为这种行为完全类似于sudo su,e,g可能会让超级用户访问您在该会话中运行的任何脚本,但更糟糕的是,因为您可能甚至不知道它,并且不知道何时 结束(至少没有手动检查)

您的会话已缓存凭据。 当您自己运行脚本时,它们仍然被缓存。 在单独的会话中运行脚本以避免这种情况,并且您也可以调整缓存长度(也限制您可以使用sudo而不是"所有内容"执行的操作)。

如果所有脚本都可以请求凭据,那么使用sudo与超级用户会话有什么关系? 在缓存凭据时,您是否会创建一个特殊用户来运行非sudo脚本?

sudo比简单地允许用户成为超级用户更加可配置; 将用户限制为仅使用或不使用密码的某些特权命令。

像su会话那样处理你运行sudo的会话,你会更安全(不要从那里做其他事情,限制访问范围等)。 您可以强制使缓存等过期。查看sudo配置。 你可以用它做很多事情。

您可以使用此更改日志缓存凭据的方式。

Is this expected behaviour ?

是的,确实这是一种预期的行为。用户对sudo的缓存凭据负责。

Is it configurable ?

是的,它是可配置的。

我认为您的安全问题是有效的。如果脚本是使用显式sudo命令编写的,则在之前(在某个超时时间内)运行sudo命令的终端中运行script.sh将为脚本提供超级用户权限。

通过运行sudo,可以避免任何脚本在以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命令,它肯定会提示输入密码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值