🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.os.linux.programowanie
4 messages
4 total messages Started by Filip Ozimek Thu, 23 Sep 1999 15:09
chroot
#603
Author: Filip Ozimek
Date: Thu, 23 Sep 1999 15:09
12 lines
1215 bytes
Witam,

	Próbuję najpierw zrobić chroot(2) a potem odpalić jakiś program
przez system(3) (program jest statycznie zlinkowany, proces to wykonujący
dziala na prawach roota) ale jakoś nie dziala. :( Móglby ktoś podać jakiś
dzialający przykladzik?


--------------------------------------------------------------------------
Filip Ozimek, 2:480/33.56

Mamo, czy mogę zostać rycerzem Jedi?
Re: chroot
#604
Author: Cezary H. Noweta
Date: Thu, 23 Sep 1999 15:44
25 lines
1983 bytes
Witam,

Filip Ozimek wrote:
>         Próbuję najpierw zrobić chroot(2) a potem odpalić jakiś program
> przez system(3) (program jest statycznie zlinkowany, proces to wykonujący
> dziala na prawach roota) ale jakoś nie dziala. :( Móglby ktoś podać jakiś
> dzialający przykladzik?

Jesli system(...) zwraca 127 (0x7F), to jest spowodowane niemoznoscia
odpalenia /bin/sh:

system(...) odpala "/bin/sh -c 'twoja_komenda'", wiec statycznie musi byc
zlinkowany (skompilowany) /bin/sh i 'twoja_komenda'. Z tym pierwszym moze
byc problem ;). Musisz skopiowac do 'twojego_roota' /bin/sh
i pliki uzywane przez /bin/sh (nie tylko biblioteki) - nie wiem ktore :(.
Podejrzewam, ze do 'twojego_roota' bedzie trzeba skopiowac kupe plikow.
Lepszym rozwiazaniem jest execve(...) (lub fork() i execve(...)). Poza tym
system(...) blokuje sygnaly.

  -- pozdrawiam

-- 
Cezary H. Noweta                 90-237 LODZ, ul. J.Matejki 34/38 POLAND
(chn@irys.usun.drugiitrzeciczlon.uni.lodz.pl)    +48 42 6356013, 6356012
University of Lodz - Main Library                            fax 6781678
Re: chroot
#606
Author: Jan Namedyñski
Date: Thu, 23 Sep 1999 23:37
21 lines
1680 bytes
Filip Ozimek wrote:
> 
> Witam,
> 
>         Próbujê najpierw zrobiæ chroot(2) a potem odpaliæ jaki¶ program
> przez system(3) (program jest statycznie zlinkowany, proces to wykonuj±cy
> dziala na prawach roota) ale jako¶ nie dziala. :( Móglby kto¶ podaæ jaki¶
> dzialaj±cy przykladzik?
> 

Prawdopodobnie chodzi o to ze sh (bash ?) nie jest statycznie
zlinkowany... w chrootowanym systemie musisz utworzyc mala strukture
katalogow przydalo by sie /etc/(konfiguracja ld) /bin/(bash)
/lib/(biblioteki dynamiczne) /dev/(konsole). najlepiej bedzie jak
sprawdzisz jakich bibliotek uzywa bash i ten twoj programik a pozniej to
przeniesiesz.


-- 

...:in.God.we.trust:..:Jan:..:[JaNkus]:..:Namedyñski:..:jankus@cavern.pl:...
Re: chroot
#605
Author: Cezary H. Noweta
Date: Fri, 24 Sep 1999 14:08
76 lines
2400 bytes
Witam,

Filip Ozimek wrote:
> [...] Móglby ktoś podać jakiś
> dzialający przykladzik?

------
  example.c
------
#define _GNU_SOURCE
/* powyzsze dla environ */

#include <sys/types.h>
#include <sys/wait.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>

int my_system(const char *cmd)
{
  const char *my_args[] = { cmd, NULL };
  pid_t pid = fork();
  int res, stat;

/* child - uruchamiamy komende */
  if ( !pid ) {
    execve(cmd, (char * const *)my_args, environ);
    return(1000000 + errno);
  }

/* fork sie wywalil */
  else if ( pid < 0 )
    return(2000000 + errno);

/* parent - czekamy na childa */
  while ( !(res = waitpid(pid, &stat, WNOHANG)) ) {
    /* tutaj robimy rozne rzeczy,
       gdy nudzi nam sie w oczekiwaniu
       na childa */
  }

/* waitpid sie powiodl sie */
  if ( res > 0 )
    return(-stat);

/* waitpid sie wywalil - nie powinno do tego dojsc ale... ;) */
  return(3000000 + errno);
}

main()
{
  if ( chroot(".") < 0 )
    fprintf(stderr, "ERROR while chroot()ing\n");

  fprintf(stderr, "my_system() returned: %d\n", my_system("/hello"));
}
------

Po pomyslnym wykonaniu powinienes dostac:

Hello, world!
my_system() returned: -######

w przypadku bledu:

my_system() returned(): #######
my_system() returned(): -######

Zrodla programu /hello chyba nie musze podawac ;-)

  -- pozdrawiam

-- 
Cezary H. Noweta                 90-237 LODZ, ul. J.Matejki 34/38 POLAND
(chn@irys.usun.drugiitrzeciczlon.uni.lodz.pl)    +48 42 6356013, 6356012
University of Lodz - Main Library                            fax 6781678
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads