Vorrei concedere l'accesso SFTP temporaneo a un ragazzo del supporto. Come creo un utente SFTP? E come posso eliminarlo una volta terminato il lavoro?
Inoltre, come faccio a specificare una home directory per loro? Posso impedire loro di accedere a determinate sottodirectory all'interno della loro home directory?
Usiamo CentOS 6.3 e fzSftp
Risposta accettata:
Accesso non chroot
Se non disponi di una configurazione del server FTP e ti fidi dell'utente che eseguirà l'accesso, per non curiosare troppo nel tuo server, sarei propenso a fornire loro un account per SFTP nel sistema.
Il wiki di CentOS mantiene un semplice howto intitolato:Semplice configurazione SFTP che lo rende abbastanza indolore.
Dico che è indolore perché devi letteralmente creare l'account e assicurarti che il firewall consenta il traffico SSH, assicurati che il servizio SSH sia in esecuzione e il gioco è fatto.
Se sshd
non è già in esecuzione:
$ /etc/init.d/sshd start
Per aggiungere un utente:
$ sudo useradd userX
$ sudo passwd userX
... set the password ...
Quando hai finito con l'account:
$ sudo userdel -r userX
Accesso al croot
Se invece vuoi limitare questo utente a una directory designata, il server SFTP incluso con SSH (openssh) fornisce una configurazione che rende anche questo facile da abilitare. È un po' più di lavoro ma non troppo. I passaggi sono trattati qui in questo tutorial intitolato:Come configurare Chroot SFTP in Linux (consenti solo SFTP, non SSH).
Apporta queste modifiche al tuo /etc/ssh/sshd_config
file.
Subsystem sftp internal-sftp
## You want to put only certain users (i.e users who belongs to sftpusers group) in the chroot jail environment. Add the following lines at the end of /etc/ssh/sshd_config
Match Group sftpusers
ChrootDirectory /sftp/%u
ForceCommand internal-sftp
Ora dovrai creare l'albero delle directory con chroot in cui verrà bloccato questo utente.
$ sudo mkdir -p /sftp/userX/{incoming,outgoing}
$ sudo chown guestuser:sftpusers /sftp/guestuser/{incoming,outgoing}
Le autorizzazioni dovrebbero essere simili alle seguenti:
$ ls -ld /sftp/guestuser/{incoming,outgoing}
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/incoming
drwxr-xr-x 2 guestuser sftpusers 4096 Dec 28 23:49 /sftp/guestuser/outgoing
Le directory di livello superiore come questa:
$ ls -ld /sftp /sftp/guestuser
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp
drwxr-xr-x 3 root root 4096 Dec 28 23:49 /sftp/guestuser
Non dimenticare di riavviare sshd
server:
$ sudo service sshd restart
Ora crea l'account utenteX:
$ sudo useradd -g sftpusers -d /incoming -s /sbin/nologin userX
$ sudo passwd userX
... set password ...
Puoi verificare che l'account sia stato creato correttamente:
$ grep userX /etc/passwd
userX:x:500:500::/incoming:/sbin/nologin
Quando hai finito con l'account, eliminalo allo stesso modo sopra:
$ sudo userdel -r userX
…e non dimenticare di rimuovere le modifiche al file di configurazione che abbiamo apportato sopra, quindi riavviare sshd
per renderli nuovamente attivi.