C'est simple. Il suffit de créer un nouvel utilisateur dont le répertoire de base est celui auquel vous voulez qu'il ait accès (cette commande doit être exécutée sous le nom de sudo
ou dans la racine Shell) :
adduser --home /restricted/directory restricted_user
Cela va créer un utilisateur restricted_user
le répertoire /restricted/directory
et les permissions sur le répertoire seront définies pour que l'utilisateur puisse y écrire. Il n'aura pas la possibilité d'écrire dans un autre répertoire par défaut.
Si vous avez déjà le répertoire, vous pouvez exécuter adduser
avec une commande --no-create-home
et définir les permissions manuellement (également avec les privilèges de l'administrateur), comme :
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Si vous devez rendre inaccessibles à cet utilisateur même les répertoires inscriptibles dans le monde, il existe deux variantes.
1) Si vous voulez fournir une session interactive Shell à l'utilisateur, alors considérez ce qui suit ce manuel sur la création d'une prison chroot (dans votre /restricted/directory
).
Après cela, ajoutez ce qui suit à votre sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Si vous avez seulement besoin qu'il copie des fichiers entre son point de connexion et votre hôte, tout est beaucoup plus facile. Ajoutez ces lignes à la fin de votre sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Ensuite, commentez le Subsystem sftp /usr/lib/openssh/sftp-server
en plaçant un dièse ( #
) au départ.
Après avoir redémarré votre serveur SSH (il ne tue pas les sessions interactives au redémarrage, ce qui est sûr même si vous avez mal configuré quelque chose ; il ne ferme pas non plus votre session en cours avant d'avoir vérifié que vous pouvez toujours vous connecter), tout devrait fonctionner comme prévu.