淘先锋技术网

首页 1 2 3 4 5 6 7

一、下载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 使用独立模式