Solution 1 :
La commande que vous devez utiliser pour changer le shell est chsh . Le shell nologin peut être /sbin/nologin
ou /usr/sbin/nologin
(vérifiez lequel vous avez en regardant dans /etc/shells
) mais /bin/false
serait probablement un meilleur choix.
chsh -s /bin/false user
Vous devriez envisager de configurer quelque chose comme scponly qui fera exactement ce que vous voulez.
Solution 2 :
Vous devriez également pouvoir le faire avec OpenSSH 4.9 et versions ultérieures, avec lesquelles vous pouvez également 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
Solution 3 :
Je pense que le meilleur moyen est avec mysecureshell
http://mysecureshell.sourceforge.net/en/index.html
Vous pouvez facilement chrooter un utilisateur avec cela et même limiter la bande passante si nécessaire.