GNU/Linux >> Linux Esercitazione >  >> Linux

Autorizzazioni di scrittura dell'utente SFTP con chroot

Di recente abbiamo trovato una soluzione che funziona così:

/etc/ssh/sshd_config:

...

Subsystem sftp internal-sftp

Match Group sftponly
    ChrootDirectory /home
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

autorizzazioni directory:

[email protected]:~ # chown root:root /home
[email protected]:~ # chmod 111 /home
[email protected]:~ # chmod 700 /home/*

Ora /home soddisfa i requisiti per ChrootDirectory e non può essere elencato da utenti con restrizioni, ma sftponly gli utenti non saranno in grado di accedere se le loro home directory sono configurate come al solito (/home/$LOGNAME ):sotto l'ambiente chroot le loro home directory non sono all'interno di /home ma direttamente sotto root (/ ).

soluzione alternativa 1

Imposta le case degli utenti con restrizioni su come appaiono sotto chroot:

[email protected]:~ # usermod -d /username username

cavete 1

Se qualcuno degli utenti senza restrizioni o qualche script di amministrazione usa l'espansione tilde di bash come ~username si espanderà a /username ora, che non è ciò che si intende.

Anche l'amministratore che crea sftponly gli utenti devono ricordarsi di utilizzare home non predefinita. Risolvibile con uno script. Che l'amministratore deve ricordarsi di utilizzare.

soluzione 2

Questa è un'alternativa alla precedente che abbiamo finito per usare:

[email protected]:~ # ln -s . /home/home

Cioè creare un collegamento simbolico all'interno di /home al proprio dirname. Ora sotto chroot /home/username punta alla stessa directory senza chroot. Per gli utenti con restrizioni che hanno effettuato l'accesso con sftp, apparirà come /username . Questa directory è scrivibile dal suo proprietario (utente con restrizioni). L'utente con restrizioni non può elencare per nome le sue directory padre o home di nessuno dei fratelli.

L'unica cosa speciale di un sftponly utente è la sua partecipazione al sftponly gruppo. Abbiamo trovato più facile da gestire rispetto alla soluzione alternativa 1.

cavete 2

  1. Non puoi avere un utente chiamato 'home' con una home directory /home/home
  2. Devi stare attento con gli script che attraversano /home gerarchia e seguire i collegamenti simbolici.

Devi creare una struttura all'interno della home directory dell'utente, come in e out dirs. Quelle directory dovrebbero essere di proprietà dell'utente e lì sarà in grado di mettere e ottenere file.


Ho le stesse impostazioni sul nostro server. Usiamo la stessa configurazione di SSHD. Le home directory degli utenti sono di proprietà di root e al loro interno sono presenti le cartelle documents e public_html di proprietà dei rispettivi utenti. Gli utenti quindi accedono utilizzando SFTP e scrivono in quelle cartelle (non direttamente in home). Poiché SSH non è consentito per loro, funziona perfettamente. Puoi regolare quali directory verranno create per i nuovi utenti in /etc/skel/ (almeno in openSUSE, non ho molta familiarità con altre distribuzioni).

Un'altra possibilità sarebbe ACL (documentazione openSUSE) - può aggiungere il permesso di scrittura per il rispettivo utente per la sua home directory.


Linux
  1. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  2. Xemacs:carica tutti i file in /home/barry/.emacs_barry?

  3. Come modificare i punti di montaggio?

  4. cp:impossibile creare la directory:file o directory non presenti

  5. Come disabilitare Gnome dalla creazione di documenti/video/in HOME?

Autenticazione SSH Ansible ed escalation dei privilegi

Crea directory home per utenti esistenti in Linux

Ottimo servizio clienti di cui scrivere a casa

mv:impossibile spostarsi da casa a casa-old:dispositivo o risorsa occupati

Perché le directory /home, /usr, /var, ecc. hanno tutte lo stesso numero di inode (2)?

Come modificare /tmp predefinito in /home/user/tmp