Pengenalan
Senario tertentu memerlukan anda membuat pengguna dengan akses baca dan tulis ke satu direktori melalui FTP sahaja. Penulisan ini akan menunjukkan kepada anda cara membuat pengguna sedemikian. Mereka tidak akan dapat menavigasi di luar direktori rumah mereka, masuk ke pelayan melalui SSH, atau melaksanakan perintah shell.
Siapkan Kumpulan dan Perkhidmatan SFTP
-
Buat kumpulan sftpusers.
sudo groupadd sftpusers
-
Komen keluar menetapkan melumpuhkan akses SFTP dari fail konfigurasi sshd.
sudo sed -i "s/Subsystem sftp \/usr\/lib\/openssh\/sftp-server/#Subsystem sftp \/usr\/lib\/openssh\/sftp-server/" /etc/ssh/sshd_config
-
Buka fail konfigurasi sshd sudo nano /etc/ssh/sshd_config
, tambahkan cuplikan di bawahnya, dan keluar (Ctrl + X -> Y -> Tekan Enter) .
#enable sftp
Subsystem sftp internal-sftp
Match Group sftpusers
ChrootDirectory %h #set the home directory
ForceCommand internal-sftp
X11Forwarding no
AllowTCPForwarding no
PasswordAuthentication yes
-
Mulakan semula ssh.
sudo service ssh restart
Membuat Pengguna
Ulangi proses di bawah untuk setiap pengguna SFTP sahaja yang ingin anda tambahkan ke pelayan.
# 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
Anda boleh membuat pengguna lebih cepat dengan membungkus fungsi di atas dan menambahkannya ke profil bash anda dengan (1) berjalan sudo nano ~/.bash_profile
; (2) menambahkan coretan di bawahnya; (3) berlari source ~/.bash_profile
.
Selepas itu, membuat pengguna SFTP baru menjadi semudah menjalankan perintah create_sftp_user
bersama dengan nama pengguna seperti parameternya.
# 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
}
Uji untuk memastikan pengguna yang anda buat dapat menyambung ke pelayan melalui SFTP ( Catatan : Sambung menggunakan SFTP dan bukan FTP) .
Ditulis oleh Lami Adabonyan