簡體   English   中英

BASH:檢查用戶是否是root用戶

[英]BASH: Check if user is root

如何在BASH腳本中檢查用戶是否為root用戶?

我知道我可以使用

[[ $UID -eq 0 ]] || echo "Not root"

要么

[[ $EUID -eq 0 ]] || echo "Not root"

但是如果腳本是通過fakeroot調用的,那么UID和EUID都是0(當然,因為fakeroot偽造了root權限)。

但有沒有辦法檢查用戶是否是root用戶? 沒有嘗試做只有root可以做的事情(即在/中創建一個文件)?

Fakeroot設置包含libfakeroot路徑的自定義LD_LIBRARY_PATH 例如:

/usr/lib/x86_64-linux-gnu/libfakeroot:/usr/lib64/libfakeroot:/usr/lib32/libfakeroot

您可以使用它來檢測應用程序是否在fakeroot中運行, libfakeroot路徑迭代並查找libfakeroot

示例代碼:

IS_FAKEROOT=false

for path in ${LD_LIBRARY_PATH//:/ }; do
        if [[ "$path" == *libfakeroot ]]; then
                IS_FAKEROOT=true
                break
        fi
done

echo "$IS_FAKEROOT"

在這里,下面的腳本將發現用戶是否是root用戶。

#!/bin/bash
touch /checkroot 2>/dev/null

uid=`stat -c "%u" /checkroot 2>/dev/null`

if [ "$uid" = "0" ]
then
    echo "Root user"

else
    echo "Not a root user"
fi

rm /checkroot 2>/dev/null

在上面的例子中,我將嘗試在根目錄中創建一個文件,如果我不是root用戶並且我沒有權限它會給出錯誤,我將該錯誤重定向到/ dev / null。

如果用戶具有該權限,則將創建該文件。 然后使用stat獲取該文件的用戶ID,並將其存儲到變量uid中。

在if條件中使用該變量我將檢查。

如果將創建臨時文件,則rm命令將刪除該文件。

但請確保根目錄中尚不存在該文件。

暫無
暫無

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

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