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.


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.


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


+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


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.