Linux下安装vsftpd(http://os.51cto.com/art/201008/222036.htm)
1.安装vsftpd及相关依赖包
#vsftpd安装程序
yum install vsftpd
#vsftpd虚拟登陆账户必要依赖包
yum install pam* db4*
安装完之后,vsftpd默认在/etc/vsftpd目录下
2.建立用户列表
#vi /etc/vsftpd/login.txt
qqtest #用户名
qqtest #密码
3.生成pam校验数据库文件(login.txt有修改后都要重新导出一份)
#db_load -T -t hash -f login.txt /etc/vsftpd/vsftpd_login.db
4.创建ftp用户配制文件目录
#mkdir /etc/vsftpd/user_conf
5.配置用户具体操作权限,文件和用户名同名
#vi /etc/vsftpd/user_conf/qqtest
local_root=/home/vsftpd/qqtest #文件访问路径
write_enable=YES #写权限
anon_mkdir_write_enable=YES #新建目录权限
anon_upload_enable=YES #上传权限
anon_other_write_enable=YES #删除/重命名的权限
6.新建/etc/pam.d/vsftpd.v,配置vsftp认证方式
#vi /etc/pam.d/vsftpd.v
auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required pam_userdb.so db=/etc/vsftpd/vsftpd_login
7.创建新用户(不允许登录,通过ftp可以连接)
#useradd -d /home/vsftpd -s /sbin/nologin vsftpd
8.编辑文件 /etc/vsftpd/vsftpd.conf
chroot_local_user=YES #将所有用户锁定在主目录
guest_enable=YES #启用虚拟用户
guest_username=vsftpd #将虚拟用户映射为本地vsftpd用户,步骤7中创建
user_config_dir=/etc/vsftpd/user_conf #指定不同虚拟用户配置文件的存放路径 ,步骤4,5中创建
pam_service_name=/etc/pam.d/vsftpd.v #指定PAM配置文件,步骤6中创建
vsftpd_log_file=/var/log/vsftpd.log #配置文件操作日志路径
9.最后启动vsftpd
service vsftpd start 启动
service vsftpd stop 关闭
service vsftpd restart 重新启动
/etc/init.d/vsftpd restart 重新启动
10.连接ftp
浏览器访问 ftp://ip地址/
命令行访问 ftp ip地址 (退出使用 quit或bye)
如果文件上传下载有问题
1.rpm -q vsftpd 查看vsftp安装是否正确
2. 关于ftp用户连接时出现500 cannot change directory:报错
# getsebool -a | grep ftp (查看SELinux设置)
发现 ftpd_disable_trans –> off 或者 ftp_home_dir–>off
使用setsebool命令开启
# setsebool -P ftpd_disable_trans 1 或者 #setsebool -P ftp_home_dir 1
查看当前状态是否是on的状态
# getsebool -a|grep ftp
此时 ftpd_disable_trans –> on 或者 ftp_home_dir–>on
最后重启 service vsftpd restart
3.可登录,可下载,不可上传 报错 553 Could not create file.
setsebool -P allow_ftpd_full_access 1
4.查看黑名单
/etc/ftpusers文件中列出的用户是禁止使用FTP登录的,如果要使这些用户通过FTP登录,需要将其注销,即在用户名前面添加#。
5.可能是linux 防火墙的原因
停止防火墙:service iptables stop
开启防火墙:service iptables start
6.出错了,能登陆,但是下载不了文件。
看下服务器连接:
tcp 0 0 124.121.222.111:21 118.26.245.134:57903 ESTABLISHED 9624/vsftpd
tcp 0 1 124.121.222.111:20 118.26.245.134:39180 SYN_SENT 9628/vsftpd
被动模式下本机会开放一个随机端口,告诉服务器你过来连我39180端口传输数据吧,但是服务器的20端口是不在防火墙策略里的,所以是SYN_SENT 的状态。
解决办法:添加个端口20的允许策略:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 20 -j ACCEPT
service iptables restart
或者改为主动模式/etc/vsftpd/vsftpd.conf
#主动式连接使用的数据通道
connect_from_port_20=YES
7.新加用户,在login.txt添加即可