Come posso creare un utente solo per sftp?


15

Ho aggiunto un utente al sistema tramite lo adduserstrumento. Poi, in /etc/passwd, ho provato a cambiare il /bin/bashto /sbin/nologino to /dev/null, ma nessuno di questi ha funzionato.

Vorrei che l'utente non avesse la possibilità di ottenere una shell interattiva e solo di usarla sftp. C'è un modo?

So che è stato chiesto qui prima, ma sembra che nessuno abbia dato una risposta soddisfacente.


Cosa intendi con "senza fortuna"?
Paweł Brodacki,

Volevo dire che il telecomando scp / sftp non funzionava. L'ho risolto usando la shell scponly come suggerito da Iain
Toni Rosa,

Risposte:


9

Il comando che dovresti usare per cambiare la shell è chsh . La shell di nologin può essere /sbin/nologino /usr/sbin/nologin(controlla quale hai guardando /etc/shells) ma /bin/falseprobabilmente sarebbe una scelta migliore.

chsh -s /bin/false user

Dovresti prendere in considerazione l' idea di creare qualcosa come Scponly che farà esattamente quello che vuoi.


Grazie per la tua risposta. Ho provato con le shell dentro / etc / shell senza fortuna ... / bin / false dà una "connessione persa" e / sbin / nologin restituisce un "Questo account non è attualmente disponibile.". Proverò questo in modo schietto
Toni Rosa,

L'ho risolto usando la shell scponly! Saluti
Toni Rosa,

3
Questa risposta è l'ago nel fieno! Assicurati /bin/falsee /bin/nologinsono effettivamente disponibili in /etc/shells!
Afr

@Afri Bene, ma ... ti consigliamo di leggere serverfault.com/questions/328395/… . Questo è abbastanza fortemente controindicato.
Reinderien,

@Afr non mettere nologinin /etc/shells! serverfault.com/a/328424
RobAu,

9

Dovresti anche essere in grado di farlo con OpenSSH 4.9 e versioni successive, con cui puoi anche chroot l'utente per una maggiore sicurezza.

Nel tuo /etc/ssh/sshd_config:

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

Quindi eseguire:

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 / utente / upload.

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


+1 L'ho inserito nel mio elenco per indagare.
user9517,

1
L'ho usato e funziona benissimo: puoi anche dare all'utente la possibilità di accedere all'ambiente chroot con una shell, ma in tal caso devi copiare un minimo di librerie e alcune altre utility come previsto. Il jailkit ( olivier.sessink.nl/jailkit ) è utile per questo.
Eduardo Ivanec,

Grazie, ForceCommand è stato un suggerimento. Non ho bisogno di chroot, ma voglio accedere a SFTP con account di servizio.
AnrDaemon,


1

Puoi aggiungere un utente con -s /bin/falseper disabilitare la sua shell, ma quello che dovresti davvero guardare nell'impostazione è un account sftp chrooted. Ciò "imprigionerà" un utente nella propria directory e impedirà loro di poter accedere o modificare qualsiasi file o directory al di fuori della directory chroot.


Grazie per la tua risposta, ma non sembra funzionare. Ottengo una "connessione persa" ogni volta che provo un utente usando la shell / bin / false.
Toni Rosa,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.