簡體   English   中英

perl/eBox/Zentyal 中的 Sudo 命令

[英]Sudo command in perl/eBox/Zentyal

我安裝了 Zentyal 4.0 並查看它的腳本如何運行。

我看到了一個 perl 函數來在機器中運行 shell 命令,如下所示

//Ebox::Sudo:root

...

/usr/bin/sudo -p sudo: {commands to perform}

誰能解釋一下 shell 中的sudo是什么意思?

謝謝

根據文檔的 -p 用於(使用帶有可選轉義序列的自定義密碼提示)zentyal 使用 /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 的功能是正常的。

在您的評論中,您想知道為什么 zentyal 可以在不提示密碼的情況下運行任何 shell 系統命令,因為當您安裝 zentyal 時,您必須將用戶設置為 sudo 組或管理員(這類似於 sudo 組)

admin 組的成員可以獲得 root 權限 %admin ALL=(ALL) ALL

最后一個 ALL 允許運行任何命令

案例相關: https : //forum.zentyal.org/index.php/topic,34663.0.html

此答案為您提供了sudo-p sudo:的答案。

sudo本身是一個權限命令,允許用戶執行命令,如果在sudoers文件中允許,一般普通用戶是不允許的。

sudoers 文件可以准確確定允許用戶運行哪些命令。 通常,這些命令可以通過在每次運行命令時提示輸入用戶密碼來設置 sudoers 文件來運行,或者通過添加允許用戶運行 sudo 命令而無需重新輸入密碼的 NOPASSWD 選項來運行。

示例:普通用戶無法運行 dmidecode,因為您將獲得訪問拒絕。

[user@host ~]$ dmidecode
# dmidecode 3.0
Scanning /dev/mem for entry point.
/dev/mem: Permission denied

但是如果在 sudoers 文件中允許,您可以允許用戶以超級用戶身份運行命令。

[user@host ~]$ sudo dmidecode

這是一個 sudoers 文件條目的示例,它允許用戶只使用 sudo 運行一些dmidecodesar ,而不提示輸入密碼。

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 文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM