4 votes

Comment puis-je savoir si le script est exécuté en tant que super utilisateur ?

J'ai écrit un script script de contrôle de ventilateur en Lua, et je tourne sous Linux. Le contrôle de ventilateur doit écrire dans /sys/ et je dois donc être super utilisateur.

Je veux informer l'utilisateur s'il n'est PAS un super utilisateur. Quelle est la meilleure façon de procéder ?

5voto

Nemo Points 32838

Le seul test certain consiste à vérifier si la norme POSIX appel geteuid() renvoie zéro.

Pour cela, vous devrez peut-être utiliser une bibliothèque Lua telle que luaposix .

Ou bien vous pouvez dépenser de l'argent et utiliser id -u pour voir s'il produit 0 .

1voto

lhf Points 30556

Puisqu'il s'agit de Linux, vous pouvez essayer ceci, qui est un Lua de base et ne nécessite pas de bibliothèques supplémentaires :

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

Mais pourquoi ne pas simplement essayer d'écrire dans /sys/ et signaler l'échec si cela se produit ?

0voto

daurnimator Points 2084

La meilleure chose à faire est de signaler l'échec : vous pourriez avoir un système où d'autres utilisateurs que Root ont accès à sysfs.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X