首页 > 代码库 > Vsftp安装及配置虚拟用户

Vsftp安装及配置虚拟用户

Vsftp安装及配置虚拟用户

 

 

一、安装

采用yum安装

[root@VM_64_122_centos vsftpd]# yum installvsftpd

安装完成以后vsftpd的默认配置文件在/etc/vsftpd


二、建立虚拟用户的过程

1,创建虚拟用户文本文件,添加虚拟用户和密码

[root@VM_64_122_centos vsftpd]# vivuser.txt

 

奇数行是用户名,偶数是密码。


比如:

admin
123!@#
yunying
yunying
sheji
sheji
chanpin
chanpin

 

2,生成虚拟数据库文件

db_load默认没有安装,yum installdb4-utils db4-devel db4安装才能使用。

[root@VM_64_122_centos vsftpd]# yum installdb4-utils db4-devel db4

 执行以下命令生成虚拟数据库文件

[root@VM_64_122_centos vsftpd]# db_load -T-t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db

 

 

3,配置PAM文件,目的是对客户端进行验证。批注所有内容,后添加:

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

 

auth required   pam_userdb.so        db=/etc/vsftpd/vuser
account    required   pam_userdb.so        db=/etc/vsftpd/vuser

注意:不能写成db=/etc/vsftpd/vuser.db


 

4,修改虚拟数据库文件vuser.db的权限为 700

 

[root@VM_64_122_centos vsftpd]# chmod 700vuser.db

5,增加一个系统用户vuser ,使用它来对应所有虚拟用户,虚拟用户使用系统用户来访问ftp服务器。

 

useradd vuser
mkdir /var/ftp/vuser
chown vuser.vuser  /var/ftp/vuser

 

6,修改vsftpd.conf配置文件,使虚拟用户可以访问vsftpd服务器,增加以下参数

 

pam_service_name=vsftpd                 ####使用PAM验证
guest_enable=YES                    ####启用虚拟用户                    ####激活虚拟账户
guest_username=vuser                  ####把虚拟账户绑定为系统账户vuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf      ####虚拟用户配置文件目录


三、控制虚拟用户的访问

1,建立vsftpd_user_conf配置文件目录

mkdir /etc/vsftpd/vsftpd_user_conf

 

2,设置虚拟用户配置文件,与虚拟账户同名。

[root@VM_64_122_centos vsftpd]# vi/etc/vsftpd/vsftpd_user_conf/admin

 

3,编辑虚拟账户admin的配置文件admin,设置相应的权限。添加以下内容

     anon_world_readable_only=NO             ###浏览FTP目录和下载
     anon_upload_enable=YES                ###允许上传
     anon_mkdir_write_enable=YES             ###允许建立和删除目录
     anon_other_write_enable=YES             ###允许改名和删除文件
     local_root=/var/ftp/vuser              ###指定虚拟用户在系统用户下面的路径,限制虚拟用户的家目录,虚拟用户登录后的主目录。


4,重新启动ftp服务

[root@VM_64_122_centos vsftpd]# servicevsftpd restart


四、修改SELinux设置

SELinux 全称 SecurityEnhanced Linux (安全强化 Linux),是 MAC (Mandatory Access Control,强制访问控制系统)的一个实现,目的在于明确的指明某个进程可以访问哪些资源(文件、网络端口等)

SElinux就是指明进程能访问那些资源,如果其访问了非指明的资源,SElinux就会阻止他,并告诉这个程序,你没有权限,不能让你访问。

所以需要修改SELinux的权限访问设置,不然连接ftp会出现一些异常报错。比如:

500 OOPS: cannot change directory:/home/*******

553 could not create file

 

查看ftp相关选项

sestatus-b | grep ftpd


下面是常用的布尔变量:

allow_ftpd_anon_write:关闭这个布尔变量会阻止 vsftpd 读取 public_content_rw_t 类型的文件和目录。如果允许用户通过 FTP 上传文件。必须开放这个布尔变量。

allow_ftpd_full_access:当开放这个布尔变量时只有LinuxDAC)的权限来控制访问,通过验证的用户可以读取和写入标记为 public_content_t public_content_rw_t 类型的文件。

allow_ftpd_use_cif:当开放这个布尔变量时vsftpd 允许 cifs_t 类型的文件和目录,因此这个布尔变量启用,可以让你的 FTP 服务器可以使用 Samba 文件系统。

allow_ftpd_use_nfsvsftpd:的当开放这个布尔变量时 vsftpd 允许 nfs_t 类型的文件和目录,因此这个布尔变量启用,可以让你的 FTP 服务器可以使用 NFS 文件系统。

ftp_home_dir:当开放这个布尔变量时认证用户可以读写自己的主目录中的文件。

ftpd_connect_db:当开放这个布尔变量时允许vsftpd 连接数据库。

httpd_enable_ftp_server:当开放这个布尔变量时容许的 httpd 作为 FTP 服务器,并且监听 FTP 端口。

tftp_anon_write:当开放这个布尔变量时允许TFTP 访问一个公共的目录

 

 

   启用以下选项:

   setsebool-P ftp_home_dir 1
   setsebool-P allow_ftpd_full_access 1


Vsftp安装及配置虚拟用户