SFTP: file symlink in una directory jailed (chroot)


22

Sto cercando di impostare sftp in modo che alcune persone fidate possano accedere / modificare / creare alcuni file. Ho imprigionato un utente nella sua directory home (/ home / name) ma ho riscontrato un problema. Voglio che possano anche accedere ad altre parti del VPS perché è anche un server di gioco, un webhost, ecc. E voglio che possano avere il pieno controllo dei file al di fuori della loro directory jailed.

Ho provato a creare un collegamento simbolico (ln -s) alla directory desiderata ma non funziona, come previsto. Ho provato (cp -rl) i file a cui volevo dare accesso e ha funzionato: possono modificare i file nella loro directory e cambia quello memorizzato al di fuori del carcere. MA non possono creare nuovi file (possono ma non si aggiornano al di fuori del carcere). So che probabilmente non lo farò nel "modo giusto", ma cosa posso fare per fare quello che voglio?

Risposte:


40

I collegamenti simbolici sono puramente simbolici: non contengono altro che un percorso, quindi quando si apre un collegamento simbolico, il sistema operativo legge il percorso e lo utilizza invece. In un ambiente chroot, i collegamenti (specialmente quelli con percorsi assoluti) in genere non puntano allo stesso punto in cui erano indicati nell'ambiente normale.

Se il sistema operativo del server è Linux, la soluzione migliore è collegare l'intera directory da qualche parte all'interno della directory chroot. Quando si utilizza questo, è importante ricordare che questa non è una copia della directory, tutto ciò che è stato eliminato verrà rimosso dall'altra directory (importante se l'utente è in grado di mvfile o rm -rf). Per farlo:

mount --bind /some/directory /somewhere/else

I file nella directory dovrebbero essere file reali. I link simbolici qui avranno probabilmente gli stessi problemi che hai provato a collegare ai file in primo luogo.


Grazie per la tua risposta. Potete per favore spiegare o indicarmi un tutorial su come posso farlo funzionare? Ho disabilitato ssh per gli ospiti, quindi hanno solo accesso sftp. Quale file devo inserire questo comando?
Dukevin,

Sebbene non sia ampiamente consigliabile, è possibile creare anche collegamenti hard directory, che sarebbe più semplice, ma solo se tutti i file si trovano sullo stesso dispositivo.
Falcon Momot,

Qual è il comando per questo
Dukevin il

@KevinDuke Questo non è qualcosa che gli utenti possono fare da soli, solo root può usare in mountquesto modo. Potrebbe esserci un modo per specificarlo in /etc/fstabmodo che venga eseguito automaticamente all'avvio, ma non sono sicuro di come
DerfK

1
Grazie. Ho letto alcuni tutorial e l'ho capito. La tua risposta mi ha davvero aiutato a indicarmi la giusta direzione. Grazie! Per chi vuole sapere, questi hanno contribuito: aplawrence.com/Linux/mount_bind.html freebsd.org/doc/en_US.ISO8859-1/books/handbook/... redbottledesign.com/...
dukevin
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.