Introduzione

L'amministratore di sistema può dare ai propri utenti la possibilità di caricare in modo sicuro i file sul server. Il modo più comune per farlo è consentire i trasferimenti di file tramite Secure File Transfer Protocol (SFTP). Per impostazione predefinita, gli utenti SSH sono in grado di visualizzare tutti i file del server.

In questa guida vedremo come creare un utente e bloccarlo (jail) in una cartella (directory) da noi scelta.

Potrebbe essere utile creare un utente con accesso al web server Apache2 senza dargli la possiblità di salire di livello, quindi di navigare tra i file del server.

Vediamo come fare.

Prerequisiti

Installazione di Apache2. oppure di Nginx.

Configurare OpenSSH

Per limitare ad un nuovo utente dobbiamo effettuare delle modifiche nel file di configurazione dell'SSH.

Apriamo il seguente file:

sudo nano /etc/ssh/sshd_config

Cerchiamo la riga Subsystem sftp e modifichiamola nel seguente modo:


Subsystem sftp internal-sftp

Aggiungiamo alla fine del file le seguenti righe:


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

Salvare e chiudere il file.

Riavviare il servizio SSH (OpenSSH)

sudo service ssh restart

Creare un nuovo utente

Per creare un nuovo utente da terminale dare questo comando:

sudo useradd ftpuser

Se non viene richiesta dal comando precedente, creare una password per il nuovo utente:

sudo passwd ftpuser

Creare un nuovo gruppo e gestire i permessi

Creare un gruppo di sistema per gli utenti a cui si desidera limitare all'accesso SFTP:

sudo addgroup --system jail_user

Modificare adesso l'account utente che si desidera limitare.
Tieni presente che ciò impedirà a questi utenti di accedere a una sessione shell remota.

Aggiungere il nuovo utente al gruppo appena creato:

sudo usermod -G jail_user ftpuser

Accertiamoci che i permessi del webserver di Apache siano corretti:

sudo chown root:root /var/www
sudo chmod 755 /var/www

Modificare i permessi dei file nella cartella principale di Apache:

cd /var/www
sudo chown ftpuser:jail_user *

È possibile dare gli accessi completi all'utente appena creato con il seguente comando:

sudo adduser ftpuser www-data
sudo chown -R www-data:www-data /var/www/html
sudo setfacl -R -m u:ftpuser:rwx /var/www/html

Il primo comando aggiungerà l'utente nel gruppo www-data, il secondo cambierà il proprietario di tutte le directory e file del seguente percorso /var/www/html ed il terzo abiliterà i permessi di scrittura.

Adesso è possibile accedere con il nuovo utente tramite SFTP direttamente nella directory scelta senza la possibilità di salire di livello tra le cartelle.

La configurazione è terminata.