用VSFTP搭建FTP服务器
FTP服务器是平时应用最为广泛的服务之一。VSFTP是Very Secure FTP的缩写,意指非常安全的FTP服务。VSFTP功能强大,通过结合本地系统的用户认证模块及其多功能的配置项目,可以快速有效的搭建强大的多用户FTP服务。
一、主要配置选项
VSFTP的主配置文件是/etc/vsftpd.conf 。由于可配置的选项实在太多,无法一一详谈,只能截取比较常用的功能配置选项来加以说明。完整说明可参考man vsftpd.conf。
这里需要注意的是,每个配置选项都是由“配置项目名称=配置值“所定义。在每个配置变量后,要紧跟等号,再紧跟设置的变量值。中间不允许出现空格之类的分隔符,否则导致配置错误,无法生效!
另外,如果需要开通上传功能,则应注意用来登录FTP的本地系统用户对要操作的目录需要具备写权限,否则无法上传文件!
版本vsftpd: version 2.0.6
启动VSFTPD:sudo /etc/init.d/vsftpd start
停止VSFTPD:sudo /etc/init.d/vsftpd stop
重启VSFTPD:sudo /etc/init.d/vsftpd restart
以下为常用的配置选项:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
|
二、一种VSFTP的配置方案
首先要安装VSFTP。
源码编译或软件包安装都可以。
sudo apt-get install vsptpd
以下方案实现以下功能:
1、锁定用户在/home/ftp默认目录活动,
并保留/etc/vsftpd.chroot_list文件里面的用户列表可访问其他目录。
2、具备暂时冻结FTP用户的功能,将需暂停的用户名加入到/etc/vsftpd.usr_list即可。
设置配置文件:
复制以下文件并保存为/etc/vsftpd.conf
新建两文件:
touch /etc/vsftpd.chroot_list
touch /etc/vsftpd.user_list
新建目录:mkdir /home/ftp
新建群组:addgroup ftp
修改/home/ftp属性:chown ftp:ftp /home/ftp
新增FTP用户: adduser --shell /bin/false --home /home/ftp your_usr_name
把需要开通FTP的用户名加入到ftp群组:usermod -aG ftp your_usr_name
注意:
如果你的/etc/shells里面没有包含/bin/false,则你用上述的方法建立的用户将法访问#FTP,解决方法:编辑/etc/shells,加入/bin/false这行。
三、前面提到的问题
1、如何添加FTP用户?
设置local_enable为YES可以开放系统用户访问FTP。
在系统里面添加用户,将shell设置为/bin/false,并将其家目录若设置为/home/ftp或者其他目录。这样就可以建立只访问FTP而无法登录shell环境的用户。
注意:可以新建一个ftp组,把/home/ftp的所有者设为ftp,群组也设为ftp。然后所有新添加的FTP用户只需加入到FTP群组就可以具有对/home/ftp的访问权限了。这样也方便管理用户量比较大的FTP系统。如:
1 2 3 4 |
|
2、如何临时冻结某FTP用户?
将 userlist_enable与userlist_deny都设置为YES。这样userlist_file所指定的文件里面的用户列表里面的用户都 被拒绝访问FTP。只需将某用户帐号加入到userlist_file所指定文件里面的用户列表,就可以起到暂时冻结该用户的功能!如需重新开通使用权 限,则只需从该文件中去掉相应的用户名。
3、FTP用户登入后的默认目录?是否可以改变?
可以通过local_root、anon_root来指定相应的默认目录。
4、如何锁定FTP用户可访问的目录范围?
将 chroot_local_user与chroot_list_enable都设置为YES。这样就只有chroot_list_file所指定的文件 里面的用户列表可以访问默认目录以外的目录,而列表以外的用户则被限定在各自的默认目录活动!如果某些特定用户需要访问其他目录的权限,只需将其用户名写 入chroot_list_file文件就可以赋予其访问其他目录的权限!
5、FTP用户可以有哪些访问权限?可否上传文件?
设置write_enable可以开启全局的写权限。这样FTP用户就可以在本地帐号管理系统允许的范围内进行写操作了
6、root用户无法登录ftp?
编辑/etc/ftpusers,将root注视掉就ok了
四、可能遇到的主要问题
一、
登录失败,解决方法:在/etc/shells中加入下面这句:/bin/false 就可以正常登录了
二、
上传文件时总是出现550 Permission denied错误,
查看vsftpd的配置文件sudo vim /etc/vsftpd.conf,
发现write_enable=YES这句配置项默认是被注释掉的即#write_enable=YES,
把前面的注释去掉,重启vsvfpd,一切正常了。
三、
user_config_dir 指定一个目录用于存放针对每个用户各自的配置文件。
比 如指定user_config_dir=/etc/vsftpd_user_conf, 新建/etc/vsftpd_user_conf/kkk文件,输入下面内容:
1 2 3 4 5 6 |
|
这个文件保存的配置都是针对kkk这个用户的。可以修改这个文件而 不用担心影响到其他用户的配置。
四、
报下面的错误
ftp:500 Illegal PORT command. 425
ftp:Use PORT or PASV first
或者是下面的错误
ftp:500 Illegal PORT command.
ftp: bind: Address already in use
主要是由于Iptables防火墙不支持
ip_nat_ftp
ip_conntrack_ftp
在linux的ftp服务器上执行下列命令即可解决
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
五、
553 Could not create file
用 chown 或 chmod
六、
限定用户访问目录
local_root=/srv/ftp
chroot_local_user=YES
chroot_list_enable=NO