vsftp因为公司时不时要用,也不是经常弄ftp,不常用就老是忘记有些东西,所以就在网上查些资料和自己遇到的一些问题结合起来写一个文档,以后需要使用ftp的时候搭建比较方便,使用虚拟用户不用担心用户登录服务器,你想让他在那个目录呆着就在那,而且修改权限方便,每个用户需要什么权限可以不同的修改,可以满足多方面的需要,所以推荐使用虚拟用户。第一次写博文,如有错误请指教!

1、查看安装包

[root@localhost ~]# rpm -qa | grep vsftpd

vsftpd-2.0.5-24.el5_8.1

 

[root@localhost~ ]# rpm -qa | grep db

db4-devel-4.3.29-10.el5_5.2

gdbm-1.8.0-26.2.1.el5_6.1

dbus-glib-0.73-10.el5_5

db4-java-4.3.29-10.el5_5.2

gdbm-1.8.0-26.2.1.el5_6.1

dbus-devel-1.1.2-16.el5_7

dbus-glib-0.73-10.el5_5

dbus-devel-1.1.2-16.el5_7

gdb-7.0.1-42.el5.centos.1

db4-devel-4.3.29-10.el5_5.2

dbus-libs-1.1.2-16.el5_7

dbus-glib-devel-0.73-10.el5_5

db4-tcl-4.3.29-10.el5_5.2

gdbm-devel-1.8.0-26.2.1.el5_6.1

dbus-python-0.70-9.el5_4

dbus-libs-1.1.2-16.el5_7

db4-4.3.29-10.el5_5.2

db4-4.3.29-10.el5_5.2

db4-utils-4.3.29-10.el5_5.2

gdbm-devel-1.8.0-26.2.1.el5_6.1

dbus-1.1.2-16.el5_7

dbus-x11-1.1.2-16.el5_7

 

如果没请安装yum install vsftpd

            yum install db

 

2、建立虚拟用户

[root@localhost ~]# cd /etc/vsftpd/

[root@localhost vsftpd]# touch login.txt

[root@localhost vsftpd]# vi login.txt

创建账户密码

test     账户

123456  密码

vsftpd   账户

123456  密码

 

3、生成虚拟用户口令验证文件

把刚添加的login.txtt虚拟用户口令转换成系统的口令认证文件

[root@localhost vsftpd]# db_load -T -t hash-f /etc/vsftpd/login.txt /etc/vsftpd/account.db

找不到db_load

yum install db4*

修改数据库文件权限

[root@localhost vsftpd]# chmod 600account.db

 

4、编辑PAM认证

[root@localhost vsftpd]# cd /etc/pam.d/

[root@localhost pam.d]# touch vsftpd.vu

[root@localhost pam.d]# vi vsftpd.vu

加入如下两行:(32位系统在lib下64位系统用lib64下

 

auth    required /lib64/security/pam_userdb.so db=/etc/vsftpd/account

account required /lib64/security/pam_userdb.so db=/etc/vsftpd/account

 

5、建立本地映射用户并设置宿主

[root@localhost home]# useradd -d/home/ftpsite -s /sbin/nologin vsftp

[root@localhost home]# chmod 700/home/ftpsite/

 

6、修改主配置文件vsftpd.conf

[root@localhost vsftpd]# vi vsftpd.conf

anonymous_enable=NO 禁止匿名访问

local_enable=YES

write_enable=YES

local_umask=022  本地用户权限设置,022为755权限(777-022)

dirmessage_enable=YES

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

listen_port=21

pam_service_name=vsftpd.vu  pam验证

userlist_enable=YES

tcp_wrappers=YES

guest_enable=YES   YES为开启虚拟用户

guest_username=vsftp  将虚拟用户映射为本地用户vsftp

user_config_dir=/etc/vsftpd/vsftpd_user_conf     虚拟用户配置文件位置

 

virtual_use_local_privs=NO  虚拟用户权限与本地用户权限修改 YES为与本地用户相同

pasv_min_port=50000

pasv_max_port=60000

pasv_enable=yes

max_clients=200

max_per_ip=10

idle_session_timeout=600

ftpd_banner=Welcome to  FTP service

 

7、创建各个虚拟用户自身的配置文件

[root@localhost vsftpd]# mkdir vsftpd_user_conf

创建与用户名相同配置文件并写入相应配置

[root@localhost vsftpd_user_conf]# touch test vsftpd

 

[root@localhost vsftpd_user_conf]# vi test

 

local_root=/home/ftpsite/test/ 虚拟用户家目录

 

write_enable=YES

anon_umask=000 虚拟用户权限设置(777-000),默认目录为777,文件为666

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

anon_world_readable_only=NO

并创建虚拟用户家目录 mkdir /home/ftpsite/test

[root@localhost vsftpd_user_conf]# vivsftpd

 

local_root=/home/ftpsite/vsftpd/

 

write_enable=YES

anon_umask=022  虚拟用户权限设置(777-022),默认目录为755,文件为644

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

anon_world_readable_only=NO

创建虚拟用户家目录 mkdir /home/ftpsite/vsftpd

 

 

8、重启服务测试连接

service vsftpd restart

 

注:用户权限

如果使用vsftp的是本地用户

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

如果配置的umask值为000,则默认目录权限为777,默认文件权限为666

如果配置的umask值为047,则默认目录权限为730,默认文件权限为620