VSFTPD文件服务器

      vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序。特点是小巧轻快,安全易用。

  vsftpd 的名字代表"very secure FTP daemon", 安全是它的开发者 Chris Evans 考虑的首要问题之一。在这个 FTP 服务器设计开发的最开始的时候,高安全性就是一个目标。

一、安装vsftpd

使用本地yum源安装:

# yum -y install vsftpd

开启服务:

# service vsftpd start

 

二、安装pam_mysql-0.7RC1

 

# tar zxvf  pam_mysql-0.7RC1.tar.gz

# cd  pam_mysql-0.7RC1

# ./configure --with-mysql=/usr/local/mysql --with-openssl

# make

# make install

 

三、安装数据库

1、准备数据存放的文件系统

新建一个逻辑卷,并将其挂载至特定目录

新建分区的步骤省略,将分区创建成逻辑卷

# pvcreate /dev/sda5

# vgcreate myvg /dev/sda5

# lvcreate -L 2G -n mydata myvg

# mke2fs -j /dev/myvg/mydata

 

这里假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录。

# mkdir -pv /mydata/data

# vim /etc/fstab

编辑此文件,添加如下行,以实现开机自动挂载:

/dev/myvg/mydata        /mydata            ext3    defaults        0 0

 

# mount -a

 

2、新建用户以安全方式运行进程:

 

# groupadd -r mysql

# useradd -g mysql -r -s /sbin/nologin -M -d /mydata/data mysql

# chown -R mysql:mysql /mydata/data

 

3、安装并初始化mysql-5.5.20

 

首先下载平台对应的mysql版本至本地,这里是32位平台,因此,选择的为mysql-5.5.20-linux2.6-i686.tar.gz,下载此rpm包。

解压缩mysql,并指定其目录:

# tar xf mysql-5.5.20-linux2.6-i686.tar.gz -C /usr/local

# cd /usr/local/

# ln -sv mysql-5.5.20-linux2.6-i686  mysql

# cd mysql 

# chown -R mysql:mysql  .

初始化mysql:

# scripts/mysql_install_db --user=mysql --datadir=/mydata/data

# chown -R root  .

 

4、为mysql提供主配置文件:

 

# cd /usr/local/mysql

# cp support-files/my-large.cnf  /etc/my.cnf

 

并修改此文件中thread_concurrency的值为你的CPU个数乘以2,比如这里使用如下行:

thread_concurrency = 2

另外还需要添加如下行指定mysql数据文件的存放位置:

datadir = /mydata/data

 

5、为mysql提供sysv服务脚本:

 

# cd /usr/local/mysql

# cp support-files/mysql.server  /etc/rc.d/init.d/mysqld

 

添加至服务列表:

# chkconfig --add mysqld

# chkconfig mysqld on

 

而后就可以启动服务测试使用了。

# service mysqld start

 

为了使用mysql的安装符合系统使用规范,并将其开发组件导出给系统使用,这里还需要进行如下步骤:

 

6、输出mysql的man手册至man命令的查找路径:

 

编辑/etc/man.config,添加如下行即可:

MANPATH  /usr/local/mysql/man

 

7、输出mysql的头文件至系统头文件路径/usr/include:

 

这可以通过简单的创建链接实现:

# ln -sv /usr/local/mysql/include  /usr/include/mysql

 

8、输出mysql的库文件给系统库查找路径:

 

# echo '/usr/local/mysql/lib' > /etc/ld.so.conf.d/mysql.conf

 

而后让系统重新载入系统库:

# ldconfig

 

9、修改PATH环境变量,让系统可以直接使用mysql的相关命令。编辑相关文件/etc/profile:

    # vim /etc/profile

    添加如下行:

    PATH=$PATH:/usr/local/mysql/bin

mysql就此安装完成

 

10.准备数据库及相关表

 

在此,我们建立名为vsftp的数据库来存放相关虚拟用户的帐号

 

mysql> create database vsftpd;

 

设置默认数据库:

mysql> use vsftpd;

 

创建表:

mysql> create table users (

    -> id int AUTO_INCREMENT NOT NULL PRIMARY KEY,      自动增长

    -> name char(20) NOT NULL UNIQUE KEY,   定长检索速度快

    -> passwd char(48) NOT NULL   

    -> );

    对于一个表而言,只能有一个字段使用自动增长

 

添加测试的虚拟用户,其密码采取加密存放的方式

往表中插入数据,id字段不用插入,自动初始化:

mysql> insert into users(name,password) values('magedu',password('123456'));

