[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.
Rispondi
elvis
Linux 0.x
Linux 0.x
Messaggi: 53
Iscritto il: lun 27 set 2010, 10:35
Slackware: 13.1 x64
Desktop: KDE 4.5.2
Distribuzione: Opensuse 11.3 x86

[C] Dubbio su chroot ed exec

Messaggio da elvis »

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.

Avatar utente
boh
Linux 4.x
Linux 4.x
Messaggi: 1027
Iscritto il: ven 16 set 2005, 0:00
Slackware: 14.2 (x64)
Kernel: 4.4.111
Desktop: KDE 4.14.32
Località: Milano
Contatta:

Re: [C] Dubbio su chroot ed exec

Messaggio da boh »

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

elvis
Linux 0.x
Linux 0.x
Messaggi: 53
Iscritto il: lun 27 set 2010, 10:35
Slackware: 13.1 x64
Desktop: KDE 4.5.2
Distribuzione: Opensuse 11.3 x86

Re: [C] Dubbio su chroot ed exec

Messaggio da elvis »

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.

Avatar utente
robbybby
Linux 4.x
Linux 4.x
Messaggi: 1223
Iscritto il: sab 16 dic 2006, 10:48
Slackware: 13.1 / 64 bit
Kernel: 3.3.x
Desktop: KDE 4.4.5
Località: Fra Trantor e Terminus

Re: [C] Dubbio su chroot ed exec

Messaggio da robbybby »

Penso che il problema stia nelle librerie linkate dinamicamente a ls, che dopo aver fatto un chroot non sono più accessibili.

elvis
Linux 0.x
Linux 0.x
Messaggi: 53
Iscritto il: lun 27 set 2010, 10:35
Slackware: 13.1 x64
Desktop: KDE 4.5.2
Distribuzione: Opensuse 11.3 x86

Re: [C] Dubbio su chroot ed exec

Messaggio da elvis »

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.

metrofox
Linux 3.x
Linux 3.x
Messaggi: 760
Iscritto il: gio 7 ago 2008, 12:29
Slackware: slackware64-current
Kernel: 3.4.4-ck3
Desktop: FluxBox-1.3.1
Distribuzione: FreeBSD-8.1(amd64)
Località: London

Re: [C] Dubbio su chroot ed exec

Messaggio da metrofox »

Usa ldd(1) per vedere quali librerie necessita il comando che ti interessa.

Rispondi