Autorizzazione di sola lettura per l'utente sftp nella directory specifica


10

Voglio creare un utente SFTP specifico che disporrà delle autorizzazioni per leggere solo tutte le cartelle e le sottocartelle /var/www/vhosts. Qualche aiuto su questo?

Risposte:


11

I sistemi Unix forniscono il chrootcomando che consente di reimpostare l' /utente su una directory nella gerarchia del filesystem, dove non possono accedere a file e directory "di livello superiore".

Tuttavia, nel tuo caso, sarebbe opportuno fornire un chroot virtuale implementato dal servizio di shell remoto. sftp può essere facilmente configurato per limitare un utente locale a un sottoinsieme specifico del filesystem.

quindi nel tuo caso, vuoi chrootdire, utente fooutente nella /var/www/vhosts/directory.

Puoi impostare una directory chroot affinché il tuo utente possa confinarli nella sottodirectory in questo /var/www/vhosts/modo /etc/ssh/sshd_config;

Crea utente foocon password

sudo useradd foo
sudo passwd foo

Crea per solo gruppo SFTP

$ sudo groupadd sftp_users 

Aggiungi a un utente fooper il gruppo solo SFTP

$ sudo usermod -G sftp_users foo 

Cambia proprietario, perché autorizzazione di lettura / scrittura

sudo chown root.root /var/www/vhosts/

Aggiungi permesso

sudo chmod 755 /var/www/vhosts/

modificare /etc/ssh/sshd_config

sudo vi /etc/ssh/sshd_config

Commenta e aggiungi una riga come di seguito

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

Aggiungi alla fine

Match Group sftp_users
  X11Forwarding no
  AllowTcpForwarding no
  ChrootDirectory /var/www/vhosts/
  ForceCommand internal-sftp

(NOTA: i Matchblocchi devono trovarsi alla fine del sshd_configfile.)

Riavvia il sshservizio

sudo service ssh restart

Con questa cenfigurazione puoi ssh nella cartella ubuntue ottenere file. Impossibile putodelete

Per sftp nella modifica della cartella giusta /etc/passwd. Cambia riga affinché l'utente fooassomigli a questo

$ sudo vi /etc/passwd

..
foo:x:1001:1001::/var/www/vhosts/:
..

Questo cambierà la foocartella home dell'utente nella cartella del tuo server sftp.


Quindi ho aggiunto Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no In sshd_config e ho creato l'utente e il gruppo come hai fatto tu, ma l'utente fooha i diritti su tutte le cartelle :(
Delirium

@Delirium vedi la mia risposta aggiornata
Rahul,

Grazie mille per la tua risposta. Ma ci deve essere un errore .. Ho aggiunto Subsystem sftp internal-sftp Match Group sftp ChrootDirectory /var/www/vhosts AllowTcpForwarding no ForceCommand internal-sftpma c'è un errore quando voglio riavviare ssh/etc/ssh/sshd_config line 92: Directive 'UsePAM' is not allowed within a Match block
Delirium

2
@Delirium Ho menzionato chiaramente di mettere la Match.....sezione alla fine del file. Metti quel codice alla fine del file e riavvialo.
Rahul,

1
Ci scusiamo per i miei occhi ciechi, ma funziona, quindi grazie davvero.
Delirio,
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.