Questo è semplice. Basta creare un nuovo utente con la sua home directory impostata su quella a cui avete bisogno che abbia accesso (questo comando deve essere eseguito sotto sudo
o nella shell di root):
adduser --home /restricted/directory restricted_user
Questo creerà un utente restricted_user
, la directory /restricted/directory
e poi i permessi sulla directory saranno impostati in modo che l'utente possa scriverci. Non avrà la possibilità di scrivere su nessun'altra directory per impostazione predefinita.
Se avete già la directory, potete eseguire il comando adduser
con l'opzione --no-create-home
aggiunta e impostare i permessi manualmente (anche con privilegi di root), come:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Se avete bisogno di rendere inaccessibili a questo utente anche le directory scrivibili dal mondo, ci sono due varianti.
1) Se vuoi fornire una sessione interattiva di shell all'utente, allora considera di seguire questo manuale sulla creazione di una jail chroot (nel tuo /restricted/directory
).
Dopo di che, aggiungi quanto segue al tuo sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Se hai solo bisogno che copi i file tra il suo endpoint di connessione e il tuo host, tutto è molto più facile. Aggiungi queste linee alla fine del tuo sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Poi commenta lo Subsystem sftp /usr/lib/openssh/sftp-server
mettendo un segno di hash (#
) all'inizio.
Dopo aver riavviato il vostro server SSH (non uccide le sessioni interattive al riavvio, quindi è sicuro anche se avete configurato male qualcosa; inoltre, non chiude la vostra sessione in corso prima che abbiate controllato che siate ancora in grado di accedere), tutto dovrebbe funzionare come previsto.