Nous avons récemment trouvé une solution de contournement qui ressemble à ceci :
/etc/ssh/sshd_config :
...
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
autorisations de répertoire :
[email protected]:~ # chown root:root /home
[email protected]:~ # chmod 111 /home
[email protected]:~ # chmod 700 /home/*
Maintenant /home
répond aux exigences de ChrootDirectory
et ne peut pas être répertorié par les utilisateurs restreints, mais sftponly
les utilisateurs ne pourront pas se connecter si leurs répertoires personnels sont configurés comme d'habitude (/home/$LOGNAME
) :sous l'environnement chrooté, leurs répertoires personnels ne sont pas à l'intérieur de /home
mais directement sous root (/
).
solution de contournement 1
Définissez les maisons des utilisateurs restreints sur la façon dont elles apparaissent sous chroot :
[email protected]:~ # usermod -d /username username
mise en garde 1
Si l'un des utilisateurs sans restriction ou un script d'administration utilise l'extension tilde de bash comme ~username
il s'étendra à /username
maintenant, ce qui n'est pas ce que l'on veut dire.
Aussi l'administrateur qui crée sftponly
les utilisateurs doivent se rappeler d'utiliser la maison non par défaut. Résoluble avec un script. Que l'administrateur doit se souvenir d'utiliser.
solution de contournement 2
C'est une alternative à la précédente que nous avons fini par utiliser :
[email protected]:~ # ln -s . /home/home
C'est créer un lien symbolique à l'intérieur de /home
à son propre nom de domaine. Maintenant sous chroot /home/username
pointe vers le même répertoire que sans chroot. Pour un utilisateur restreint connecté avec sftp, il apparaîtrait comme /username
. Ce répertoire est accessible en écriture à son propriétaire (utilisateur restreint). L'utilisateur restreint ne peut pas répertorier ses répertoires parent ou personnel de l'un des frères et sœurs par nom.
La seule particularité d'un sftponly
user est sa participation au sftponly
groupe. Nous l'avons trouvée plus facile à gérer que la solution de contournement 1.
met en garde 2
- Vous ne pouvez pas avoir un utilisateur nommé 'home' avec un répertoire personnel
/home/home
- Vous devez être prudent avec les scripts qui traversent
/home
hiérarchie et suivez les liens symboliques.
Vous devez créer une structure dans le répertoire personnel de l'utilisateur, comme les répertoires d'entrée et de sortie. Ces répertoires doivent appartenir à l'utilisateur et là, il pourra mettre et récupérer des fichiers.
J'ai les mêmes paramètres sur notre serveur. Nous utilisons la même configuration de SSHD. Les répertoires personnels des utilisateurs appartiennent à la racine et en leur sein se trouvent les dossiers documents
et public_html
appartenant aux utilisateurs respectifs. Les utilisateurs se connectent ensuite à l'aide de SFTP et écrivent dans ces dossiers (pas directement dans home). Comme SSH n'est pas autorisé pour eux, cela fonctionne parfaitement. Vous pouvez ajuster les répertoires qui seront créés pour les nouveaux utilisateurs dans /etc/skel/ (au moins dans openSUSE, je ne suis pas très familier avec les autres distributions).
Une autre possibilité serait ACL (documentation openSUSE) - il peut ajouter une autorisation d'écriture pour l'utilisateur respectif pour son répertoire personnel.