mysql> insert into users(name,password) values('marion',password('123456'));

 

查看结果

mysql> select * from users;

 

授权:

mysql> grant select on vsftpd.* to vsftpd@localhost identified by '123456';

mysql> grant select on vsftpd.* to [email protected] identified by '123456';

两个完全不同的用户。

mysql> flush privileges;

 

四、建立pam认证

所需文件:

 

#vi /etc/pam.d/vsftpd.mysql

编辑此文件,添加如下两行:

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

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

    也可以使用绝对路径,中间的用户之类的信息,要与数据库一致。

 

3.建立虚拟用户映射的系统用户及对应的目录:

 

#useradd -r -s /sbin/nologin -d /var/ftproot ftpuser

#chmod go+rx /var/ftproot

 

4.修改vsftpd的配置文件,使其适应mysql认证

 

请确保/etc/vsftpd/vsftpd.conf中已经启用了以下选项

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

listen=YES

chroot_local_user=YES        最好开启,开启更安全

 

为/etc/vsftpd/vsftpd.conf添加以下选项

guest_enable=YES      是否启用来宾账号

guest_username=ftpuser    

 

修改/etc/vsfptd/vsftpd.conf中的pam_service_name=vsftpd为如下内容:

pam_service_name=vsftpd.mysql

 

重启服务:

# service vsftpd restart

关闭Selinux:

# setenforce 0

 

在验证之前,先使用mysql命令,查看用户能否使用:

# mysql -uvsftpd -p

Enter password:

 

mysql> show databases;

mysql> use vsftpd

mysql> select * from users;

若可以出现结果,则此用户可以使用

 

5.访问FTP:

                

连接成功。在此要知道,虚拟用户的权限与匿名用户的相同,因此,我们设置匿名用户有上传权限时,看看虚拟用户是否有上传权限。

 

修改/etc/vsftpd/vsftpd.conf文件:

将此项开启:anon_upload_enable=YES

 

访问FTP:

    ftp> lcd C:\windows\system32

    ftp> !dir 

      

 

五、如何让不同的虚拟用户有不同的权限

假如让magedu这个用户仅有上传权限,marion用户仅有下载权限,改如何实现?

对vsftpd来讲,有一个指令:user_config_dir,可以实现指定一个目录,在目录中建与用户同名的配置文件,用于定义用户访问FTP时独有的权限。在目录中可以定义能否上传、下载,以及最大传输速率等访问控制权限:

anon_max_rate

anon_umask

local_max_rate

max_clients

max_per_ip

    guest_username

listen_address

user_config_dir

1. 创建虚拟用户配置文件目录:

# cd /etc/vsftpd/

# mkdir virusers

# cd virusers

2. 编辑虚拟用户配置文件:

# vim magedu

添加如下行:  

anon_upload_enable=YES

anon_mkdir_write_enable=NO

anon_other_write_enable=NO

    

# vim marion

添加如下行:

    anon_upload_enable=NO

    anon_mkdir_write_enable=NO

    anon_other_write_enable=NO

3. 编辑主配置文件:

# cd ..

# vim vsftpd.conf

添加: user_config_dir=/etc/vsftpd/virusers

# service vsftpd reatart

4.访问FTP:


 

六、虚拟用户可以使用以后,系统用户无法登陆,那如何才能让系统用户与本地用户都可以登陆呢?

 

# vim /etc/pam.d/vsftpd

    将文件/etc/pam.d/vsftpd.mysql与/etc/pam.d/vsftpd的内容合并起来,要把/etc/pam.d/vsftpd.mysql中移过来的required改为sufficient,还要把/etc/pam.d/vsftpd中的session行注释掉。读取文件的时候,是从上往下依次读取的,要注意访问控制的次序。修改后的内容如下:

 

#%PAM-1.0

#session    optional     pam_keyinit.so    force revoke

 

auth     sufficient        /lib/security/pam_mysql.so user=vsftpd passwd=123 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2

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

auth       required     pam_shells.so

auth       include      system-auth

auth     sufficient        /lib/security/pam_mysql.so user=vsftpd passwd=123 host=localhost db=vsftpd table=users  usercolumn=name passwdcolumn=password crypt=2

account    include      system-auth

#session    include     system-auth

#session    required     pam_loginuid.so

 

修改主配置文件:

# vim /etc/vsftpd/vsftpd.conf 

将pam_service_name=vsftpd.mysql

改为pam_service_name=vsftpd

 

重启服务:

# service vsftpd restart

 

连接FTP:

         

你可能感兴趣的:(职场,vsftpd,休闲)