introduzione
Alcuni scenari richiedono la creazione di utenti con accesso in lettura e scrittura a una singola directory solo tramite FTP. Questo articolo ti mostrerà come creare tali utenti. Non saranno in grado di navigare al di fuori della loro home directory, accedere al server tramite SSH o eseguire comandi shell.
Imposta gruppo e servizio SFTP
-
Crea gruppo sftpusers.
sudo groupadd sftpusers
-
Commenta l'impostazione disabilitando l'accesso SFTP dal file di configurazione sshd.
sudo sed -i "s/Subsystem sftp \/usr\/lib\/openssh\/sftp-server/#Subsystem sftp \/usr\/lib\/openssh\/sftp-server/" /etc/ssh/sshd_config
-
Apri il file di configurazione sshd sudo nano /etc/ssh/sshd_config
, aggiungi sotto lo snippet ed esci (Ctrl + X -> Y -> Premi Invio) .
#enable sftp
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h #set the home directory
ForceCommand internal-sftp
X11Forwarding no
AllowTCPForwarding no
PasswordAuthentication yes
-
Riavvia ssh.
sudo service ssh restart
Creazione di utenti
Ripeti la procedura seguente per ogni utente SFTP che desideri aggiungere al server.
# create user
sudo adduser sftpuser1
# prevent ssh login & assign SFTP group
sudo usermod -g sftpusers sftpuser1
sudo usermod -s /bin/nologin sftpuser1
# chroot user (so they only see their directory after login)
sudo chown root:sftpuser1 /home/sftpuser1
sudo chmod 755 /home/sftpuser1
sudo mkdir /home/sftpuser1/uploads
sudo chown sftpuser1:sftpuser1 /home/sftpuser1/uploads
sudo chmod 755 /home/sftpuser1/uploads
Puoi rendere più veloce la creazione di utenti avvolgendo sopra una funzione e aggiungendola al tuo profilo bash eseguendo (1) sudo nano ~/.bash_profile
; (2) aggiungendo lo snippet sottostante; (3) in esecuzione source ~/.bash_profile
.
Successivamente, creare un nuovo utente SFTP diventa facile come eseguire il comando create_sftp_user
insieme a un nome utente come parametro.
# usage: create_sftp_user <username>
function create_sftp_user() {
# create user
sudo adduser $1
# prevent ssh login & assign SFTP group
sudo usermod -g sftpusers $1
sudo usermod -s /bin/nologin $1
# chroot user (so they only see their directory after login)
sudo chown root:$1 /home/$1
sudo chmod 755 /home/$1
sudo mkdir /home/$1/uploads
sudo chown $1:$1 /home/$1/uploads
sudo chmod 755 /home/$1/uploads
}
Prova per assicurarti che l'utente che hai creato possa connettersi al server tramite SFTP ( Nota : connettiti utilizzando SFTP e non FTP) .
Scritto da Lami Adabonyan