生产环境是Centos5.6,由于需要提供ftp服务,就找了一款比较小巧的ftp服务器端软件,vsftpd(vsftpd 的名字代表”very secure FTP daemon”.
vsftpd在安全性、高性能及稳定性三个方面有上佳的表现。
它提供的主要功能包括虚拟IP设置、虚拟用户、Standalone、inetd操作模式、强大的单用户设置能力及带宽限流等。
安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。
1.查看是否安装vsftp
rpm -qa | grep vsftpd
如果出现vsftpd-2.0.5-21.el5,说明已经安装 vsftp
安装vsftp
yum -y install vsftpd
2.测试 是否安装成功 (ip 改成自己啊,不要用俺的此次登录为匿名登录 user: anonymous 密码为空 如果成功登录会有下面内容 这说明vsftpd安装成功)
[root@localhost ~]#service vsftpd start
为 vsftpd 启动 vsftpd:[确定]
3,配置vsftpd
# whereis vsftpd
vsftpd: /usr/sbin/vsftpd /etc/vsftpd /usr/share/man/man8/vsftpd.8.gz
yum安装的主要目录为上述的3个目录,其中配置文件vsftpd.conf在/etc/vsftpd中,下面看下怎么配置vsftpd.conf
# 默认配置文件: /etc/vsftpd.conf
# 下面是配置的选项及说明
######### 核心设置 ###########
# 允许本地用户登录
local_enable=YES
# 本地用户的写权限
write_enable=YES
# 使用FTP的本地文件权限,默认为077
# 一般设置为022
local_umask=022
# 切换目录时
# 是否显示目录下.message的内容
dirmessage_enable=YES
dirlist_enable = NO
#验证方式
#pam_service_name=vsftpd
# 启用FTP数据端口的数据连接
connect_from_port_20=YES
# 以独立的FTP服务运行
listen=yes
# 修改连接端口
#listen_port=2121
######### 匿名登录设置 ###########
# 允许匿名登录
anonymous_enable=NO
# 如果允许匿名登录
# 是否开启匿名上传权限
#anon_upload_enable=YES
# 是否允许匿名建立文件夹并在文件夹内上传文件
#anon_mkdir_write_enable=YES
# 匿名帐号可以有删除的权限
#anon_other_write_enable=yes
# 匿名的下载权限
# 匿名为Other,可设置目录/文件属性控制
#anon_world_readable_only=no
# 限制匿名用户传输速率,单位bite
#anon_max_rate=30000
######### 用户限制设置 ###########
#### 限制登录
# 用userlist来限制用户访问
#userlist_enable=yes
# 名单中的人不允许访问
#userlist_deny=no
# 限制名单文件放置的路径
#userlist_file=/etc/vsftpd/userlist_deny.chroot
#### 限制目录
# 限制所有用户都在家目录
#chroot_local_user=yes
# 调用限制在家目录的用户名单
chroot_list_enable=YES
# 限制在家目录的用户名单所在路径
chroot_list_file=/etc/vsftpd/chroot_list
######### 日志设置 ###########
# 日志文件路径设置
xferlog_file=/var/log/vsftpd.log
# 激活上传/下载的日志
xferlog_enable=YES
# 使用标准的日志格式
#xferlog_std_format=YES
######### 安全设置 ###########
# 用户空闲超时,单位秒
#idle_session_timeout=600
# 数据连接空闲超时,单位秒
#data_connection_timeout=120
# 将客户端空闲1分钟后断开
#accept_timeout=60
# 中断1分钟后重新连接
#connect_timeout=60
# 本地用户传输速率,单位bite
#local_max_rate=50000
# FTP的最大连接数
#max_clients=200
# 每IP的最大连接数
#max_per_ip=5
######### 被动模式设置 ###########
# 是否开户被动模式
pasv_enable=yes
# 被动模式最小端口
pasv_min_port=5000
# 被动模式最大端口
pasv_max_port=6000
######### 其他设置 ###########
# 欢迎信息
ftpd_banner=Welcome to Ftp Server!
4 添加ftp防火墙规则:
/sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT
/etc/rc.d/init.d/iptables save
/etc/init.d/iptables restart
或
在文件/etc/sysconfig/iptables中添加以下记录,后执行service iptables restart重启
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 21 -j ACCEPT
5 添加用户(注意,该处添加nologin类型用户ftpuser):
useradd -d /home/ftp -s /sbin/nologin ftpuser
如果已启动vsftpd,重新启动
pkill vsftpd /usr/sbin/vsftpd &
6 到此,整个小巧的ftp服务器搭建成功。可以使用FileZilla FTP或FlashFXP等客户端软件登陆ftp server了。
<a href="http://www.cnblogs.com/itech/archive/2012/09/16/2687378.html">http://www.cnblogs.com/itech/archive/2012/09/16/2687378.html</a>
sftp ncftp
常见问题及解决办法:
1、root 用户220拒绝
解决办法:
在/etc/vsftpd.ftpusers和/etc/vsftpd.user_list中将root注释掉,保存文件后立即生效
原因:
[root@test ums-client]# more /etc/vsftpd.user_list
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
# for users that are denied.
#root
2.设定ftp登陆时的默认目录
修改vsftp默认用户访问目录在配置文件目录 /etc/vsftpd/下的 vsftpd.conf文件中。
找到并打开/etc/vsftpd/vsftpd.conf, 设置添加以下代码:
local_root=/home/xxx
那么ftp用户访问的默认目录就是xxx这个目录了。
ftp用户访问的默认目录设置好了, 还可以单独设置这个目录的访问权限如(777,755等权限), 方法请参考文章: vsftp 设置ftp用户访问目录权限的命令
注意设置好了需要重启vsftp服务器:
service vsftpd restart
重启后你再在客户端连接看看是不是指定的目录呀。
3、vsftpd下显示的时间与系统时间不一致
ftp上来显示的时间与系统时间不一致,是因为默认情况下,vsftpd 是用GMT做为它的时间的,所以和系统的时间(GMT+8会会相差8个小时)能会不一致。
修改也很简单:
vi /etc/vsftpd/vsftpd.conf
在最后加入一行:
use_localtime=YES
存盘后,重启vsftpd:
这样就行了
<a href="http://www.chinaunix.net/old_jh/4/347483.html">http://www.chinaunix.net/old_jh/4/347483.html</a>
按上述设置并重启vsftpd后,时间显示正常:
4、如何有选择的把用户限制在家目录中呢?
我们要自己建一个文件,在/etc目录中或/etc/vsftpd目录中(假如您的vsftpd配置文件都是放在这个目录的话);
#touch /etc/vsftpd.chroot_list
以beinan和nanbei这两个用户限制在他们所在的家目录中,而其它的FTP用户不做此限制。
在vsftpd.chroot_list这个文件中,把beinan和nanbei添上去就行,注意,每个用户占一行。
beinan
nanbei
然后改/etc/vsftpd/vsftpd.conf文件,找如下的两行
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
如果没有这样的两行,就可以自己添加上去也是一样的。
设置好后,重新vsFTPD服务器。
补充一之补充:如何把系统内所有的FTP用户都限制在家目录中呢??经juliaugong兄的提示,我查找了vsFTPd的洋文说明,证明这个选项是一刀切的解决所有的用户都能限制在家目录中
我们可以通过更改vsftpd.conf文件,加入如下的一行
chroot_local_user=YES
改完配制文件,不要忘记重启vsFTPd服务器;
5、如何让绑定IP到vsFTPd?
如何让绑定IP到vsFTPd?也就是说,如何让用户只能通过某个IP来访问FTP。其实这个功能很有意思。如果绑定的是内网的IP,外部是没有办法访问的。如果绑定的是对外服务的IP,内网也只能通过对外服务的IP来访问FTP
在vsftpd.conf中加一行,以我的局域网为例,请看第一帖中的操作环境,这样外网就不能访问我的FTP了,内网也可能通过192.168.0.2来访问FTP;
listen_address=192.168.0.2
<a href="http://os.51cto.com/art/201102/245528.htm">http://os.51cto.com/art/201102/245528.htm</a>