目標,配置ftp並且限制其訪問路徑。
第一步、安裝vsftpd
- sudo apt-get update
- sudo apt-get install vsftpd
備份一份配置文件 sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.orig
第二步、查看是否啟動了vsftpd
sudo ufw status
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6)
第三步、關閉防火牆或者防火牆添加了白名單
白名單操作
- sudo ufw allow 20/tcp
- sudo ufw allow 21/tcp
- sudo ufw allow 990/tcp
- sudo ufw allow 40000:50000/tcp//好像是客戶端ftp主動接受的端口范圍吧
- sudo ufw status//查看防火牆狀態
第四步、配置ftp用戶(具體參考linux怎么添加刪除用戶。設定用戶主目錄)
給個參考鏈接吧https://blog.csdn.net/piaocoder/article/details/50719149
https://www.cnblogs.com/sparkdev/p/5823353.html
創建用戶
useradd -d /home/sammy -m sammy
sudo adduser sammy
創建文件夾
- sudo mkdir /home/sammy/ftp
- sudo chown nobody:nogroup /home/sammy/ftp
- sudo chmod a-w /home/sammy/ftp
- sudo ls -la /home/sammy/ftp
- sudo mkdir /home/sammy/ftp/files
- sudo chown sammy:sammy /home/sammy/ftp/files
第五步、配置vsftpd(關鍵的一步,麻蛋坑逼的地方到了)
前面已經備份了/etc/vsftpd.conf,一定要記得備份,錯了還能恢復
取消注釋write_enable、
chroot_local_user=YES
主要配置
# Uncomment this to indicate that vsftpd use a utf8 filesystem.
#utf8_filesystem=YES
user_sub_token=$USER
local_root=/home
#local_root=/opt/lampp/apache2/htdocs
allow_writeable_chroot=YES
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
# user dir config
user_config_dir=/etc/vsftpd/userconfig
pasv_max_port=10090
pasv_min_port=10060
在
/etc/vsftpd/userconfig(這個路徑是我手動建的)中添加文件夾為ftp用戶名的文件,文件里面配置用戶允許登錄的路徑
對於chroot_local_user與chroot_list_enable的組合效果見下圖
vsftpd其實過程並不是很復雜,配置花了一天多時間才達到預期效果,原因有三:1、自身linux功底太弱、2、直接想到的事百度方案,百度上的東西要么比較老老么不全,最后輔助google得到解決、3vsftpd官方有點坑啊,安裝后默認的配置文件里面不是所有的配置項都全,不需要的配置你注釋起來不就行了,能有多少個配置,都不寫全。。。。
遇到的問題:
1、ftp: connect: Connection refused
vsftpd.conf文件里的#listen_ipv6=YES被取消注釋了。
參考了https://blog.csdn.net/zwd574011074/article/details/80242986
2、500 OOPS: priv_sock_get_cmd
vsftpd.conf文件添加seccomp_sandbox=NO
參考了https://stackoverflow.com/questions/16589570/windows-azure-ubuntu-500-oops-priv-sock-get-cmd-error-while-making-an-ftp-con
3、發現怎么配置在winscp中輸入密碼后都遠程拒絕,發現新建的用戶需要根據下面鏈接中的過程來建立才成功https://www.digitalocean.com/community/tutorials/how-to-set-up-vsftpd-for-a-user-s-directory-on-ubuntu-16-04#step-6-%E2%80%94-securing-transactions
其他參考:
https://www.digitalocean.com/community/tutorials/how-to-set-up-vsftpd-for-a-user-s-directory-on-ubuntu-16-04#prerequisites
http://vsftpd.beasts.org/vsftpd_conf.html