安裝vsftpd
apt-get update
apt-get install vsftpd
配置vsftpd
vi /etc/vsftpd.conf
一般配置選項如下:
# listen=YES
listen_ipv6=YES
# listen 和 listen_ipv6 開一個就行;兩個都開,vsftpd就報錯了
# 匿名用戶訪問
anonymous_enable=NO
# 本地用戶訪問
local_enable=YES
write_enable=YES
local_umask=022
anon_mkdir_write_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
各個選項具體含義參見默認的vsftpd.conf文件里面注釋;主要講下
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
這三個參數(shù)的含義:
chroot_local_user設(shè)為YES的情況下,如果chroot_list_enable設(shè)為YES, 那么chroot_list_file里面列出的用戶有權(quán)限訪問用戶主目錄之外的目錄;
一般情況下直接如不允許所有用戶訪問用戶主目錄之外的目錄,直接chroot_local_user=NO即可
增加用戶組和用戶
groupadd ftpuser
mkdir /home/remote1
useradd -g ftpuser remote1
passwd remote1
# 輸入新密碼
vim /etc/passwd
remote1:x:1001:1001::/home/remote1:/sbin/nologin
vi /etc/shells
#在最末尾添加一行
/sbin/nologin
chown -R remote1:ftpuser /home/remote1
chmod 700 /home/remote1
chroot權(quán)限控制
如果用戶被允許訪問主目錄之外的目錄(chroot=true),則該用戶通過ftp連接服務(wù)器可以訪問其他用戶或者用戶組不開放的文件和目錄之外的服務(wù)器上的大部分文件和目錄;
所以,一般不允許用戶訪問主目錄之外的目錄(chroot=false),此時ftp連接的時候往往會報錯;此時需要更改用戶主目錄權(quán)限:
chmod a-w /home/remote1
更改后用戶ftp登錄后無法在用戶根目錄下創(chuàng)建子目錄和寫文件;所以需要創(chuàng)建子目錄,然后將文件寫入到子目錄中。
啟動vsftpd服務(wù)
service vsftpd restart
# 查看服務(wù)狀態(tài)
service vsftpd status
vsftpd running
查看端口監(jiān)聽狀態(tài):
netstat -nap |grep LISTEN
vsftpd listening
nginx和vsftpd分別在監(jiān)聽80和21端口
FTP客戶端
Mac下ftp客戶端可以使用FileZilla: 下載鏈接