Repository 32bit  Forum
Repository 64bit  Wiki

[C] Dubbio su chroot ed exec

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.

[C] Dubbio su chroot ed exec

Messaggioda elvis » gio lug 05, 2012 16:25

Salve, sto incontrando delle difficoltà nell'uso della system call chroot(). In particolare temo che mi sfugge come funziona la pathname resolution DOPO aver chrootato.

Codice: Seleziona tutto
#include <stdio.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>

int main()
{
   if (geteuid() == 0)    // verifica che si abbiano i privilegi per eseguire la chroot
   {
      chroot("/bin");
      chdir("/");
   
      execl("/ls", "ls", "-l",  (char *) NULL);
      perror(strerror(errno));
   }
   
   else
      printf("Permission denied\n");
   
   return 0;
}


La exec non viene eseguita, e l'errore notificato è "No such file or directory".

Quello che non capisco è: quando scrivo execl("/ls", ...), /ls viene o meno "risolto" in /bin/ls ?

In alternativa, usando la execlp("ls", ...) il problema rimane.
In questo caso "ls" viene cercato in $PATH, ma avendo chrootato temo che i vari path in $PATH non vengano correttamente risolti.

Qualche idea? Ho come l'impressione che mi sto perdendo in un bicchiere d'acqua, forse c'è qualcosa di abnorme che mi sfugge alla radice.
elvis
Linux 1.0
Linux 1.0
 
Messaggi: 53
Iscritto il: lun set 27, 2010 9:35
Slackware: 13.1 x64
Desktop: KDE 4.5.2
Distribuzione: Opensuse 11.3 x86

Re: [C] Dubbio su chroot ed exec

Messaggioda boh » gio lug 05, 2012 17:34

Ma sei sicuro di non dover specificare tutto il path di ls?
Perchè il prototipo della execl è
Codice: Seleziona tutto
int execl(const char *path, const char *arg, ...);
"Be yourself. Everyone else is already taken." ~ Oscar Wilde
Avatar utente
boh
Linux 2.6
Linux 2.6
 
Messaggi: 950
Iscritto il: gio set 15, 2005 23:00
Località: Milano
Slackware: 14.1 (x64)
Kernel: 3.10.17
Desktop: KDE 4.10.5

Re: [C] Dubbio su chroot ed exec

Messaggioda elvis » gio lug 05, 2012 21:01

boh ha scritto:Ma sei sicuro di non dover specificare tutto il path di ls?

No infatti è proprio questo il dubbio. In ogni caso anche mettendo il path completo il risultato non cambia: No such file or directory, ed exec fallita.
elvis
Linux 1.0
Linux 1.0
 
Messaggi: 53
Iscritto il: lun set 27, 2010 9:35
Slackware: 13.1 x64
Desktop: KDE 4.5.2
Distribuzione: Opensuse 11.3 x86

Re: [C] Dubbio su chroot ed exec

Messaggioda robbybby » gio lug 05, 2012 21:09

Penso che il problema stia nelle librerie linkate dinamicamente a ls, che dopo aver fatto un chroot non sono più accessibili.
Avatar utente
robbybby
Linux 3.x
Linux 3.x
 
Messaggi: 1175
Iscritto il: sab dic 16, 2006 10:48
Località: Fra Trantor e Terminus
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5

Re: [C] Dubbio su chroot ed exec

Messaggioda elvis » ven lug 06, 2012 10:19

Ecco, come temevo. Infatti leggendo una qualsiasi delle tante descrizioni in rete sulle chroot jail, c'è sempre scritto che nella nuova root directory deve essere un sottoinsieme minimo delle librerie. "necessarie".

Per caso avete idea di un qualche comando shell che non ha bisogno di nessuna libreria dinamica? Così faccio un test con quello per provare questa teoria.
elvis
Linux 1.0
Linux 1.0
 
Messaggi: 53
Iscritto il: lun set 27, 2010 9:35
Slackware: 13.1 x64
Desktop: KDE 4.5.2
Distribuzione: Opensuse 11.3 x86

Re: [C] Dubbio su chroot ed exec

Messaggioda metrofox » ven lug 06, 2012 15:35

Usa ldd(1) per vedere quali librerie necessita il comando che ti interessa.
Avatar utente
metrofox
Linux 2.6
Linux 2.6
 
Messaggi: 758
Iscritto il: gio ago 07, 2008 11:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)


Torna a Programmazione

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite