首页 > 操作系统 > Linux > centos安装及配置 vsftpd
2014
11-07

centos安装及配置 vsftpd

1.查看是否安装vsftp

rpm –qa|grep vsftpd

如果出现:

vsftpd-2.0.5-16.el5_5.1  #说明已经安装 vsftp

如果没有安装,则先安装vsftp

yum -y install vsftpd

2.测试 是否安装成功

(注:ip 改成自己啊,此次登录为匿名登录 user: anonymous 密码为空 如果成功登录会有下面内容 这说明vsftpd安装成功)
安装成功后需要开启vsftp服务

[root@localhost ~]#service vsftpd start

为 vsftpd 启动 vsftpd:[确定]


[root@localhost ~]#ftp 192.168.1.107

Connected to192.168.1.107.

220 (vsFTPd 2.0.5)

530 Please loginwith USER and PASS.

530 Please loginwith USER and PASS.

KERBEROS_V4 rejectedas an authentication type

Name(192.168.1.107:root): anonymous

331 Please specifythe password.

Password:

230 Loginsuccessful.

Remote system typeis UNIX.

Using binary mode totransfer files.

ftp> bye

221 Goodbye.

[root@localhost ~]#

 

3.修改配置文件 /etc/vsftpd/vsftpd.conf

[root@localhost ~]#vi /etc/vsftpd/vsftpd.conf

取消下面内容前面的注释或添加

anonymous_enable=NO  #是否允许匿名用户访问 

chroot_list_enable=YES   #限定用户不可以离开主目录

chroot_list_file=/etc/vsftpd/chroot_list 

loca_enable=YES/NO #本地用户是否可以访问 注:如果为NO 则所有虚拟用户都将不能访问原因:虚拟用户访问在主机上其实是以本地用户访问的

pam_service_name=vsftpd  #pam认证文件名 在/etc/pam.d/vsftpd

guest_enable=YES    #启用虚拟用户功能

guest_username=ftp  #指定虚拟用户的宿主用户 –centos 里面已经有内置的ftp用户了(注:此用户在chroot_list_file=/etc/vsftpd/chroot_list文件里所指定的用户)

user_config_dir=/etc/vsftpd/vuser_conf #设置虚拟用户个人vsftp的服务配置文件
#allow_writeable_chroot=YES
pasv_min_port=10060
pasv_max_port=10090
accept_timeout=5
connect_timeout=1

(注:此文件后面不能出现空格)

4.查看是否安装 db4 db4-utils

[root@localhost ~]#rpm -qa|grep db4  #运行后出现下面内容 说明已经安装可以使用db_load命令(主要是 db4-utils)

db4-devel-4.3.29-10.el5_5.2

db4-4.3.29-10.el5_5.2

db4-devel-4.3.29-10.el5_5.2

db4-4.3.29-10.el5_5.2

db4-tcl-4.3.29-10.el5_5.2

db4-utils-4.3.29-10.el5_5.2

[root@localhost ~]#

如果没安装则要安装db4-utils

4.1安装db4-utils

[root@localhost ~]#yum -y install db4-utils

5. 创建 chroot_list_file=/etc/vsftpd/chroot_list文件

[root@localhost ~]#vi /etc/vsftpd/chroot_list #(编辑文件把 /etc/vsftpd/vsftpd.conf 中guest_username的值写到文件中本例中为 ftp)

或者直接按下面进行操作

[root@localhost ~]#touch /etc/vsftpd/chroot_list

[root@localhost ~]# echoftp >> /etc/vsftpd/chroot_list  #(此处ftp 也要是/etc/vsftpd/vsftpd.conf中的guest_username的值)

6.创建虚拟用户目录(密码文本)

[root@localhost ~]#vi /etc/vsftpd/vftpuser.txtx  #(奇数行为用户名 ,偶数行为密码)

本文中添加如下(用cat 命令查看)

[root@localhost ~]#cat /etc/vsftpd/vftpuser.txtx

ftpuser1

ftppassword1

ftpuser2

ftppassword2

[root@localhost ~]#

7.生成虚拟用户的db文件

[root@localhost ~]#db_load -T -t hash -f /etc/vsftpd/vftpuser.txtx /etc/vsftpd/vftpuser.db

8.生成虚拟用户的认证文件

[root@localhostvsftpd]# vi /etc/pam.d/vsftpd

#%PAM-1.0

session    optional    pam_keyinit.so    force revoke

auth       required     pam_listfile.so item=user sense=denyfile=/etc/vsftpd/ftpusers onerr=succeed

auth       required     pam_shells.so

auth       include      system-auth

account    include     system-auth

session    include     system-auth

session    required    pam_loginuid.so

注释掉/etc/pam.d/vsftpd中所有的内容 反正已经不要本地用户的认证了

#特别注意 以下区别
32位系统增加以下两句:
auth      required     pam_userdb.so db=/etc/vsftpd/vftpuser
account   required     pam_userdb.so db=/etc/vsftpd/vftpuser
64位系统增加以下两句:
auth   required    /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required    /lib64/security/pam_userdb.so db=/etc/vsftpd/vftpuser

注:db=/etc/vsftpd/vftpuser 中的vftpuser 是你生成的虚拟用户的db文件

9.创建每个虚拟用户自己的配置文件,配置文件的路径是/etc/vsftpd/vsftpd.conf中的

user_config_dir=/etc/vsftpd/vuser_conf路径

在 /etc/vsftpd/vuser_conf/下面创建以用户名为名称的文件(名称是/etc/vsftpd/vftpuser.txtx 下面的奇数行)

[root@localhostvsftpd]# cat /etc/vsftpd/vftpuser.txtx

ftpuser1

ftppassword1

ftpuser2

ftppassword2

[root@localhost ~]#

[root@localhostvsftpd]# mkdir vuser_conf

[root@localhostvsftpd]# vi /etc/vsftpd/vuser_conf/ftpuser1

内容如下

local_root=/var/www(虚拟用户的根目录根据实际修改)
write_enable=YES (可写)
download_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=022 #缺省权限

#注 如果使用vsftp的是本地用户
则要修改配置文件中的 local_umask 的值
如果使用vsftp的是虚拟用户
则要修改配置文件中的 anon_umask 的值

10.给文夹权限(否则不能上传 权限可自定 本人给的是 777)

[root@localhostvsftpd]# chmod 777 /var/www/

11.重启vsftpd

[root@localhostvsftpd]# service vsftpd restart

12.配置防火墙

增加:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 10060:10090 -j ACCEPT

到此安装配置完成 如果出现连接被 同位体重置 或其它错误 请查看SELinux的当前模式

13.登录测试

[root@localhost vsftpd]# ftp192.168.1.107

Connected to 192.168.1.107.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as anauthentication type

Name (192.168.1.107:root): zz

331 Please specify the password.

Password:

500 OOPS: cannot changedirectory:/var/www

Login failed.

ftp>

查看方法

[root@localhost vsftpd]# getenforce

Enforcing   #如果出现(Enforcing )

关闭方法:

[root@localhost vsftpd]#setenforce 0       #(0|1  开|关)

或者设置Selinux

setsebool -P ftp_home_dir=1   //设置ftp可以使用home目录 
setsebool -P allow_ftpd_full_access=1   //设置ftp用户可以有所有权限

再次测试 登录成功

[root@localhost vsftpd]# chmod 777/var/www/

[root@localhost vsftpd]# ftp192.168.1.107

Connected to 192.168.1.107.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as anauthentication type

Name (192.168.1.107:root): zz

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp>

查看系统是多少位的命令

[root@bogon ~]# getconf LONG_BIT

64 (64|32)

vsftpd启动后,默认的ftp端口是21,现在我想把ftp端口改成 801 ,修改后能保证
用户上传下载不受影响

1.编辑 /etc/vsftpd/vsftpd.conf 文件,在该配置文件中添加此行:listen_port=801
2.编辑 /etc/services 文件,将其中的 ftp 21/tcp 改为 ftp 801/tcp , ftp
21/udp
改为 ftp 801/udp
3.执行 /etc/init.d/vsftpd restart 重新启动 vsftpd 服务。启动完成后可以使
用 netstat -ntpl | grep vsftpd 命令可以查看到系统现
监听的 vsftpd 的端口为 801
4.使用 lftp 192.168.0.1:801(192.168.0.1 是 vsftpd 服务器的地址 ),这样既
可以访问到 ftp 服务器了

最后编辑日期:
作者:uuling
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。