ftp服务器配置

 

    ftp是文件传输协议,工作在应用层!它在工作时创建两个链接,一个用户请求ftp服务器时,开启一个链接请求,而服务器响应结果时又打开了一个链接,通过此链接将结果传给用户!

本文操作实现基于虚拟用户认证访问ftp,并以数据库存储格式保存用户信息。

下载vsftpdmysql-servermysql-develpam_mysql-0.7RC1包,安装开发环境

安装mysql

# yum groupinstall "Development Tools" "Development Libraries" -y
# yum install mysql-server mysql-devel

安装好后要给创建一个数据库用来存放虚拟用户,数据库名为vsftpd,创建前要启动数据库!

# service mysqld start
# mysql

mysql> create database vsftpd

vsftpd授权:

mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'www.jun.com';
mysql> grant select on vsftpd.* to [email protected] identified by 'www.jun.com';
mysql> flush privileges;

创建表:

mysql> use vsftpd;
mysql> create table users (
-> id int AUTO_INCREMENT NOT NULL,
-> name char(20) binary NOT NULL,
-> password char(48) binary NOT NULL,
-> primary key(id)
-> );

创建虚拟用户!

mysql>insert into users(name,password) values('tom','tom');
mysql> insert into users(name,password) values('jerry','jerry');

如图:

安装vsftpd

# yum -y install vsftpd

安装好后,关闭selinux和防火墙!

# setenforce 0

关闭防火墙(永久性的)

# chkconfig iptables off
# service vsftpd start

开启ftp,可以简单测试一下:

# ftp 172.16.15.5

pub目录在/var/vsftpd下,这是安装时生成的!安装好后ftp就可以工作了,看上去是如此的简单!其实不然,当用系统用户访问时,它可以在整个根目录下来回游荡!为了使ftp安全可靠,还要对其行配置!在配置前先建立虚拟用户映射的系统用户及对应的目录,其作用将来宾用户映射为此系统用户,使其能够访问ftp

# useradd -d /var/ftproot -s /sbin/nologin vuser
# chmod go+rx /var/ftproot

/etc/vsftpd/vsftpd.conf配置文件大致内容: anonymous_enable=YES:是否允许匿名用户

local_enable=YES:是否启用系统用户

write_enable=YES:是否能上传文件(系统用户的功能)

anon_upload_enable=YES:是否允许匿名用户上传文件

dirmessage_enable=YES:当用户进入一个目录时,是否显示隐藏文件内容

anon_mkdir_write_enable=YES:是否能创建目录

anon_other_write_enable=YES:是否有其他的写权限

xferlog_file=/var/log/vsftpd.logftp日志存放路径

xferlog_enable=YES:用户下载的文件过程是否存放在日志中

xferlog_std_format=YES:日志文件是否为标准格式

chown_uploads=YES用户上传文件,是否将文件的属主、属组改为别的用户

chown_username=whoever文件属主、属组改为谁

idle_session_timeout=600:定义用户会话时长

data_connection_timeout=120:定义用户链接数据时长

ascii_upload_enable=YES:启用以文本格式上传

ascii_download_enable=YES:启用以文本格式下载

chroot_list_enable=YES:是不是以一个文件将某些用户禁固在其家目录中

chroot_list_file=/etc/vsftpd/chroot_list:禁锢用户文件的路径

chroot_local_user=YES:禁锢所有的用户(在配置文件中添加此行)

pam_service_name=vsftpdftp认证的格式为pam

/etc/vsftpd/vsftpd.conf中,添加来宾用户所映射的用户名

guest_enable=YES

guest_username=vuser

安装pam认证包:

下载pam_mysql-0.7RC1,解压并安装!

# tar -xf pam_mysql_0.7RC1.tar.gz
# cd pam_mysql_0.7RC1
# ./configure --with-mysql=/usr --with-openssl
# make
# make install

建立pam认证所需要的文件,并在文件内添加mysql所授权的用户及密码!

# vim /etc/pam.d/vsftpd.mysql
auth required /lib/security/pam_mysql.so user=vsftpd passwd=www.jun.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0
account required /lib/security/pam_mysql.so user=vsftpd passwd=www.jun.com host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=0

修改vsftpd的配置文件,确保以pam认证,并能认证mysql中的虚拟用户及密码!修改前确保一下几项是开启的:

anonymous_enable=YES

local_enable=YES

write_enable=YES

anon_upload_enable=NO

anon_mkdir_write_enable=NO

chroot_local_user=YES

其表示为何意,上面已有介绍,不在详细说明!

修改/etc/vsftpd/vsftpd.conf配置文件

pam_service_name=vsftpd.mysql

# service vsftpd start
# chkconfig vsftpd on

用虚拟用户登录测试一下!

此时的用户只能创建目录,但不能删除目录!要想让虚拟用户有不同的权限,还需为虚拟用户创建配置文件!

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

# vim vsftpd.conf

添加如下选项:

user_config_dir=/etc/vsftpd/vusers_dir 

创建vusers_dir目录,为虚拟用户创建配置文件

# mkdir /etc/vsftpd/vusers_dir/
# cd /etc/vsftpd/vusers_dir/
# touch tom jerry

配置虚拟用户的访问权限,虚拟用户的访问权限是通过匿名用户的相关指令来实现的,在匿名用户的配置文件中添加某些命令即可!

tom添加其他权限

# vim /etc/vsftpd/vusers_dir/tom
anon_other_write_enable=YES

 

ftp有三种访问方式:匿名用户、系统用户、虚拟用户

每个人用户通过ftp访问时,访问的都是其自身的家目录

你可能感兴趣的:(FTP服务器,FTP服务器配置)