
我正在嘗試編寫一個 bash 腳本(在 Ubuntu 中),它將使用 tar 備份目錄。
如何檢查腳本,使其只能以 root 身分執行(或使用 sudo)?
例如,如果使用者執行該腳本,則應說明該腳本必須以 sudo 權限執行,然後登出。如果腳本以 root 身分執行,它將繼續通過檢查。
我知道必須有一個簡單的解決方案,我只是無法透過谷歌搜尋找到它。
答案1
若要取得有效 uid,請使用下列命令:
id -u
如果結果為“0”,則腳本要么以 root 身份運行,要么使用 sudo。您可以執行以下操作來執行檢查:
if [[ $(/usr/bin/id -u) -ne 0 ]]; then
echo "Not running as root"
exit
fi
答案2
我假設您知道透過將所有權更改為 root
chown root:root file
並將權限設定為700
chmod 700 file
你將完成同樣的事情 - 沒有建議以 sudo 運行。
但為了完整性,我將發布這個答案。
答案3
bash 變數$EUID
顯示腳本執行階段的有效 UID,如果要確保腳本以 root 身分執行,請檢查是否$EUID
包含值 0:
if [[ $EUID -ne 0 ]]; then
echo "$0 is not running as root. Try using sudo."
exit 2
fi
這比(對於 bash 腳本!)的解決方案更好,/usr/bin/id
因為它不需要外部命令。
答案4
您的目標是什麼,通知使用者他們應該以 root 身分執行腳本或作為某種安全預防措施?
如果您只是想通知用戶,任何 uid 建議都可以,但作為安全預防措施,它們就像馬上的輪胎一樣有用 - 沒有什麼可以阻止用戶複製腳本、取出 if 語句,並無論如何運行它。
如果這是安全問題,則該腳本應設為 700,由 root:root 擁有,以便任何其他使用者都無法讀取或執行該腳本。