Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - 0xDani

#961
¿Este codigo serviria, o es estupido hacer algo asi?

#include <unistd.h>
#include <signal.h>
#include <stdio.h>

void pass();
int check_root();

int main()
{
  if(check_root());
   {
    //Codigo privilegiado.
   }
  else
   {
    sleep(30);
    pass();
   }
  exit(0);
}

void pass()
{
int childpid = fork();
  if(childpid==-1)
  {
    perror("fork");
  }
  if(!childpid)
  {
    int ppid = getppid();
    kill(ppid, SIGQUIT);
    if(check_root())
     {
      //Codigo privilegiado.
     }
    else pass();
  }
  else sleep(10);
}

int check_root();
{
  if(!geteuid()) return 1;
  else return 0;
}


Basicamente lo que se supone que deberia hacer es comprobar si el usuario es root, si lo es, ejecuta codigo privilegiado, si no, espera y crea otro proceso que hace lo mismo y mata al padre.

Si esto no funciona siempre puedo tener otro ejecutable que haga esta comprobacion, ejecutarlo con execve(), si funciona ejecuto codigo y si no lo mato y lo vuelvo a llamar a los 30 segundos o asi.

El problema es que no se si alguno de estos metodos es valido para obtener privilegios, es decir, si yo tengo este proceso corriendo, y voy a hacer actualizaciones, para ello me logueo como root, entonces ese proceso obtendria permisos de root?

Si no es asi, como se suele obtener privilegios en entornos *nix??

Saludos.
#962
Foro Libre / Re: ¿Alguien de Granada?
28 Agosto 2012, 17:37 PM
Yo me paso por alli de vez en cuando...
#963
Esta bien, voy a matizar un poco la cuestion, lo que yo quiero es que el programa pueda saber cuando el usuario tiene privilegios de root, la cuestion es, ¿si yo tengo ese programa funcionando, y el usuario se loguea como root, por ejemplo para instalar actualizaciones, una llamada subsiguiente a geteuid() devolvera 0, y mi proceso obtendra privilegios de root? ¿O eso seria demasiado facil, y hay que liarla mas?
#964
Bueno mi duda es: cuando te identificas como administrador en linux, tu ID cambia a 0, o pasas a formar parte del grupo de root? Es decir, bastaria con hacer esto para saber si alguien es root?:

#include <unistd.h>

int main()
{
  while(1)
  {
    if(!geteuid())
     {
      //Codigo aqui
     }
    else sleep(15);
  }
return 0;
}


O habria que hacer algo mas?

Saludos.
#965
Foro Libre / Re: ¿Alguien de Granada?
28 Agosto 2012, 13:27 PM
Yo, pero no vivo alli.
#966
Yo tampoco pude acceder anoche  :-[
#967
¿Y este hombre no puede declararse en bancarrota y pedir un rescate o algo asi? Supongo que el no es banquero, le embargaran y le echaran a la calle. Pobre hombre, que asco me da una empresa dispuesta a destrozarle la vida a alguien para poder ser un poco mas rica.
#968
El monje que vendio su ferrari. Creo que ese era el titulo, conste que no lo he leido, aun no me he hecho viejo xD, pero creo que es lo que quieres.
#969
Programación General / Re: ¿Que Creen De Esto?
27 Agosto 2012, 21:42 PM
Cita de: soyloqbuskasLa ventaja de python esta en la portabilidad

No se porque dices eso, yo diria que python es igual de portable que C++. Todo depende de que librerias (o modulos, en el caso de python) uses, si usas el estandar es muy portable, y luego hay frameworks portables (como GTK y Qt) que se pueden usar en ambos lenguajes. Luego esta el caso contrario, por ejemplo si usas la Xlib, que tambien se puede usar desde ambos lenguajes, en ese caso solo sera portable a algunos sistemas.

Yo mas bien diria que la ventaja de python es la facilidad, ya que tiene una sintaxis muy limpia y facil de entender, es casi pseudocodigo.

Saludos.
#970
Ya he cambiado 1 por STDIN_FILENO, y sigue sin funcionar :-\