文件传输服务FTP   vsftpd+mysql 虚拟用户的应用

    linux中的文件传输应用最典型的是ftp服务,其中最常见的fpt有vsftp,profpt.现在来了解相关内容,本文主要介绍vsftpd的认证与mysql连用。

一 安装软件包

[root@master ~]# yum install vsftpd ftp

二 vsftpd开启本地系统用户配置

1.安装完vsftpd,开启的ftpd服务,是非常不安全的,存在安全隐患。如只开启local_enable选项。local_enable与chroot_list_enable、chroot_list_file连用。如果开启了系统用户访问ftp服务器,请将其固定在家目录中。参考如下

local_enable=YES                                                     chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list                             pam_service_name=vsftpd

 如果单单开户local_enable,会出现如下情况

[root@master ~]# ftp localhost
Trying ::1...
ftp: connect to address ::1拒绝连接
Trying 127.0.0.1...
Connected to localhost (127.0.0.1).
220 (vsFTPd 2.2.2)
Name (localhost:root): tvm
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /etc/
250 Directory successfully changed.

2.在pam文件中加入认证

 2.1 其/etc/pam.d/vsftd中加入如下一行

auth       required     pam_listfile.so item=user sense=allow file=/etc/vsftpd/allowusers onerr=succeed

 2.2在/etc/vsfptd/allowusers,/etc/vsftpd/chroot_list加tvm用户

[root@master vsftpd]# echo "tvm" >> allowusers
[root@master vsftpd]# echo "tvm" >> chroot_list


三  虚拟用户配置-独立数据文件

1.创建虚拟用户的数据库文件


[root@master vsftpd]# mkdir virtual
[root@master vsftpd]# vim virtual/vuser
john
123
tom
123
[root@master vsftpd]# db_load -T -t hash -f virtual/vuser vuser.db

2.创建虚拟用户的对应系统的用户  

[root@master vsftpd]# mkdir /data/192.168.4.44/upload
[root@master vsftpd]# useradd -d /data/192.168.4.44/upload/ -s /sbin/nologin ftplong

3.在vsftpd.conf中加入如下配置选项

anonymous_enable=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
guest_enable=YES                                                    
guest_username=ftplong                                              
pam_service_name=vsftpduser            


注:如果要为每个虚拟用户创建一个配置文件需要在vsftpd.conf加入user_conf_dir选项,如            user_config_dir=/etc/vsftpd/virtual,即可在其目录下为虚拟用户创建配置文件了,文件名必须与虚拟用户名一致。

4.独立配置文件示例


[root@TvmYunYing virtualuserdir]# cat admin

anon_root=/data/ftproot/                          //虚拟用户默认根目录

download_enable = yes

anon_mkdir_write_enable=YES                //虚拟用户创建目录文件权限

anon_other_write_enable=YES                //虚拟用户删除重命名权限
anon_upload_enable=YES                       //上传权限
anon_world_readable_only=NO             //下载权限

anon_umask = 022

file_open_mode = 0777


5.创建pam认证。

在/etc/pam.d/vsftpduser中加入

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

6.验证

5.1 更改系统目录权限

[root@master virtual]# chown ftplong:ftplong /data/192.168.4.44/upload/
[root@master virtual]# chmod 755 /data/192.168.4.44/upload/
[root@master virtual]# ls -al /data/192.168.4.44/upload/
总用量 8
drwxr-xr-x. 2 ftplong ftplong 4096  4月  5 08:39 .
drwxr-xr-x. 3 root    root    4096  4月  5 08:39 ..

5.2 用tom用户连接ftp服务器

[root@master virtual]# ftp 192.168.4.44
Connected to 192.168.4.44 (192.168.4.44).
220 (vsFTPd 2.2.2)
Name (192.168.4.44:root): tom
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,4,44,255,163).
150 Here comes the directory listing.
226 Directory send OK.
ftp> mkdir tom
257 "/tom" created
ftp> ls
227 Entering Passive Mode (192,168,4,44,86,169).
150 Here comes the directory listing.
drwx------    2 503      504          4096 Apr 05 01:20 tom
226 Directory send OK.

四 基于mysql的虚拟用户应用

1.安装pam_msyql包

[root@master ~]#rpm -ivh pam_mysql-0.7-0.12.rc1.el6.i686

注:pam_mysql包用于vsftpd与mysql的应用实例,mysql用于存储用户名与密码。

2.在vsftpd.conf配置如下

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES                                          
local_enable=NO                                                      
aonymoun_enable=NO                                                  
guest_enable=YES                                                    
guest_username=ftplong                                              
pam_service_name=vsftpmy                                    

3.创建msyql需要的pam认证文件

在/etc/pam.d/vsftpdmy加入

auth required /lib/security/pam_mysql.so host=localhost user=vsftpd passwd=123456 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=0

account required /lib/security/pam_mysql.so host=localhost user=vsftpd passwd=123456 db=vsftpd table=user usercolumn=name passwdcolumn=password crypt=0

4.在mysql中创建数据库,并授予用户权限

mysql> create database vsftpd;
Query OK, 1 row affected (0.00 sec)

mysql> use vsftpd
Database changed
mysql> create table user (
-> name CHAR(30),
-> password CHAR(48));
Query OK, 0 rows affected (0.07 sec)                            mysql> insert into user (name,password) values ('admin','123456');
Query OK, 1 row affected (0.06 sec)
mysql> grant select on vsftpd.* to vsftpd@localhost identified by  '123456';
Query OK, 0 rows affected (0.01 sec)


5 连接ftp验证

[root@master ~]# ftp 192.168.4.44
Connected to 192.168.4.44 (192.168.4.44).
220 (vsFTPd 2.2.2)
Name (192.168.4.44:root): admin
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mkdir admin
257 "/admin" created
ftp> ls
227 Entering Passive Mode (192,168,4,44,132,67).
150 Here comes the directory listing.
drwx------    2 503      504          4096 Apr 05 02:11 admin
drwx------    2 503      504          4096 Apr 05 01:20 tom
226 Directory send OK.

注:在调试时如出现failed,请追寻日志记录tail -f /var/log/secure.

你可能感兴趣的:(ftp,虚拟用户,pam_mysql)