安装:
可以到官方网站去下载
http://vsftpd.beasts.org
也可以用光盘安装,RedHat 5的安盘里自带的,所以我选择光盘安装
(1)先把光盘挂载到系统上:
mount /dev/cdrom /mnt
这样光盘的内容就被挂载到/mnt的设备上,现在可以通过/mnt访问光盘上的内容了
(2)在光盘上安装vsftp,并且启动vsftp
rpm -ivh vsftpd*
(3)修改启动方式,改为系统启动时,自动启动
chkconfig vsftpd on
也可以查看启动方式
chkconfig --list |grep vsftpd
只要在第2--5为on就能随机启动
(4)启动ftp
service vsftpd start
(5)连接测试
vsftp默认安装目录是:/etc/vsftpd
默认有一个ftp目录:var/ftp
vsftp默认是用允许匿名用户【anonymous】登陆,允许下载,但是不允许上传
如果连不上,可能是linux 防火墙的原因
停止防火墙:service iptables stop
开启防火墙:service iptables start
1) 文件结构
配置文件名
功能
/usr/sbin/vsftpd
vsftpd的主程序
/etc/rc.d/init.d/vsftpd
启动脚本
/etc/vsftpd/vsftpd.conf
主配置文件
/etc/pam.d/vsftpd
PAM认证文件
/etc/vsftpd.ftpusers
禁止使用vsftpd的用户列表文件
/etc/vsftpd.user_list
禁止或允许使用vsftpd的用户列表文件
/var/ftp
匿名用户主目录
/var/ftp/pub
匿名用户的下载目录
/etc/logrotate.d/vsftpd.log
vsftpd的日志文件
2) 配置文件
/etc/vsftpd/vsftpd.conf
Ø 参数含义
参数
含义
anonymous_enable=YES 是否允许使用匿名账户
local_enable=YES 是否允许本地用户登录
write_enable=YES 是否允许写入
local_umask=022 本地umask值为022
#anon_upload_enable=YES 匿名用户是否可上传文件
#anon_mkdir_write_enable=YES 匿名用户是否可建立目录
dirmessage_enable=YES 进入每个目录显示欢迎信息,在每个目录下建立.message文件在里面写欢迎信息
xferlog_enable=YES 上传/下载文件时记录日志
connect_from_port_20=YES 是否使用20端口传输数据(是否使用主动模式)
#chown_uploads=YES 修改匿名用户上传的文件,文件的拥有者
#chown_username=whoever
#xferlog_file=/var/log/xferlog 日志文件
xferlog_std_format=YES 使用标准文件日志
#idle_session_timeout=600 会话超时,客户端连接到ftp但未操作
#data_connection_timeout=120 数据传输超时
#nopriv_user=ftpsecure 指定vsftpd服务的运行帐户,不指定时使用ftp
#async_abor_enable=YES 是否允许客户端使用sync等命令
#ascii_upload_enable=YES 是否允许上传/下载二进制文件
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service. 登录提示语
#deny_email_enable=YES 拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户。即,当匿名用户使用banned_email_file文件中所列出的e-mail进行登录时,被拒绝。
#banned_email_file=/etc/vsftpd/banned_emails
#chroot_list_enable=YES 锁定登陆用户在其主目录,将用户名一个一行写在/etc/vsftpd/chroot_list文件里,使用此方法时必须chroot_local_user=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=YES 是否允许使用ls -R等命令
listen=YES 开启ipv4监听
#listen_ipv6=YES 开启ipv6监听
pam_service_name=vsftpd 使用pam模块控制,vsftpd文件在/etc/pam.d目录下
userlist_enable=YES 与其他中userlist_deny=YES共同控制访问用户,详见userlist_deny=YES参数含义
tcp_wrappers=YES 是否允许tcp_wrappers管理
其他
listen_address=ip address 指定侦听IP
listen_port=port_value 指定侦听端口,默认21
chroot_local_user=YES 限制所有的本地用户在自家目录
userlist_deny=YES 决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable选项启动后才生效。YES为默认值,禁止文件中的用户登录,同时也不向这些用户发出输入密码的提示。NO表示只允许在文件中的用户登录FTP服务器
local_root=/home/ftp 所有用户的根目录,对匿名用户无效
anon_max_rate=value 匿名用户的最大传输速度,单位是Byts/s
local_max_rate=value 本地用户的最大传输速度,单位是Byts/s
download_enable=YES 是否允许下载
连接信息
代码 含义 代码 含义
110 重新启动标记应答 120 服务在多久时间内ready
125 数据链路埠开启,准备传送 150 文件状态正常,开启数据连接端口
200 命令执行成功 202 命令执行失败
211 系统状态或是系统求助响应 212 目录的状态
213 文件的状态 214 求助的信息
215 名称系统类型 220 新的联机服务ready
221 服务的控制连接埠关闭,可以注销 225 数据连结开启,但无传输动作
226 关闭数据连接端口,请求的文件操作成功 227 进入passive mode
230 使用者登录 250 请求的文件操作完成
257 显示目前的路径名称 331 用户名称正确,需要密码
332 登入时需要账号信息 350 请求的操作需要进一部的命令
421 无法提供服务,关闭控制连结 425 无法开启数据链路
426 关闭联机,终止传输 450 请求的操作未执行
451 命令终止:有本地的错误 452 未执行命令:磁盘空间不足
500 格式错误,无法识别命令 501 参数语法错误
502 命令执行失败 503 命令顺序错误
504 命令所接的参数不正确 530 未登录
532 储存文件需要账户登录 550 未执行请求的操作
551 请求的命令终止,类型未知 552 请求的文件终止,储存位溢出
553 未执行请求的的命令,名称不正确
关于ftp用户连接时出现500 OOPS: cannot change directory:/root报错
1. 查看SELinux设置
# getsebool -a | grep ftp
发现 ftpd_disable_trans –> off 或者 ftp_home_dir–>off
2. 使用setsebool命令开启
# setsebool ftpd_disable_trans 1 或者 # setsebool ftp_home_dir 1
3. 查看当前状态是否是on的状态
# getsebool -a|grep ftp
此时 ftpd_disable_trans –> on 或者 ftp_home_dir–>on
4. 最后重启 # service vsftpd restart
另外 setsebool 使用-P参数,无需每次开机都输入这个命令
# setsebool -P ftpd_disable_trans 1
或者
# setsebool -P ftp_home_dir 1
黑名单
/etc/ftpusers文件中列出的用户是禁止使用FTP登录的,如果要使这些用户通过FTP登录,需要将其注销,即在用户名前面添加#。
可登录,可下载,不可上传 报错 553 Could not create file.
setsebool -P allow_ftpd_full_access 1
可以到官方网站去下载
http://vsftpd.beasts.org
也可以用光盘安装,RedHat 5的安盘里自带的,所以我选择光盘安装
(1)先把光盘挂载到系统上:
mount /dev/cdrom /mnt
这样光盘的内容就被挂载到/mnt的设备上,现在可以通过/mnt访问光盘上的内容了
(2)在光盘上安装vsftp,并且启动vsftp
rpm -ivh vsftpd*
(3)修改启动方式,改为系统启动时,自动启动
chkconfig vsftpd on
也可以查看启动方式
chkconfig --list |grep vsftpd
只要在第2--5为on就能随机启动
(4)启动ftp
service vsftpd start
(5)连接测试
vsftp默认安装目录是:/etc/vsftpd
默认有一个ftp目录:var/ftp
vsftp默认是用允许匿名用户【anonymous】登陆,允许下载,但是不允许上传
如果连不上,可能是linux 防火墙的原因
停止防火墙:service iptables stop
开启防火墙:service iptables start
1) 文件结构
配置文件名
功能
/usr/sbin/vsftpd
vsftpd的主程序
/etc/rc.d/init.d/vsftpd
启动脚本
/etc/vsftpd/vsftpd.conf
主配置文件
/etc/pam.d/vsftpd
PAM认证文件
/etc/vsftpd.ftpusers
禁止使用vsftpd的用户列表文件
/etc/vsftpd.user_list
禁止或允许使用vsftpd的用户列表文件
/var/ftp
匿名用户主目录
/var/ftp/pub
匿名用户的下载目录
/etc/logrotate.d/vsftpd.log
vsftpd的日志文件
2) 配置文件
/etc/vsftpd/vsftpd.conf
Ø 参数含义
参数
含义
anonymous_enable=YES 是否允许使用匿名账户
local_enable=YES 是否允许本地用户登录
write_enable=YES 是否允许写入
local_umask=022 本地umask值为022
#anon_upload_enable=YES 匿名用户是否可上传文件
#anon_mkdir_write_enable=YES 匿名用户是否可建立目录
dirmessage_enable=YES 进入每个目录显示欢迎信息,在每个目录下建立.message文件在里面写欢迎信息
xferlog_enable=YES 上传/下载文件时记录日志
connect_from_port_20=YES 是否使用20端口传输数据(是否使用主动模式)
#chown_uploads=YES 修改匿名用户上传的文件,文件的拥有者
#chown_username=whoever
#xferlog_file=/var/log/xferlog 日志文件
xferlog_std_format=YES 使用标准文件日志
#idle_session_timeout=600 会话超时,客户端连接到ftp但未操作
#data_connection_timeout=120 数据传输超时
#nopriv_user=ftpsecure 指定vsftpd服务的运行帐户,不指定时使用ftp
#async_abor_enable=YES 是否允许客户端使用sync等命令
#ascii_upload_enable=YES 是否允许上传/下载二进制文件
#ascii_download_enable=YES
#ftpd_banner=Welcome to blah FTP service. 登录提示语
#deny_email_enable=YES 拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户。即,当匿名用户使用banned_email_file文件中所列出的e-mail进行登录时,被拒绝。
#banned_email_file=/etc/vsftpd/banned_emails
#chroot_list_enable=YES 锁定登陆用户在其主目录,将用户名一个一行写在/etc/vsftpd/chroot_list文件里,使用此方法时必须chroot_local_user=YES
#chroot_list_file=/etc/vsftpd/chroot_list
#ls_recurse_enable=YES 是否允许使用ls -R等命令
listen=YES 开启ipv4监听
#listen_ipv6=YES 开启ipv6监听
pam_service_name=vsftpd 使用pam模块控制,vsftpd文件在/etc/pam.d目录下
userlist_enable=YES 与其他中userlist_deny=YES共同控制访问用户,详见userlist_deny=YES参数含义
tcp_wrappers=YES 是否允许tcp_wrappers管理
其他
listen_address=ip address 指定侦听IP
listen_port=port_value 指定侦听端口,默认21
chroot_local_user=YES 限制所有的本地用户在自家目录
userlist_deny=YES 决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。此选项在userlist_enable选项启动后才生效。YES为默认值,禁止文件中的用户登录,同时也不向这些用户发出输入密码的提示。NO表示只允许在文件中的用户登录FTP服务器
local_root=/home/ftp 所有用户的根目录,对匿名用户无效
anon_max_rate=value 匿名用户的最大传输速度,单位是Byts/s
local_max_rate=value 本地用户的最大传输速度,单位是Byts/s
download_enable=YES 是否允许下载
连接信息
代码 含义 代码 含义
110 重新启动标记应答 120 服务在多久时间内ready
125 数据链路埠开启,准备传送 150 文件状态正常,开启数据连接端口
200 命令执行成功 202 命令执行失败
211 系统状态或是系统求助响应 212 目录的状态
213 文件的状态 214 求助的信息
215 名称系统类型 220 新的联机服务ready
221 服务的控制连接埠关闭,可以注销 225 数据连结开启,但无传输动作
226 关闭数据连接端口,请求的文件操作成功 227 进入passive mode
230 使用者登录 250 请求的文件操作完成
257 显示目前的路径名称 331 用户名称正确,需要密码
332 登入时需要账号信息 350 请求的操作需要进一部的命令
421 无法提供服务,关闭控制连结 425 无法开启数据链路
426 关闭联机,终止传输 450 请求的操作未执行
451 命令终止:有本地的错误 452 未执行命令:磁盘空间不足
500 格式错误,无法识别命令 501 参数语法错误
502 命令执行失败 503 命令顺序错误
504 命令所接的参数不正确 530 未登录
532 储存文件需要账户登录 550 未执行请求的操作
551 请求的命令终止,类型未知 552 请求的文件终止,储存位溢出
553 未执行请求的的命令,名称不正确
关于ftp用户连接时出现500 OOPS: cannot change directory:/root报错
1. 查看SELinux设置
# getsebool -a | grep ftp
发现 ftpd_disable_trans –> off 或者 ftp_home_dir–>off
2. 使用setsebool命令开启
# setsebool ftpd_disable_trans 1 或者 # setsebool ftp_home_dir 1
3. 查看当前状态是否是on的状态
# getsebool -a|grep ftp
此时 ftpd_disable_trans –> on 或者 ftp_home_dir–>on
4. 最后重启 # service vsftpd restart
另外 setsebool 使用-P参数,无需每次开机都输入这个命令
# setsebool -P ftpd_disable_trans 1
或者
# setsebool -P ftp_home_dir 1
黑名单
/etc/ftpusers文件中列出的用户是禁止使用FTP登录的,如果要使这些用户通过FTP登录,需要将其注销,即在用户名前面添加#。
可登录,可下载,不可上传 报错 553 Could not create file.
setsebool -P allow_ftpd_full_access 1