VSFTPD是linux平台上一款以安全、高效、稳定而著称的ftp服务器软件。软件配置灵活,使用方便,支持多种认证方式包括:匿名用户认证;本地用户认证;虚拟用户认证方式。 前两种很好理解,其中第三种虚拟用户认证方式又分两种,一种为使用文件文件方式创建虚拟用户表后使用db_load转换为佰克利数据库格式使用。还有一种是使用mysql数据库时行管理。 今天写的是如何使用mysql来管理虚拟用户。 1、安装vsftpd 软件 ,启动对应的服务
yum -y install vsftpd
service vsftpd start
chkconfig vsftpd on
2、安装mysql 软件 ,启动对应的服务
yum -y install mysql-devel mysql-server
service mysqld start
chkconfig mysqld on
3、配置mysql数据库
3.1 首先设置mysql管理员密码
mysqladmin -u root password test123
3.2 进入mysql数据。建立相应的数据库和密码认证表。
#mysql -u root -ptest123
mysql> create database vftp;
mysql> use vftp;
mysql> create table userinfo(name char(16),pwd char(32));
mysql> insert into userinfo(name,pwd) value ('jack','123456');
mysql> insert into userinfo(name,pwd) value ('lili','654321');
创建一个vftp的数据库,在其中创件一个userinfo的表文件,插入两条数据
3.3 为安全考虑,可以创建一个用户专门读取此表。
mysql>create user ftpuser;
mysql>grant select on vftp.userinfo to ftpuser@localhost identified by 'test123';
mysql>flush privileges;
4、下载安装专门用于验证mysql的pam 认证程序 。
4.1 猛击这里下载文件
4.2 tar -xzvf pam_mysql-0.7RC1.tar.gz
4.3 cd pam_mysql-0.7RC1
4.4 ./configure
4.5 make;make install
网上有些教程说的是安装到/lib/security 目录下,不知怎么搞的,我的pam认证文件会安装到/usr/lib/security 目录下,加了--perfix 等参数都不可以。郁闷。 不过大家不用太纠结于此,不管安装到什么位置,只要在/etc/pam.d/vsftpd 中指定文件正确的路径即可。
5、 添加虚拟用记所对应的系统用户
mkdir /var/ftp/ftproot
useradd -d /var/ftp/ftproot -s /sbin/nologin virtual
chown virtual. /var/ftp/ftproot
6、 配置 /etc/vsftpd/vsftpd.conf 文件
在文件底部添加如下两行:
guest_enable=yes
guest_username=virtual
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd_user_conf
local_root=/var/ftp/ftproot
chroot_local_user=YES
并修改原文件中的 anonymous_enable=yes 改为no
7 、编辑vsftpd 的pam 认证文件。
/etc/pam.d/vsftpd文件,将原文件中所有内容注释掉,并添加如下两行。
auth required /usr/lib/security/pam_mysql.so user=ftpuser passwd=test123 host=localhost db=vftp table=userinfo usercolumn=name passwdcolumn=pwd crypt=0
account required /usr/lib/security/pam_mysql.so user=ftpuser passwd=test123 host=localhost db=vftp table=userinfo usercolumn=name passwdcolumn=pwd crypt=0
8、配置用户单独的配置文件
mkdir /etc/vsftpd_user_conf 创建用户单独配置文件的目录。
cd /etc/vsftp_user_conf
mkdir user1 创建与用户同名的文件在文件里面写入:local_root=/ftp/user1 指定用户的登录目录。
9、创建用户登录目录。
mkdir -p /ftp/user1
chown -R virtual.virtual /ftp
cat user1
local_root=/ftp/usr1
write_enable=YES 允许在文件系统写入权限
anon_upload_enable=YES 开启匿名帐号创建文件功能
anon_mkdir_write_enable=YES 允许创建文件
anon_world_readable_only=NO 允许匿名用户浏览器整个服务器的文件系统
download_enable=YES 运行下载
10、 重启FTP服务器进行测试。
service vsftpd restart
[root@appServer vsftpd_user_conf]# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): use1
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 (127,0,0,1,116,204)
150 Here comes the directory listing.
-rw-r--r-- 1 1004 1005 489 Aug 02 05:58 ConnectUtil.log
drwxr-xr-x 10 1004 1005 4096 Jul 31 01:56 apache-tomcat-6.0.32
drwxr-xr-x 3 1004 1005 4096 Aug 09 07:04 app
drwxrwxr-x 11 1004 1005 4096 Jul 26 09:26 bjhbstatv3-tomcat
-rw-r--r-- 1 1004 1005 63630 Aug 09 07:19 bjhbstatv3.out
drwxrwxr-x 11 1004 1005 4096 Aug 09 06:09 nihastats-tomcat
drwxrwxr-x 23 1004 1005 4096 Aug 10 09:50 oldwar
drwxrwxr-x 11 1004 1005 4096 Aug 09 06:11 other-tomcat
-rw-r--r-- 1 1004 1005 18659 Aug 09 07:18 stat.out
drwxrwxr-x 11 1004 1005 4096 Aug 09 05:59 v3test-tomcat
drwxr-xr-x 2 1004 1005 4096 Aug 13 02:50 war
226 Directory send OK.
注解:
不能登陆的常见问题:
1、检查是否开启了selinux
getenforc 若开启后请关闭或者是请允许FTP服务连接数据库
setsebool ftpd_connect_db=1
2、检查是否开启了iptable 防火墙。
若开启了请关闭或者添加一条规则到规则库里
iptables -I INPUT 2 -p tcp - -dport 21 -j ACCEPT
3、若还是有问题,请仔细检查配置文件,看有没有错误的地方。
pam_service_name=vsftpd
user_config_dir=/etc/vsftpd_user_conf
local_root=/home/tomcat
chroot_local_user=YES