C'est simple. Il suffit de créer un nouvel utilisateur avec son répertoire d'origine défini sur celui auquel il doit avoir accès (cette commande doit être exécutée sous sudo
ou en root shell) :
adduser --home /restricted/directory restricted_user
Cela créera un utilisateur restricted_user
, le répertoire /restricted/directory
et ensuite les permissions sur le répertoire seront définies pour que l'utilisateur puisse y écrire. Il ne pourra pas écrire dans un autre répertoire par défaut.
Si vous avez déjà le répertoire, vous pouvez exécuter la commande adduser
avec une option --no-create-home
en annexe et définir les permissions manuellement (également avec les privilèges de root), 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 par le monde, il existe deux variantes.
1) Si vous voulez fournir une session shell interactive à l'utilisateur, alors pensez à suivre 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
Puis commentez le Subsystem sftp /usr/lib/openssh/sftp-server
en plaçant un dièse (#
) au début.
Après le redémarrage de votre serveur SSH (il ne tue pas les sessions interactives au redémarrage, donc il est sûr même si vous avez mal configuré quelque chose ; de plus, il ne ferme pas votre session en cours avant que vous ayez vérifié que vous pouvez toujours vous connecter), tout devrait fonctionner comme prévu.