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

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

我想告诉用户如果他们不是超级用户。怎么做最好?

原文链接 https://stackoverflow.com/questions/6393306

点赞
stackoverflow用户768469
stackoverflow用户768469

唯一确定的方法是检查 POSIX 的 geteuid() 函数是否返回零。

为此,您可能需要使用像 luaposix 这样的 Lua 库。

或者可以通过命令行运行 id -u 来查看它是否输出 0

2011-06-18 01:46:00
stackoverflow用户107090
stackoverflow用户107090

既然是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/,如果失败就报告呢?

2011-06-18 01:50:40
stackoverflow用户282536
stackoverflow用户282536

最好的做法是报告失败:你可以有一个系统,让除了根用户以外的其他用户都有对sysfs的访问权限。

fd = assert(io.open("/sys/...."))
2011-06-18 13:24:16