Con debootstrap puoi preparare un filesystem Debian separato. Nell’esempio lo userai localmente con chroot e offrirai a un utente soltanto accesso SFTP a una sottocartella. Serve una VM Debian 13 di prova con sudo; il percorso /srv/debian-demo deve essere nuovo. Un chroot non è una macchina virtuale né una barriera sufficiente per eseguire codice ostile.
1. Prepara Debian
sudo apt update
sudo apt install debootstrap openssh-server
sudo debootstrap --variant=minbase trixie /srv/debian-demo https://deb.debian.org/debian
sudo chroot /srv/debian-demo /bin/cat /etc/debian_versionL’ultimo comando deve mostrare la versione Debian del sistema interno. Per una shell locale usa sudo chroot /srv/debian-demo /bin/bash ed esci con exit. Questo test non richiede mount permanenti di /proc o modifiche globali a PAM.
2. Crea un utente SFTP
sudo adduser --no-create-home --home /upload --shell /usr/sbin/nologin demo-sftp
sudo install -d -o demo-sftp -g demo-sftp -m 750 /srv/debian-demo/uploadLa radice /srv/debian-demo e tutte le directory superiori devono appartenere a root e non essere scrivibili da gruppo o altri. Solo upload appartiene all’utente. Aggiungi questo blocco in fondo a /etc/ssh/sshd_config, conservando prima una copia del file:
Match User demo-sftp
ChrootDirectory /srv/debian-demo
ForceCommand internal-sftp -d /upload
DisableForwarding yes
PermitTTY noUsa il metodo di autenticazione già previsto dal server. Se le password sono disabilitate, configura la chiave attraverso il meccanismo amministrato del server, senza riabilitare globalmente l’accesso con password.
3. Controlla e prova
sudo sshd -t && sudo systemctl reload ssh
sftp demo-sftp@localhostMantieni aperta la sessione amministrativa. Da SFTP prova pwd, put file-di-prova.txt e ls: devi essere in /upload e vedere il file inviato. L’utente può vedere il filesystem interno Debian ma non uscire dalla sua radice. Una normale sessione shell SSH non deve essere disponibile.
SFTP interno non necessita di debootstrap: se vuoi solo trasferire file puoi usare un chroot vuoto con upload. Non concediamo qui una shell remota nel chroot. Per annullare la configurazione rimuovi il blocco Match, ricontrolla sshd -t e ricarica SSH; conserva i file caricati.