Comment puis-je créer un utilisateur uniquement pour sftp?

15

J'ai ajouté un utilisateur au système via l' adduseroutil. Puis, en /etc/passwd, j'ai essayé de changer le /bin/bashen /sbin/nologinou le /dev/null, mais aucun de ceux-ci n'a fonctionné.

J'aimerais que l'utilisateur n'ait pas la possibilité d'obtenir un shell interactif, et juste de l'utiliser sftp. Y a-t-il un moyen?

Je sais que cela a déjà été demandé ici, mais il semble que personne n'ait donné de réponse satisfaisante.

Toni Rosa
la source
Qu'entendez-vous par «pas de chance»?
Paweł Brodacki
Je voulais dire que le scp / sftp distant ne fonctionnait pas. Je l'ai résolu en utilisant la coquille scponly comme suggéré par Iain
Toni Rosa

Réponses:

9

La commande que vous devez utiliser pour changer le shell est chsh . Le shell nologin peut être /sbin/nologinou /usr/sbin/nologin(vérifiez ce que vous avez en regardant /etc/shells), mais ce /bin/falseserait probablement un meilleur choix.

chsh -s /bin/false user

Vous devriez envisager de mettre en place quelque chose comme scponly qui fera exactement ce que vous voulez.

Iain
la source
Merci pour votre réponse. J'ai essayé avec les shells dans / etc / shell sans succès ... / bin / false donne une "connexion perdue" et / sbin / nologin renvoie un "Ce compte n'est actuellement pas disponible.". Je vais essayer cela scponly
Toni Rosa
Je l'ai résolu en utilisant la coquille scponly! Santé
Toni Rosa
3
Cette réponse est l'aiguille dans le foin! Assurez-vous /bin/falseet /bin/nologinsont réellement disponibles en /etc/shells!
Afr
@Afri Très bien, mais ... vous voudrez vraiment lire serverfault.com/questions/328395/… . Ceci est assez fortement contre-indiqué.
Reinderien
@Afr ne mettez pas nologinen /etc/shells! serverfault.com/a/328424
RobAu
9

Vous devriez également pouvoir le faire avec OpenSSH 4.9 et supérieur, avec lequel vous pouvez en outre chrooter l'utilisateur pour une sécurité accrue.

Dans votre /etc/ssh/sshd_config:

Match User user
ChrootDirectory /home/user
ForceCommand internal-sftp
AllowTcpForwarding no

Exécutez ensuite:

chsh -s /bin/false user
chown root:root /home/user
mkdir /home/user/uploads
chown user /home/user/uploads

L'utilisateur ne pourra écrire que dans / home / user / uploads.

https://debian-administration.org/article/590/OpenSSH_SFTP_chroot_with_ChrootDirectory

Eduardo Ivanec
la source
+1 J'ai mis cela sur ma liste pour enquêter.
user9517
1
Je l'ai utilisé et cela fonctionne très bien - vous pouvez également donner à l'utilisateur le choix de se connecter à l'environnement chroot avec un shell, mais dans ce cas, vous devez copier un minimum de bibliothèques et d'autres utilitaires comme prévu. Jailkit ( olivier.sessink.nl/jailkit ) est très pratique pour cela.
Eduardo Ivanec
Merci, ForceCommand était un indice. Je n'ai pas besoin de chroot, mais je veux me connecter à SFTP avec des comptes de service.
AnrDaemon
2

Je pense que le meilleur moyen est avec mysecureshell

http://mysecureshell.sourceforge.net/en/index.html

Vous pouvez chrooter un utilisateur avec cela facilement et même limiter la bande passante si nécessaire.

Mike
la source
Je l'ai résolu en utilisant le shell scponly, mais il est intéressant de connaître ce mysecureshell
Toni Rosa
1

Vous pouvez ajouter un utilisateur avec -s /bin/falsepour désactiver son shell, mais ce que vous devez vraiment examiner dans la configuration est un compte sftp chrooté. Cela "emprisonnera" un utilisateur dans son propre répertoire et l'empêchera d'accéder ou de modifier des fichiers ou des répertoires en dehors du répertoire chroot.

gravyface
la source
Merci pour votre réponse, mais cela ne semble pas fonctionner. J'obtiens une "connexion perdue" chaque fois que j'essaye un utilisateur en utilisant le shell / bin / false.
Toni Rosa