一、下载vsftp源码
vsftp下载
目前是最新的3.0.3版本——vsftpd-3.0.3.tar.gz
拷贝到Linux下解压,进入源码目录
二、编译
vim MakeFile
编译完成之后,我们只需要两个文件vsftpd和vsftpd.conf
chmod +x vsftpd
cp vsftpd /bin
cp vsftpd.conf /etc
三、修改配置文件
vim /etc/vsftpd.conf
匿 名 模 式 \color{red}{匿名模式} 匿名模式
anonymous_enable=YES
local_enable=NO
write_enable=YES
anon_upload_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
listen=YES
adduser nobody
mkdir -p /usr/share/empty/
mkdir -p /var/ftp/
adduser -h /var/ftp ftp
FTP默认需要一个nobody用户
FTP默认需要一个empty目录
FTP匿名模式默认需要一个FTP用户
-h 限定ftp用户的工作目录为/var/ftp
注意:一旦限定了ftp用户的工作目录,该目录不能具有写权限,否则会报错,这个后面会说明。比如上面的/var/ftp,ftp目录不能具有写权限。chmod a-w /var/ftp去除用户主目录的写权限
本 地 用 户 模 式 \color{red}{本地用户模式} 本地用户模式
anonymous_enable=NO
local_enable=YES
write_enable=YES
listen=YES
adduser nobody
mkdir -p /usr/share/empty/
FTP默认需要一个nobody用户
FTP默认需要一个empty目录
这里没有指定nobody用户的工作目录,它默认为/home/nobody,可以在/etc/passwd 里面查看
四、启动FTP服务
注意后面一定要加上&,将FTP服务放到后台运行,否则它是会阻塞控制台的。
匿 名 模 式 \color{red}{匿名模式} 匿名模式
匿名模式下,用户名为anonymous,密码输入1~65536之间任意数字即可,ftp不对密码字段作检查,这也就是匿名模式的由来。
浏览器地址栏输入ftp://192.168.0.100/ 改为你的IP
匿名模式下是没有写的权限。
本 地 用 户 模 式 \color{red}{本地用户模式} 本地用户模式
为了方便测试,我们新建一个vsftp的账户,账户的主目录设置为根目录
adduser vsftp -h /
浏览器地址栏输入下面的地址:(账号vsftp ,密码add账户的时候会设置)
ftp://192.168.0.100/
此时,若用匿名模式是登陆不上去的。
五、错误解决
warning: `vsftpd’ uses 32-bit capabilities (legacy support in use)
出现的这个警告,是因为没有移植并使用libcap所导致的,但不影响使用。
响应: 500 OOPS: vsftpd: cannot locate user specified in ‘ftp_username’:ftp
配置文件在调用默认匿名用户anonymous时会去找ftp这个系统用户,但是ftp这个系统用户又不存在(可能被删除了)
找到:
anonymous_enable=YES
修改为:
anonymous_enable=NO
重新启动vsftpd使配置生效
响应: 500 OOPS: vsftpd: both local and anonymous access disabled!
匿名登陆和本地用户登陆都被禁止了。开启其中一个即可。
anonymous_enable=NO
local_enable=YES //禁止匿名登陆 使能本地用户登陆
响应: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。
响应: 500 OOPS: cannot locate user entry:nobody
没有添加nobody账户,这个是FTP服务必须的账户
500 OOPS: could not bind listening IPv4 socket
/etc/vsftpd.conf 中修改listen=yes 使用独立模式