[英]What's the best way to test if a user can sudo in Bash?
閱讀 sudo 手冊頁,我看到 -v 標志可用於檢查用戶是否在其工作站中具有 sudo 權限。 我有一段腳本需要測試它。 如果用戶沒有 sudo 權限,它會在屏幕上打印:
Sorry, user tester may not run sudo on debian.
我怎樣才能抑制這條消息並只執行代碼的 rest?
嘗試在命令中附加>/dev/null
。 如果在stderr中打印消息,則使用2>/dev/null
或在注釋中使用&>/dev/null
將stdout和stderr重定向到null。
如果can_auto_sudo=$(sudo -l -n sudo &>/dev/null; echo $?)
是0,你想sudo多少就sudo多少。
[ $EUID -eq 0 ] || exit 1
[ $EUID -eq 0 ] || exit 1
# 如果不是有效root則退出
sudo -l /usr/bin/program &>/dev/null || exit 2
sudo -l /usr/bin/program &>/dev/null || exit 2
# 如果它不能像 sudo 一樣運行就退出
sudo -l -n /usr/bin/program &>/dev/null || exit 3
sudo -l -n /usr/bin/program &>/dev/null || exit 3
# 如果需要交互則退出
`sudo -ll -U $USER # 告訴你用戶可以使用 sudo 運行哪些命令(必須自己解析)
[[ "$(printenv SUDO_USER)" = "" ]] || echo "$SUDO_USER is sudoing!" && exit 5
使用 sudo -l 或 --list 根據手冊頁,sudo 可以與 -l 或 --list 一起使用以獲取任何特定用戶允許和禁止命令的列表。
語法為:sudo -l [-AknS] [-a type] [-g group] [-h host] [-p prompt] [-U user] [-u user] [command]
如果我們使用 sudo --list 而沒有任何 arguments,那么它將為執行 sudo 命令的用戶打印允許和禁止命令的列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.