目标,配置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