Saber si se está ejecutando como root
En algunos casos necesitamos que nuestra aplicación sea ejecutada como usuario root en GNU/Linux. Por lo cual, debemos de comprobar cuál usuario ejecutó la aplicación.
En este caso lo haré en C++ y usando la función getuid(), la cual retorna el Id. del usuario ( User ID, UID ) que es un número único y hace referencia al usuario en el archivo /etc/passwd.
Si abrimos el archivo anterior podemos encontrar en la primera línea lo siguiente:
root:x:0:0:root:/root:/bin/bash
El cuarto valor sería el identificador.
Bueno, no siendo más voy con el código. En este caso, diseñé la función IsRoot() que retorna 0 si se ejecutó como root y 1 si no.
#include <unistd.h> #include <iostream> using namespace std; /* * IsRoot() */ int IsRoot() { int sUser = getuid(); if (sUser != 0) return 1; else return 0; } int main() { if (IsRoot() == 0) { cout << "-- Root Calc --" << endl; cout << " 2 x 2 = " << 2*2 << endl; } else cout << "Debe ejecutar como root" << endl; }
| Este artículo fue publicado por WindHack el 21 diciembre, 2010 a las 9:15 PM, y está archivado en C/C++, Programación. Sigue las respuestas a esta entrada a través de RSS 2.0. Puedes dejar un comentario o enviar un trackback desde tu propio sitio. |








