Pagina 1 di 1

[C] Dubbio su chroot ed exec

Inviato: gio 5 lug 2012, 17:25
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.

Re: [C] Dubbio su chroot ed exec

Inviato: gio 5 lug 2012, 18:34
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, ...);

Re: [C] Dubbio su chroot ed exec

Inviato: gio 5 lug 2012, 22:01
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.

Re: [C] Dubbio su chroot ed exec

Inviato: gio 5 lug 2012, 22:09
da robbybby
Penso che il problema stia nelle librerie linkate dinamicamente a ls, che dopo aver fatto un chroot non sono più accessibili.

Re: [C] Dubbio su chroot ed exec

Inviato: ven 6 lug 2012, 11:19
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.

Re: [C] Dubbio su chroot ed exec

Inviato: ven 6 lug 2012, 16:35
da metrofox
Usa ldd(1) per vedere quali librerie necessita il comando che ti interessa.