Come posso accedere a una directory esterna a un chroot al suo interno?


33

Ho un utente che è chroot nella sua home directory, ma voglio che sia anche in grado di gestire i file all'interno /var/www. Come tale, ho fatto quanto segue:

root@server:/home/username# ln -s /var/www www
root@server:/home/username# cd www
root@server:/home/username/www# chown username:username *

Tuttavia, quando provo ad aprire /wwwcon FileZilla restituisce "nessun file o directory". Posso vedere la directory collegata, ma non riesco ad accedervi. Che cosa sto facendo di sbagliato?

Risposte:


52

I collegamenti simbolici sono essenzialmente solo puntatori a un altro file, non puoi puntare a qualcosa al di fuori del chroot perché sta cercando un file con quel nome ( /var/wwwche non esiste all'interno del chroot). I collegamenti fisici d'altra parte sono puntatori all'inode. Pertanto, se si desidera farlo, è necessario utilizzare un collegamento reale omettendo -s. Tuttavia, non è possibile collegare in modo rigido una directory (diversa da .e ..) in Linux per una serie di ragioni (la principale è che quei filesystem sono un DAG ).

Forse il modo migliore sarebbe usare un attacco bind. Prova questo:

mount --bind /var/www /home/username/www

ln: '/var/www': hard link not allowed for directory
Doc

7
@Doc - Le directory non possono essere strettamente collegate in Linux. Un attacco di collegamento dovrebbe funzionare.
Chris Down,

1
Posso aggiungerlo a fstab per renderlo persistente?
Kornel,

Potresti ricorrere attraverso le directory e replicare l'albero con hard link? Ad esempio se il genitore ha /foo/a.txte /foo/bar/b.txtquindi potresti farlo mkdir -p ./chroot/foo/; mkdir -p ./chroot/foo/bar; ln /foo/a.txt ./chroot/foo/a.txt; ln /foo/bar/b.txt ./chroot/foo/bar/b.txt? O non funzionerebbe ancora per qualche motivo? (Ovviamente questo è qualcosa che dovresti scrivere una sceneggiatura, invece di fare a mano).
Shadowtalker,

1
@Kornel puoi usare la nonemodalità insieme bindall'opzione: serverfault.com/questions/613179/…
Yvan
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.