我安装了Zentyal4.0并查看了它的脚本是如何工作的。
我看到了一个perl函数,用于在机器中运行shell命令,如下所示
//Ebox::Sudo:root..。
/usr/bin/sudo -p sudo: {commands to perform}有人能解释一下外壳中的sudo是什么意思吗?
谢谢
发布于 2019-11-11 17:03:02
根据文档,-p用于(使用带有可选转义序列的自定义密码提示)使用/usr/bin/sudo -p sudo:仅用于测试
Readonly::Scalar our $SUDO_PATH => '/usr/bin/sudo -p sudo:'; # our declaration eases testing因为如果你改变到
/usr/bin/sudo -p anything:sudo的功能是正常的。
在您的评论中,您想知道为什么zentyal可以在不提示密码的情况下运行任何shell系统命令,因为当您安装zent亚尔时,您必须将用户设置为sudo组或admin (这类似于sudo组)。
管理组的成员可以获得根目录特权%admin ALL=( ALL ) ALL
最后一个都允许运行任何命令
发布于 2017-11-09 09:25:06
这个答案给出了命令中的sudo和-p sudo:的答案。
sudo本身是一个特权命令,允许用户执行命令(如果在sudoers文件中允许的话),这通常是普通用户不允许的。
sudoers文件可以准确地确定允许用户运行哪些命令。通常,这些命令可以通过在每次运行命令时提示用户密码来设置sudoers文件,或者通过添加NOPASSWD选项来运行,该选项允许用户运行sudo命令而不必重新键入其密码。
示例:普通用户无法运行dmidecode,因为您将被拒绝访问。
[user@host ~]$ dmidecode
# dmidecode 3.0
Scanning /dev/mem for entry point.
/dev/mem: Permission denied但是,如果在sudoers文件中允许,则可以允许用户以超级用户的身份运行命令。
[user@host ~]$ sudo dmidecode下面是一个sudoers文件条目的示例,它允许用户只使用sudo运行一些dmidecode和sar,而不提示输入密码。
user123 ALL=(ALL) NOPASSWD: /usr/sbin/dmidecode, /usr/bin/sar对于-p sudo:部分。
-p (提示)选项允许您覆盖默认密码提示并使用自定义提示。以下百分比(‘%’)转义由sudoers支持。
换句话说,在本例中,它将用sudo:文本替换sudo密码的默认提示。
因此,作为一个例子,运行一个类似于df -h的命令
[user@phost ~]$ sudo df -h
[sudo] password for host:但是当使用-p运行时
[user@phost ~]$ sudo -p sudo: df -h
sudo:提示!每当您需要编辑sudoers文件时,您都需要确保永远不做vi sudoers,因为它会改变文件的所有权。始终以root的形式运行visudo命令来编辑sudoers文件。
https://stackoverflow.com/questions/47195113
复制相似问题