Dans mon SSH / SFTP
pour un certain groupe d'utilisateurs, j'aimerais que ces utilisateurs soient limités à leurs propres activités. home
après l'ouverture de session, et vérifier d'autres conditions avant d'accorder l'accès aux dossiers. SFTP
l'accessibilité.
Restreindre les utilisateurs à leurs répertoires personnels était assez simple, j'ai ajouté :
Match group <someGroup>
ChrootDirectory %h
ForceCommand internal-sftp
Cependant, en passant à la seconde partie, je veux vérifier certaines conditions, ce qui implique de remplacer internal-sftp
en ForceCommand
avec un script.
Dans le script, après la vérification :
sh -c $SSH_ORIGINAL_COMMAND
se résout à /usr/libexec/openssh/sftp-server
puisque c'est la requête envoyée par toute SFTP
client tel que WinSCP
(c'est probablement par défaut..). Bien que l'utilisateur soit en mesure d'utiliser SFTP, la capacité à Chroot
l'utilisateur à son répertoire personnel a disparu.
Je ne suis pas sûr de savoir comment forcer ou appeler, à partir du Shell Shell, les internal-sftp
et Chroot-ing
un utilisateur à son %HOME
dans le script. Comment dois-je m'y prendre, si c'est possible ?
UPDATE
Comme indiqué dans la réponse ci-dessous, j'ai essayé de copier les fichiers système requis dans le dossier de l'utilisateur. Chroot
et appeler $SSH_ORIGINAL_COMMAND
dans mon script.
sshd_config
Match group <somegroup>
ChrootDirectory %h
ForceCommand /usr/local/bin/testssh.sh
testssh.sh script
#! /bin/bash
sh -c $SSH_ORIGINAL_COMMAND
ChrootDirectory (user home, complete path owned by root)
Contents
/bin
/etc
/lib
Cependant, l'utilisateur est toujours incapable d'initier la session sftp. Que faut-il faire d'autre ?