一.vsftpd说明
LINUX下实现FTP服务的软件很多,最常见的有vsftpd,Wu-ftpd和Proftp等.Red Hat Enterprise Linux中默认安装的是vsftpd.
访问FTP服务器时需要经过验证,只有经过了FTP服务器的相关验证,用户才能访问和传输文件.vsftpd提供了3种ftp登录形式:
1、anonymous(匿名帐号)
使用anonymous是应用广泛的一种FTP服务器.如果用户在FTP服务器上没有帐号,那么用户可以以anonymous为用户名,以自己的电子邮件地址为密码进行登录.当匿名用户登录FTP服务器后,其登录目录为匿名FTP服务器的根目录/var/ftp.为了减轻FTP服务器的负载,一般情况下,应关闭匿名帐号的上传功能.
2、real(真实帐号)
real也称为本地帐号,就是以真实的用户名和密码进行登录,但前提条件是用户在FTP服务器上拥有自己的帐号.用真实帐号登录后,其登录的目录为用户自己的目录,该目录在系统建立帐号时系统就自动创建.
3、guest(虚拟帐号)
如果用户在FTP服务器上拥有帐号,但此帐号只能用于文件传输服务,那么该帐号就是guest,guest是真实帐号的一种形式,它们的不同之处在于,geust登录FTP服务器后,不能访问除宿主目录以外的内容.
二、安装和使用
1、安装ftp服务器工具
环境是centos6.0,安装的“vsftpd-2.2.2-6.el6.x86_64.rpm”
2、开启vsftp server服务,检查ftp端口是否打开
/etc/init.d/vsftpd start
netstat -lpnt | grep vsftpd,可以看到使用21端口进行通信。
3、安装ftp客户端工具
环境是windows xp,安装了FlashFXP。
4、使用下载功能
在linux端,touch /var/ftp/pub/file_linux;
使用FlashFXP,登陆服务器端,使用匿名用户访问,默认访问目录/var/ftp/pub,可以看到file_linux,并且可以下载到windows客户端上。
5、使用上传功能
通过windows客户端尝试上传文件到linux的/var/ftp/pub目录下,FlashFXP工具报出失败信息“553 could not create file”。
- 修改/etc/vsftpd/vsftpd.conf:
write_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
更多配置文件参数说明见
- 禁用Selinux:
getsebool命令可以查看当前Selinux是否禁止。如果未禁用,网上有很多说明如何禁用。
- 检查目录权限:
ll /var/ftp
drwxr-xr-x. 3 root root 4096 Jun 3 14:51 pub
说明此目录当前属主是root,所以匿名访问的用户只具有读和执行权限,没有写权限。
有两种方式可以解决:
A:设置pub目录为777的权限,chmod -R 777 pub
B:在pub目录下创建子目录,设置子目录属主为ftp用户。
先检查系统是否有ftp用户,一般默认会创建。
cat /etc/passwd | grep ftp
ftp:x:107:65534::/home/ftp:/bin/false
mkdir /var/ftp/pub/upload
chown ftp:root /var/ftp/pub/upload
6、修改默认根目录。
vsftpd服务使用匿名用户登录时,默认根目录为/var/ftp/pub,添加用户后登录的默认根目录可能是其家目录(未试过)。若需要设置为/mnt/vg,可加入如下:
anon_root=/var/www/html #针对匿名用户
====以下针对其它ftp用户,未试过==========
local_root=/var/www/html
chroot_local_user=YES
注解:(修改FTP目录后也要修改FTP账户权限目录 否则会出现无权限错误提示)
7、与smb共享数据
smb匿名用户为nobody,因此smb目录,ftp用户无法写入数据。
解决方法
- 将ftp加入了nobody组,设置该组权限为rwx
- 将smb导出目录设置为777
8、更多使用例子