C'est simple Créez simplement un nouvel utilisateur avec son répertoire de base défini sur celui auquel vous souhaitez qu'il ait accès (cette commande doit être exécutée sous sudo
ou dans le shell root):
adduser --home /restricted/directory restricted_user
Cela créera un utilisateur restricted_user
, le répertoire /restricted/directory
, puis les autorisations sur le répertoire seront définies afin que l'utilisateur puisse y écrire. Il ne sera pas capable d'écrire dans un autre répertoire par défaut.
Si vous avez déjà le répertoire, vous pouvez exécuter une adduser
commande avec une --no-create-home
option ajoutée et définir manuellement les autorisations (également avec les privilèges root), comme par exemple:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Si vous devez rendre inaccessibles même les répertoires inscriptibles au monde pour cet utilisateur, il existe deux variantes.
1) Si vous souhaitez fournir une session de shell interactive à l'utilisateur, envisagez de suivre ce manuel pour créer 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 de lui pour copier des fichiers entre son noeud final de connexion et votre hôte, tout est beaucoup plus simple. 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 #
signe hash ( ) au début.
Après avoir redémarré votre serveur SSH (il ne tue pas les sessions interactives au redémarrage, il est donc sécurisé 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 êtes toujours en mesure de vous connecter), tout devrait fonctionner comme prévu.