如何判断脚本是否以超级用户身份运行?

我在Lua写了一个风扇控制脚本,我正在运行Linux。 风扇控制需要写入/ sys /所以我需要成为超级用户。

我想通知用户,如果他们不是超级用户。 这样做最好的方法是什么?

唯一确定的测试是检查POSIX geteuid()调用是否返回零。

为此,您可能必须使用luaposix之类的Lua库。

或者你可以掏出并运行id -u来查看它是否输出0

由于它是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 /并报告失败,如果发生?

最好的办法是报告失败:你可能有一个系统,其他用户比root用户有权访问sysfs。

 fd = assert(io.open("/sys/...."))