A-A+

CentOS Linux vsftpd安装问题全解

2012年08月24日 主机域名 CentOS Linux vsftpd安装问题全解已关闭评论 阅读 702 人 次

1.查看有没有安装vsftpd:
rpm -qa | grep vsftpd
2.yum安装vsftpd:
yum install vsftpd
touch /var/log/vsftpd.log # 创建vsftp的日志文件
3.rpm安装vsftpd:
可以从下面两个地方获得最新的vsftpd的RPM包https://www.redhat.com/或者http://www.rpmfind.net/
安装命令:
rpm -Uvh vsftpd-1.1.3-8.i386.rpm
4.设置每次开机时自动运行及手工启动它:
chkconfig vsftpd on
service vsftpd start
netstat -tl 可以查看ftp端口是否在侦听了!
5.配置文件

/etc/vsftpd/ftpusers 和 /etc/vsftpd/user_list,#不能登陆FTP的用户;
/etc/vsftpd/vsftpd.conf
#anonymous_enable=YES
anonymous_enable=NO #设定不允许匿名用户访问
chroot_local_user=YES #把系统内所有的FTP用户都限制在家目录中 xferlog_file=/var/log/vsftpd.log 设定vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来
ascii_upload_enable=YES
ascii_download_enable=YES 设定支持ASCII模式的上传和下载功能。
pam_service_name=vsftpd PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证
以下这些是关于Vsftpd虚拟用户支持的重要配置项目。默认vsftpd.conf中不包含这些设定项目,需要自己手动添加配置。
guest_enable=YES 设定启用虚拟用户功能。
guest_username=ftp 指定虚拟用户的宿主用户。-CentOS中已经有内置的ftp用户了
user_config_dir=/etc/vsftpd/vuser_conf 设定虚拟用户个人vsftp的配置文件存放路径。存放虚拟用户个性的配置文件(配置文件名=虚拟用户名)
6.设定个FTP目录
修改 /var/www 目录属性:
$ chmod -R 777 /var/www 递归地给此目录下所有文件和子目录的读、写、执行权限
$ chgrp -R ftp /var/www 递归地把此目录及该目录下所有文件和子目录的组属性设置成ftp组
7.增加FTP用户
adduser -d /var/www -g ftp -s /sbin/nologin 用户名 #增加用户,组是FTP,目录是/var/www
passwd 用户名 #设定密码
Changing password for user beinan.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
8.重启FTP
service vsftpd restart
9.如果ftp服务器连接失败,错误提示:
500 OOPS: cannot change directory:/home/*******
500 OOPS: child died
原因是他的CentOS系统安装了SELinux,因为默认下是没有开启FTP的支持,所以访问时都被阻止了。
//查看SELinux设置
# getsebool -a|grep ftp
ftpd_disable_trans --> off (或者 ftp_home_dir-->off)
解决方法:
//使用setsebool命令开启
当你看到以上提示时,试着在输入以下命令解决
setsebool -P ftpd_disable_trans 1 (或者 setsebool -P ftp_home_dir 1)
service vsftpd restart
第一行中的-P参数是为了以后不需要每次开机都输入这个命令
10.用户管理
userdel 选项 用户名 用于删除用户,常用的选项是-r,它的作用是把用户的主目录一起删除。
passwd 选项 用户名 用于修改口令
passwd -l 用户名 用于锁定口令,即禁用账号。
passwd -u 用户名 用于口令解锁。
passwd -d 用户名 用于使账号无口令。
passwd -f 用户名 用于强迫用户下次登录时修改口令。
如果默认用户名,则修改当前用户的口令。
如果是超级用户,可以用下列形式指定任何用户的口令:
passwd 用户名
passwd -d 用户名 此命令将用户的口令删除,这样用户下一次登录时,系统就不再询问口令
11.是否想修改21端口呢?
先修改防火墙,增加其FTP端口,下面使用921
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 921 -j ACCEPT
/etc/init.d/iptables restart #重启防火墙
/etc/vsftpd/vsftpd.conf 里增加加 listen_port=921
/etc/rc.d/init.d/vsftpd restart #重启vsftpd
netstat -an |grep 921 #查看端口是否正常启动:

12.有时客户端反应很慢,可以使用被动模式

即有的FTP登录软件提示PASV模式失败,可尝试在FTP软件的快速连接的切换选项中将"使用被动模式"选项去除!

添加以下内容
use_localtime=YES
listen_port=25682
pasv_enable=YES
pasv_min_port=25683
pasv_max_port=25686

如果开启了防火墙,需要放行端口25682:25686
客户端使用25682进行连接

注意配置文件中不能有空格

有时会出现上传多文件卡住的现象,可以这样解决:

修改 data_connection_timeout=120为

data_connection_timeout=2

13.允许root登录

FTP只能使用除root用户以外的其他用户登录,请问怎么设置才能使我使用root用户通过FTP登录Linux主机?谢谢了!
1)编辑两个FTP设置文件:vi /etc/vsftpd/ftpusers和vi /etc/vsftpd/user_list,将root那一行删掉或#注释掉;
2)重启vsftpd服务:service vsftpd restart
这样就OK了!

附:防火墙设置
开启端口命令:
#/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT
#/sbin/iptables -I INPUT -p tcp --dport 22 -j ACCEPT #/etc/init.d/iptables status
然后保存设置:
#/etc/rc.d/init.d/iptables save
然后重启防火墙:
#/etc/init.d/iptables restart
查看防火墙信息:
#/etc/init.d/iptables status
关闭防火墙服务:
#/etc/init.d/iptables stop
永久关闭防火墙:
#chkconfig –-level 35 iptables off

标签:

评论已关闭!