环境:centos 5.9 32位
1.使用yum命令直接安装:yum -y install vsftpd
然后为它创建日志文件:touch /var/log/vsftpd.log
2.启动与配置自启动
使用chkconfig --list来查看vsftpd服务启动项情况;
如果看到的是如下显示的结果:
vsftpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
服务全部都是off的,注意这里的off表示的是服务器启动的时候是否会自启动服务,我们使用如下命令来配置其自启动:
chkconfig--level 2345 vsftpd on #2345对应的是上面对应的0-6项
查看与管理ftp服务:
启动ftp服务:service vsftpd start
查看ftp服务状态:service vsftpd status
重启ftp服务:service vsftpd restart
关闭ftp服务:service vsftpd stop
3.db_4数据库维护工具安装
#rpm –qa | grep db4
db4-devel-4.2.52-7.1
db4-4.2.52-7.1
db4-utils-4.2.52-7.1
db_load命令存在则不用再装了,继续下一步
否则
yuminstall db4 db4-utils 或者 yum install db4*(*表示安装所有含db4字符的安装包)
4.建立一个系统虚拟用户
useradd-d /home/vsftpd -s /sbin/nologin vsftpd
sudochmod go+w /home/vsftpd -R
chmodgo+wr /home/vsftpd –R (不然配置项不起作用,不能上传、写目录等)
5.建立认证数据库文件并设置文件属性
进行认证:
创建用户密码文本/etc/vsftpd/vuser_passwd.txt,注意奇行是用户名,偶行是密码
test
123456
接着,生成虚拟用户认证的db文件
db_load-T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
编辑认证文件/etc/pam.d/vsftpd
注释掉/etc/pam.d/vsftpd中所有的内容,加入如下内容:
特别注意 以下区别
32位系统增加以下两句:(备注:required和sufficient似乎都可以)
authsufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
accountsufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
64位系统增加以下两句:(收集与网络,未认证)
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
accountrequired /lib64/security/pam_userdb.sodb=/etc/vsftpd/vuser_passwd
6./etc/vsftpd/vsftpd.conf配置(主文件配置,可将原来的文件内容删除,将以下内容加入)
anonymous_enable=NO
local_enable=YES
user_config_dir=/etc/vsftpd/user_conf(重要,调取etc/vsftpd/user_conf下文件,路径写对)
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd(vsftpd用户名,与第4歩创建的文件)
listen=YES
listen_port=21 (默认21,改为其他端口后,远程无法获取文件目录)
pasv_min_port=30000
pasv_max_port=30999
dirmessage_enable=YES
pam_service_name=vsftpd
7.创建虚拟用户个性服务文件
/etc/vsftpd/user_conf/test
将以下内容加入test
local_root=/opt (注意权限)
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES(我这里如果是NO,则无法上传)
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000
8.servicevsftpd restart
注意:红色部分要一样
遇到的一些错误
530错误
我这里是配置文件错误导致的
550Permission denied
网上找了N多答案,主要有,设置selinux,目录权限是否正确,可我这里还是不行,后来我将虚拟用户配置文件
anon_upload_enable= YES,问题解决,原来虚拟用户上传,需要匿名上传权限
selinux的设置
我的selinux关于ftp的设置
allow_ftpd_anon_write --> on
allow_ftpd_full_access--> on
allow_ftpd_use_cifs--> on
allow_ftpd_use_nfs--> on
allow_tftp_anon_write--> on
ftp_home_dir--> on
ftpd_connect_db--> on
ftpd_disable_trans--> on
ftpd_is_daemon--> on
httpd_enable_ftp_server--> on
tftpd_disable_trans--> on
设置selinux方法:
一种方法:
#setsebool-Pftpd_disable_trans 1
重启vsftpd服务
另一种方法
关掉selinux
vim/etc/sysconfig/selinux
selinux=disable
然后重启即可。
查看SELinux设置
# getsebool -a|grep ftp
ftpd_disable_trans --> off
或者
ftp_home_dir-->off
解决方法:
//使用setsebool命令开启
# setsebool ftpd_disable_trans 1
或者
# setsebool ftp_home_dir 1
再次查看当前状态是否是on的状态
# getsebool -a|grep ftp
ftpd_disable_trans --> on
或者
ftp_home_dir-->on
/setsebool使用-P参数,无需每次开机都输入这个命令
# setsebool -P ftpd_disable_trans 1
或者
# setsebool -P ftp_home_dir 1
# service vsftpd restart
本文出自 “未来时空” 博客,请务必保留此出处http://sjitwant.blog.51cto.com/3661219/1409746
原文:http://sjitwant.blog.51cto.com/3661219/1409746