首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perl/eBox/Zentyal中的Sudo命令

perl/eBox/Zentyal中的Sudo命令
EN

Stack Overflow用户
提问于 2017-11-09 06:18:29
回答 2查看 814关注 0票数 0

我安装了Zentyal4.0并查看了它的脚本是如何工作的。

我看到了一个perl函数,用于在机器中运行shell命令,如下所示

代码语言:javascript
复制
//Ebox::Sudo:root

..。

代码语言:javascript
复制
/usr/bin/sudo -p sudo: {commands to perform}

有人能解释一下外壳中的sudo是什么意思吗?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-11-11 17:03:02

根据文档,-p用于(使用带有可选转义序列的自定义密码提示)使用/usr/bin/sudo -p sudo:仅用于测试

代码语言:javascript
复制
Readonly::Scalar our $SUDO_PATH   => '/usr/bin/sudo -p sudo:'; # our declaration eases testing

因为如果你改变到

代码语言:javascript
复制
/usr/bin/sudo -p anything:

sudo的功能是正常的。

在您的评论中,您想知道为什么zentyal可以在不提示密码的情况下运行任何shell系统命令,因为当您安装zent亚尔时,您必须将用户设置为sudo组或admin (这类似于sudo组)。

管理组的成员可以获得根目录特权%admin ALL=( ALL ) ALL

最后一个都允许运行任何命令

案件相关:https://forum.zentyal.org/index.php/topic,34663.0.html

票数 1
EN

Stack Overflow用户

发布于 2017-11-09 09:25:06

这个答案给出了命令中的sudo-p sudo:的答案。

sudo本身是一个特权命令,允许用户执行命令(如果在sudoers文件中允许的话),这通常是普通用户不允许的。

sudoers文件可以准确地确定允许用户运行哪些命令。通常,这些命令可以通过在每次运行命令时提示用户密码来设置sudoers文件,或者通过添加NOPASSWD选项来运行,该选项允许用户运行sudo命令而不必重新键入其密码。

示例:普通用户无法运行dmidecode,因为您将被拒绝访问。

代码语言:javascript
复制
[user@host ~]$ dmidecode
# dmidecode 3.0
Scanning /dev/mem for entry point.
/dev/mem: Permission denied

但是,如果在sudoers文件中允许,则可以允许用户以超级用户的身份运行命令。

代码语言:javascript
复制
[user@host ~]$ sudo dmidecode

下面是一个sudoers文件条目的示例,它允许用户只使用sudo运行一些dmidecodesar,而不提示输入密码。

代码语言:javascript
复制
user123 ALL=(ALL) NOPASSWD: /usr/sbin/dmidecode, /usr/bin/sar

对于-p sudo:部分。

-p (提示)选项允许您覆盖默认密码提示并使用自定义提示。以下百分比(‘%’)转义由sudoers支持。

换句话说,在本例中,它将用sudo:文本替换sudo密码的默认提示。

因此,作为一个例子,运行一个类似于df -h的命令

代码语言:javascript
复制
[user@phost ~]$ sudo df -h
[sudo] password for host:

但是当使用-p运行时

代码语言:javascript
复制
[user@phost ~]$ sudo -p sudo: df -h
sudo:

提示!每当您需要编辑sudoers文件时,您都需要确保永远不做vi sudoers,因为它会改变文件的所有权。始终以root的形式运行visudo命令来编辑sudoers文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47195113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档