参考地址:
文件:vsftpd-2.3.2.tar.gz
首先安装vsftpd:
cd /opt/software
tar -zxvf vsftpd-2.3.2.tar.gz
cd vsftpd-2.3.2
修改配置文件
vi builddefs.h
/********************************************
#ifndef VSF_BUILDDEFS_H
#define VSF_BUILDDEFS_H
#define VSF_BUILD_TCPWRAPPERS
#undef VSF_BUILD_PAM
#define VSF_BUILD_SSL
#endif /* VSF_BUILDDEFS_H */
***************************************************/
编译
make
检查是否完成编译
ls -l vsftpd
-rwxr-xr-x 1 root root 84712 Jun 6 18:56 vsftpd //可执行程序已被编译成功
创建必要的帐号,目录:
useradd nobody
mkdir /usr/share/empty
mkdir /var/ftp
useradd -d /var/ftp ftp
chown root:root /var/ftp
chmod og-w /var/ftp
如果已存在,则不用管继续。
安装vsftp配置文件,可执行程序,man等:
install -m 755 vsftpd /usr/local/sbin/vsftpd
install -m 644 vsftpd.8 /usr/share/man/man8
install -m 644 vsftpd.conf.5 /usr/share/man/man5
install -m 644 vsftpd.conf /etc/vsftpd.conf
安装完成
修改vsftpd配置文件
vi /etc/vsftpd.conf
以下项修改为:
Write_enable = yes
local_enable = yes
如果还允许匿名登录则anonymous_enable=yes ;一般匿名用户是不准上传和修改的权限的。
添加
listen_port=21
tcp_wrappers=YES //支持tcp_wrappers,限制访问(/etc/hosts.allow,/etc/hosts.deny)
listen=YES的意思是使用standalone启动vsftpd,而不是super daemon(xinetd)控制它 (vsftpd推荐使用standalone方式),注意事项请参看匿名用户的配置。
启动:/usr/local/sbin/vsftpd /etc/vsftpd.conf &
然后添加vsftpd用户!
参考文档:hi.baidu.com/lssbing/blog/item/bae673506cc330571138c233.html
#mkdir /opt/srsman //首先创建好目录
# adduser -d /opt/srsman -g ftp -s /sbin/nologin srsman //-s
/sbin/nologin是让其不能登陆系统,-d 是指定用户目录为/opt/srsman
# passwd srsman
Changing password for user beinan.//接下来会出现让你设置新的密码
New password:
Retype new password:
passwd: all authentication tokens updated successfully
限制用户目录,不得改变目录到上级
修改/etc/vsftpd/vsftpd.conf
将这两行
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
注释去掉
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
新增一个文件: /etc/vsftpd/chroot_list
内容写需要限制的用户名:
srsman
重新启动vsftpd
============================================
可能出现的错误。
一、500 OOPS: could not bind listening IPv4 socket、
chkconfig vsftpd --level 3 off
二、500 OOPS: vsftpd: refusing to run with writable anonymous root
这表示ftp用户的家目录的权限不对,应该改过才对;
[root@localhost ~]# more /etc/passwd |grep ftp
ftp:x:1000:1000:FTP User:/var/ftp:/sbin/nologin
修正这个错误,应该用下面的办法;
[root@localhost ~]# chown root:root /var/ftp
[root@localhost ~]# chmod 755 /var/ftp
或采用 killall vsftpd结束进程,进行再次重启
三、Socket链接超时
[右] 227 Entering Passive Mode (192,168,1,218,62,93).
[右] 正在打开数据连接 IP: 192.168.1.218 端口: 15965
[右] 数据 Socket 错误: 无法连接主机
[右] 列表错误
[右] PASV 模式失败, 尝试 PORT 模式。
答:经常登录各种FTP服务器,会遇到socket错误,几种目前常用FTP软件的解决办法如下:
★Cute FTP 3.5英文版:FTP—>Settings—>Options—>Firewall,将“PASV mode”前复选框中的打勾去掉。
★Cute FTP3.5中文版:FTP—>设置—>选项—>防火墙,“PASV方式(A)”前复选框中的打勾去掉。
★Cute FTP4.0中文版:右击你所建立的ftp站点—>选择属性(properties)—>去掉"use PASV mod" 选择项
★Cute FTP Pro2.0中文版:编辑—>全局设置—>连接—>连接类型,“PASV/PORT”下拉选项菜单选择PORT。
★Leap FTP2.7.2:Sites—>Site Manager—>Advanced,将“Use PASV mode”前复选框中的打勾去掉。
★flashfxp : 选项->参数->代理->去掉“使用被动模式”
★flashget : 选项->参数->代理服务器->编辑->将“Use PASV mode”前复选框中的打勾去掉。
一般出现此类问题的原因是客户端网络出口与服务器端防火墙的端口设置冲突造成的。 所以对于其他软件只要不选择PASV为连接类型,一般都可以解决这类问题了
四、用户成功登陆却不能正常上传文件
这是目标文件夹权限不够的问题。修改权限为777则好了。
chmod 777 /xxx/xxx/
FTP连接时出现“227 Entering Passive Mode” 的解决方法
今天从公网的服务器连接本地内网的FTP server copy文件时,系统老是提示227 Entering
Passive Mode
(xxx,xxx,,xxx,xxx,x),很是奇怪,于是上网找资料仔细研究了一下,原来FTP有两种工作模式,PORT方式和PASV方式,中文意思
为主动式和被动式 ,详细介绍如下:
主动 FTP :
命令连接:客户端 >1024 端口 → 服务器 21 端口
数据连接:客户端 >1024 端口 ← 服务器 20 端口
被动 FTP :
命令连接:客户端 >1024 端口 → 服务器 21 端口
数据连接:客户端 >1024 端口 ← 服务器 >1024 端口
PORT(主动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据
时,
客户端在命令链路上用PORT命令告诉服务器:“我打开了***X端口,你过来连接我”。于是服务器从20端口向客户端的***X端口发送连接请求,建立
一条数据链路来传送数据。
PASV(被动)方式的连接过程是:客户端向服务器的FTP端口(默认是21)发送连接请求,服务器接受连接,建立一条命令链路。当需要传送数据
时,
服务器在命令链路上用PASV命令告诉客户端:“我打开了***X端口,你过来连接我”。于是客户端向服务器的***X端口发送连接请求,建立一条数据链
路来传送数据。
由于我的本地FTP服务器在内网,只是从外网映射了两个端口(20,21),所以无法使用PASV方式,解决此问题的办法也很简单,关闭客户端的PASV方式,强制其用PORT方式访问服务器,登录FTP服务器后用passive命令关闭客户端的PASV方式,如下:
ftp> passive
Passive mode off.
ftp> passive (再次运行命令可打开)
Passive mode on.