[C] Dubbio su chroot ed exec
Inviato: gio 5 lug 2012, 17: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.
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.
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;
}
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.