Как я могу сказать, что скрипт запускается как суперпользователь? - PullRequest
4 голосов
/ 18 июня 2011

Я написал скрипт управления вентиляторами на Lua и использую Linux. Управление вентилятором должно записываться в / sys /, поэтому я должен быть суперпользователем.

Я хочу проинформировать пользователя, если он НЕ суперпользователь. Какой лучший способ сделать это?

Ответы [ 3 ]

5 голосов
/ 18 июня 2011

Единственным определенным тестом является проверка, возвращает ли вызов POSIX geteuid () ноль.

Для этого вам, возможно, придется использовать библиотеку Lua, например luaposix .

Или вы можете выложить и запустить id -u, чтобы посмотреть, выдаст ли он 0.

1 голос
/ 18 июня 2011

Поскольку это 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 голосов
/ 18 июня 2011

Лучше всего просто сообщить об ошибке: у вас может быть система, в которой другие пользователи, кроме root, имеют доступ к sysfs.

fd = assert(io.open("/sys/...."))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...