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完全相似,例如,可能使超级用户可以访问您在该会话中运行的任何脚本,但更糟糕的是,因为您甚至可能不知道它,也不知道它何时结束(至少不是没有手动检查)

解决方法:

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命令,则肯定会提示您输入密码.

标签:bash,shell,permissions,sudo,linux

来源: https://codeday.me/bug/20191120/2042439.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值