网上搜索了很多资料,过时,不全,货不对版
已下步骤亲测有效,不包含匿名用户登录
1、新建/home/loguser.txt
并填充内容,格式如下
用户名
密码
用户名
密码
用户名
密码
2、生成db文件用于用户验证
执行db_load -T -t hash -f /home/loguser.txt /etc/vsftpd_login.db
如果没有装db会提示你apt-get install,根据提示的内容输入命令安装后再次执行生成db
3、设置数据库文件的访问权限
chmod 600 /etc/vsftpd_login.db
4、编辑文件/etc/pam.d/vsftpd.vu 将以下内容增加到原文件前面两行:
auth required pam_userdb.so db=/etc/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd_login
如果没有vsftpd.vu就新建一个
5、新建一个系统用户vsftpd,用户家目录为/home/vsftpd, 用户登录终端设为/bin/false(即使之不能登录系统)
sudo useradd vsftpd -d /home/vsftpd -s /bin/false
sudo chown vsftpd:vsftpd /home/vsftpd
6、根据需要创建/etc/vsftpd.conf,一般要确保含有以下设置:
listen=NO
anonymous_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd
user_config_dir=/etc/vsftpd_user_conf
pam_service_name=vsftpd.vu
local_enable=YES
secure_chroot_dir=/var/run/vsftpd
7、新建目录/etc/vsftpd_user_conf
在目录内新建对应你第一步的用户名的文件 比如你有用户dbtest 那你在这个目录内也要建立一个dbtest的文件
8、配置单个用户的权限,确保你的dbtest内是这些内容
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vsftpd/dbtest
注意所有的配置文件内容前后都不能有空格,不然登录的时候会提示出错ahjesus.com
9、新建对应local_root的目录,并赋予777权限
测试上传下载编辑删除
10、挂载虚拟目录
比如我的ftp的默认目录是/srv/ftp,我想把/mnt/LinG/WinSoft文件夹,映射到/srv/ftp目录中,我就如下操作 命令:
#mount --bind [原有的目录] [新目录]
先创建文件夹
sudo mkdir /srv/ftp/WinSoft
执行mount命令
sudo mount --bind /mnt/LinG/WinSoft /srv/ftp/WinSoft 最后注意,挂载的虚拟目录也需要777权限
关于500 OOPS: vsftpd: refusing to run with writable root inside chroot()
个人理解是不能在主目录有写入权限
这里可以设置主目录的权限为775
然后设置指定的用户的目录权限为777
可以顺利登陆操作了