2011-06-18 74 views

回答

5

唯一確定的測試是檢查POSIX geteuid() call是否返回零。

爲此,您可能必須使用類似luaposix的Lua庫。

或者您可以將其運行並運行id -u以查看它是否輸出0

+0

謝謝,這應該工作。 :) –

1

因爲它是Linux,你可以試試這個,這是股票的Lua,不需要額外的庫:

function running_as_root() 
    local f=io.open"/root" 
    if f==nil then return false else io.close(f) return true end 
end 

但爲什麼不嘗試寫入/ SYS /如果出現這種情況報告失敗?

+0

嘗試執行io似乎很麻煩,如果失敗了,那麼它們就不是root。如果你找到我,我正在尋找一些不那麼傻的東西。但有效的建議,所以給你一個+1 :) –

+0

並非每個Linux系統都有一個「/ root」目錄。 – Nemo

+0

但他們確實有「/」。 「/ bin」或「/ usr」可能會一樣好。但我在這裏同意lhf。只要去做計劃中的IO,並且失敗時就會發出禮貌的消息,說明在失敗時需要成爲root用戶。 – RBerteig

0

要做的最好的事情就是報告失敗:您可以擁有一個系統,其中root用戶以外的其他用戶可以訪問sysfs。

fd = assert(io.open("/sys/....")) 
相關問題