Soluzione 1:
Il comando che dovresti usare per cambiare la shell è chsh . La shell nologin può essere /sbin/nologin
o /usr/sbin/nologin
(controlla quale hai cercando in /etc/shells
) ma /bin/false
sarebbe probabilmente una scelta migliore.
chsh -s /bin/false user
Dovresti considerare di impostare qualcosa come scponly che farà esattamente quello che vuoi.
Soluzione 2:
Dovresti anche essere in grado di farlo con OpenSSH 4.9 e versioni successive, con cui puoi anche eseguire il chroot dell'utente per una maggiore sicurezza.
Nel tuo /etc/ssh/sshd_config
:
Match User user
ChrootDirectory /home/user
ForceCommand internal-sftp
AllowTcpForwarding no
Quindi esegui:
chsh -s /bin/false user
chown root:root /home/user
mkdir /home/user/uploads
chown user /home/user/uploads
L'utente potrà solo scrivere in /home/user/uploads.
https://debian-administration.org/article/590/OpenSSH_SFTP_chroot_with_ChrootDirectory
Soluzione 3:
Penso che il modo migliore sia con mysecureshell
http://mysecureshell.sourceforge.net/en/index.html
Puoi chroot un utente con questo facilmente e persino limitare la larghezza di banda se necessario.