一、安装vsftpd
1
| sudo apt-get install vsftpd
|
二、配置用户
在/etc下创建目录vsftpd
1 2 3
| mkdir vsftpd cd vsftpd vi user.txt
|
user.txt中加入用户名、密码,奇数行为用户名,偶数行为密码
使用db_load命令将用户生成数据库
如果没有db_load命令先安装
然后生成数据库
1 2
| db_load -T -t hash -f user.txt user.db sudo chmod 600 user.db
|
之后记得删除user.txt文件
三、创建不同用户的配置
1 2 3
| mkdir user_conf cd user_conf sudo touch ftp1 ftp2 //对应user.txt中的用户
|
在ftp1中写入:
1 2 3 4 5 6
| anon_world_readable_only=no write_enable=yes anon_upload_enable=yes anon_mkdir_write_enable=yes anon_other_write_enable=yes local_root=/home/ftp/t1
|
在ftp2中写入:
1 2 3 4 5 6
| anon_world_readable_only=no write_enable=yes anon_upload_enable=yes anon_mkdir_write_enable=yes anon_other_write_enable=yes local_root=/home/ftp/t2
|
四、修改pam.d下的vsftpd,配置PAM文件
创建文件/etc/pam.d/vsftpd.vu 将以下内容增加到原文件前面两行:
1 2 3 4 5
| cd /etc/pam.d vi vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/user account required pam_userdb.so db=/etc/vsftpd/user
|
其中db=….指向我们之前建立的user.db
五、创建虚拟帐号:
1 2 3 4 5 6
| sudo useradd vsftpduser -d /home/vsftpd -s /sbin/nologin //不允许登录 chmod a-w /home/vsftpd //修改目录的权限 chown vsftpduser:vsftpd /home/vsftpd //修改目录属于的用户组,因为我们创建了两个ftp位置,所以都要修改权限、用户组,如果提示没有用户组,自己创建一个
chmod a-w /home/ftp chown vsftpduser:vsftpd /home/ftp
|
六、修改/etc/vsftpd.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
local_root=/var/www local_umask=022 file_open_mode=0755 force_dot_files=YES pasv_min_port=65000 pasv_max_port=65535 pasv_address=ip.ip.ip.ip port_enable=YES pasv_enable=YES pasv_addr_resolve=YES guest_enable=YES guest_username=vsftpduser user_config_dir=/etc/vsftpd/user_conf use_localtime=YES
pam_service_name=vsftpd.vu allow_writeable_chroot=YES virtual_use_local_privs=YES chmod_enable=YES chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
|
解决办法500 OOPS: vsftpd: refusing to run with writable root inside chroot()
在vsftpd.conf中添加 allow_writeable_chroot=YES
小技巧
禁止用户访问上级目录时使用以下配置
1 2 3
| chroot_local_user=NO chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
|
在vsftpd文件见中生成chroot_list文件,在此文件中输入禁止用户
重新启动vsftpd服务即可。
服务器发回了不可路由的地址。使用服务器地址代替的问题
解决方法:
1 2
| listen=NO -> listen=YES listen_ipv6=YES ->listen_ipv6=NO
|
如果是ipv6则需要改成
1 2
| listen=NO listen_ipv6=YES
|
开启被动模式的代码:
1 2 3 4 5 6 7 8
| pasv_enable=YES
pasv_min_port=6000 pasv_max_port=6010
pasv_address=xxx.xxx.xxx.xxx pasv_addr_resolve=YES
|
云服务器的话,同时开启防火墙和安全组的端口
如果使用filezilla等FTP软件的话,在输入的IPv6地址前后加[]