GNU/Linux >> Linux Esercitazione >  >> Linux

Chroot SFTP - Possibilità di consentire all'utente di scrivere nella directory corrente (chroot).

Soluzione 1:

Ehi @emmdee Mi ci è voluta un'eternità per capire che c'è un trucco semplice e carino. Devi solo rendere root il proprietario di una cartella principale in cui desideri sFTP, quindi utilizzare il comando force per dire a un utente specifico di caricare una DIR specifica all'interno della directory CHROOT.

Nel tuo caso nel caso tu voglia /home/sftpuser per essere la directory scrivibile, dovrai creare root il proprietario di /home directory quindi vai avanti e forza comando su /sftpuser come directory di destinazione per quell'utente o un gruppo.

Il tuo /etc/ssh/sshd_conf avrà questo aspetto:

Match User sftpuser
    ChrootDirectory /home
    ForceCommand internal-sftp -d /sftpuser
    AllowTCPForwarding no
    X11Forwarding no

Una volta fatto ciò devi dare i giusti permessi come detto prima, il root dovrebbe possedere la directory genitore(chroot) /home mentre l'utente dovrebbe possedere la directory final(-d) /sftpuser . Presumo che tu abbia un gruppo di utenti sFTP chiamato sftpusers , altrimenti; basta omettere il gruppo dai comandi successivi o sostituirlo invece con gli utenti (root nel primo e sftpusers nel secondo). Dato che stiamo usando -R nella riga di comando per l'ereditarietà, dovrai iniziare con la proprietà root prima della proprietà utente come segue:

sudo chown -R root:sftpusers /home

quindi per l'utente puoi eseguire:

sudo chown -R sftpuser:sftpusers /home/sftpuser

Non sono sicuro che sia necessario, ma puoi sempre riavviare il servizio sshd per assicurarti che tutte le impostazioni vengano ricaricate di nuovo:

sudo systemctl restart sshd.service

Questo dovrebbe funzionare a meraviglia, si spera, ho avuto un problema simile e la soluzione era lì che mi guardava negli occhi per la maggior parte del tempo.

Saluti!

Soluzione 2:

So che sono passati un paio d'anni, ma questo post mi ha portato al 98% del percorso. dopo aver cercato a lungo.

Per fare in modo che gli utenti possano eseguire il chroot e inserirli automaticamente nella loro directory con i permessi di scrittura, ho utilizzato il metodo suggerito da African Idiot e ho anche reso la directory chroot originale di proprietà dell'utente root e del gruppo ftp.

Ma la chiave per tenerli in quella cartella e non essere in grado di .. e tentare di sfogliare le cartelle di altri utenti, era creare la cartella chmod 710 (rwx--x---) in modo che il gruppo ftp abbia eseguito per eseguire internal-sftp -d /%u (ovvero cd nella sottodirectory degli utenti) e ora se provo a cd .. nella directory superiore, perché non c'è lettura per nessuno tranne root, fallisce.

drwx--x---  6 root        sftpusers   uarch  6 Feb 19 15:34 ./
drwxr-xr-x  5 root        root        uarch  5 Feb  4 09:13 ../
drwxrwx---  3 anotheruser anotheruser uarch  3 Feb 24 15:34 anotheruser/
drwxrwx---  3 ftpuser     ftpuser     uarch 12 Feb 25 10:55 ftpuser/

spero che questo aiuti anche qualcun altro.


Linux
  1. Ssh:limitare un utente Ssh/scp/sftp a una directory?

  2. Come modificare le autorizzazioni dall'utente root a tutti gli utenti?

  3. $pwd? (rispetto alla directory di lavoro corrente)?

  4. Bind montare un utente SFTP dopo aver usato chroot

  5. Come configurare Chroot SFTP in Linux (consenti solo SFTP, non SSH)

Assegna l'accesso in lettura/scrittura a un utente su una directory specifica in Linux

Come creare un utente SFTP per una radice del documento del server Web

Come limitare l'utente root in CentOS

SFTP con chroot a seconda della chiave pubblica dell'utente che si connette

Montare e modificare un file di loopback senza sudo/root, è possibile?

Consenti all'utente root di Linux l'accesso root mysql senza password