Dit is eenvoudig. Maak gewoon een nieuwe gebruiker aan met zijn thuismap ingesteld op de map waartoe hij toegang moet hebben (dit commando moet onder sudo
of in de root-shell worden uitgevoerd):
adduser --home /restricted/directory restricted_user
Dit maakt een gebruiker restricted_user
aan, de map /restricted/directory
en dan worden de rechten op de map ingesteld zodat de gebruiker er naar kan schrijven. Hij kan standaard naar geen enkele andere map schrijven.
Als je de directory al hebt, kun je het commando adduser
uitvoeren met de optie --no-create-home
toegevoegd en de permissies handmatig instellen (ook met root privileges), zoals:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Als je zelfs world-writable directories ontoegankelijk moet maken voor deze gebruiker, zijn er twee varianten.
1) Als je de gebruiker een interactieve shell sessie wil geven, overweeg dan om deze handleiding te volgen over het maken van een chroot jail (in je /restricted/directory
).
Voeg daarna het volgende toe aan je sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Als je hem alleen nodig hebt om bestanden te kopiëren tussen zijn eindpunt van verbinding en je host, is alles veel eenvoudiger. Voeg deze regels toe aan het einde van je sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Dan commentaar uit de Subsystem sftp /usr/lib/openssh/sftp-server
door het plaatsen van een hash (#
) teken aan het begin.
Na het herstarten van je SSH server (deze doodt geen interactieve sessies bij het herstarten, dus het is veilig, zelfs als je iets verkeerd geconfigureerd hebt; sluit ook je lopende sessie niet af voordat je gecontroleerd hebt dat je nog steeds kunt inloggen), zou alles moeten werken zoals bedoeld.