FTP服务器管理和配置

FTP服务的简介

FTP是Internet上使用非常广泛的一种通信协议,用于在不同的主机之间进行文件传输。Linux系统下常用的FTP服务器软件包括有wu-ftpd;vsftpd(Very Secure ftp Daemon);proftpd;pureftpd等

客户端软件有:

CLI:ftp;lftp;(wget ,lftpget)下载工具,非交互式

GUI: gftpd ;FlashFXP;Cuteftp;Filezilla

FTP采用C/S的工作模式,通过TCP协议建立客户端和服务器之间的连接。但与其他大多数的应用协议不同,FTP协议在客户端和服务器之间建立了两套通信链路,分别是控制链路和数据链路;

FTP客户端与服务器之间的通信过程

1、用户使用FTP协议的客户机程序,连接到远程的FTP服务器程序上

2、用户使用客户端程序进行FTP文件的上传或下载,FTP客户端程序通过控制链路向FTP发送相应的控制命令

3、服务器程序接收并执行用户所发出的命令

4、FTP服务器将执行结果返回到客户端

FTP通过两组套接字通信:控制莲姐套接字 21/TCP,数据连接套接字 20/TCP。但是传输数据又可以分为主动模式与被动模式,其数据传输端口有所不同。

主动模式工作的原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送PORT命令到FTP服务器 ,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据,原理如下图:

被动模式工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上 ),然后把开放的端口告诉客户端,客户端再连接到服务器开放的端口进行数据传输,原理如下图:

VSFTP服务器的安装和配置

vsftpd可以通过rpm包或者源码安装,通过rpm安装只需使用yum命令即可。

文件的组成:


/etc/vsftpd: 配置文件目录

/etc/rc.d/init.d/vsftpd: 服务脚本

/usr/sbin/vsftpd: 主程序

/var/ftp:数据文件目录(匿名用户访问目录)

/etc/pam.d/vsftpd: 认证文件 pam(Plugable Authentication Module)插件式认证模块

模块化库文件:/lib64/security/pam*.so

认证配置文件:/etc/pam.conf和/etc/pam.d/*

基本配置:/etc/vsftpd/vsftpd.conf

启动和关闭vsftpd

vsftpd支持两种启动方式:xinetd和standalone。其中,xinetd是通过xinetd进程来启动和关闭vsftpd服务,这是vsftpd默认启动方式。standalone方式则是采用独立进程启动和关闭,与普通程序的启动方式一样。

xinetd方式:

采用这种方式时,vsftpd不能单独管理,当vsftpd需要重启时,也必须重启整个xinetd服务器。不推荐这种方式

standalone方式:

# service vsftpd star

# service vsftpd stop

# service vsftpd restart

或者使用: # chkconfig vsftpd on 使得ftp服务自启动

vsftpd.conf配置文件

    vsftpd服务器的配置主要通过其主配置文件/etc/vsftpd.conf来完成。该文件以‘#‘作为注释,每个选项一行,格式为‘选项=值‘。

常用选项:


匿名用户的配置:

anonymous_enable=YES登陆权限

anon_upload_enable=YES上传权限

anon_other_write_enable=YES删除权限

anon_mkdir_write_enable=YES创建目录

启用写入功能时,ftp用户对相应的本地文件系统也有相应的写入权限;生效的权限取决于文件系统权限和服务权限的交集。

禁锢用户于其家目录中:

chroot_local_user={Yes|No}

chroot_list_enable={YES|NO}                只禁锢列表中的用户在家目录

chroot_list_file=/etc/vsftpd/chroot_list   禁锢用户列表

欢迎信息的定义:

ftp_banner=some string

或者banner_file=/path/to/some_banner_file(文件中写欢迎信息)

dirmessage_enable=yes(切换目录时,目录下的欢迎信息)

在ftp可访问的目录下创建.messages文件

控制登录用户的机制:

/etc/vsftpd/ftpusers中的用户都不允许使用ftp服务, 这是在/etc/pam.d/vsftpd中定义。

user_list配置文件有两种用法:

黑名单:

userlist_enable=YES

userlist_deny=YES

白名单:

userlist_enable=YES

userlist_deny=NO

连接限制:

max_clients: 最大并发连接数

max_per_ip: 每IP可同时发起并发请求

传输速率:

anon_max_rate: 匿名用户的最大传输速率,单位是“字节/秒”;

local_max_rate: 本地用户的最大传输速率,单位是“字节/秒”

上传文件的umask:

anno_umask: 匿名用户上传文件的umask;

local_umask: 本地用户上传文件的umask;

修改匿名用户上传文件的属主和属组:

chown_uploads=YES

chown_username=someuser

ftp用户:

匿名用户: anonymous_enable

系统用户:local_enable

虚拟用户:所有的虚拟用户会映射会一个系统用户,访问时的文件目录是为此系统用户的家目录。

用户的存放位置:

虚拟用户账户在 : 文件,MySQL,Oracle,Redis,LDAP...

以文件存放虚拟用户的配置步骤:

1.创建用于保存虚拟用户文件,其中奇数行为用户名,偶数行为密码;

# touch VUSER_FILE

tom

123456

jerry

123123

2.将保存虚拟用户账户的文本文件转换为数据库文件:

db_load -T -t hash -f /PATH/TO/VUSER_FILE /PATH/TO/USERDB.db

3.设定PAM的认证文件

/etc/pam.d/vusers.file

auth required /lib64/security/pam_userdb.so db=/PATH/TO/USERDB

account required /lib64/security/pam_userdb.so db=/PATH/TO/USERDB

4.创建一个用于映射虚拟用户身份的本地用户

useradd LOCAL_USER

5.修改此虚拟主机的配置文件:

anonymous_enable=NO

guest_enable=YES

guest_username=LOCAL_USER

pam_service_name=vusers.file

local_root=/myftp/ftpdata

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

如果想要对于所有的虚拟用户分别设定权限,可以使用:

在虚拟主机的主配置文件中添加指令:

user_config_dir=/PATH/TO/CONFIG_DIR

创建出这个目录,并且在目录下创建出与虚拟用户名相同的文件;

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

local_root=/myftp/ftpdata/alice

anon_umask=022

基于MySQL存放虚拟用户

‘centos‘,PASSWORD(‘qhdlink‘)

‘suse‘,PASSWORD(‘link19‘)

1.编译安装pam的mysql驱动

下载地址:http://pam-mysql.sourceforge.net/

需要预先安装编译环境,即: Development Tools,Server Platform Development, pam-devel, mysql_devel

# tar xf pam_mysql-0.7RC1.tar.gz

# cd pam_mysql-0.7RC1

# ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/lib64/secutiry

# make -j 4 && make install

2.创建数据库,数据表,及授权用户;

mysql> create database vsftpd;

mysql> use vsftpd;

mysql> create table users (username char(20),password char(48));

mysql> insert into users values (‘centos‘,PASSWORD(‘qhdlink‘)),(‘gentoo‘,PASSWORD(‘qhdlink‘))

mysql> grant all on vsftpd.* to ‘vsftpd‘@‘localhost‘ identified by ‘vsftppass‘;

mysql> grant all on vsftpd.* to ‘vsftpd‘@‘127.0.0.1‘ identified by ‘vsftppass‘;

mysql> grant all on vsftpd.* to ‘vsftpd‘@‘172.16.%.%‘ identified by ‘vsftppass‘;

3.创建pam的认证文件:

/etc/pam.d/vusers.mysql

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftppass host=127.0.0.1 db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2

account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftppass host=127.0.0.1 db=vsftpd table=users usercolumn=username passwdcolumn=password crypt=2

4.创建映射用户:

useradd mysqluser

5.修改此虚拟主机的配置文件:

anonymous_enable=NO

guest_enable=YES

guest_username=LOCAL_USER

pam_service_name=vusers.mysql

user_config_dir=/PATH/TO/MYSQL_USER_CONFIG

时间: 2024-10-18 04:48:16

FTP服务器管理和配置的相关文章

Ubuntu 下ftp服务器的安装配置

Ubuntu 下ftp服务器的安装配置 FTP服务器是平时应用最为广泛的服务之一.VSFTP是Very Secure FTP的缩写,意指非常安全的FTP服务.VSFTP功能强大,通过结合本地系统的用户认证模块及其多功能的配置项目,可以快速有效的搭建强大的多用户FTP服务. 首先我们考虑搭建FTP服务需要关注的都有哪些方面?比如我们最经常关注的有: 1.如何添加FTP用户?  2.如何临时冻结某FTP用户?  3.FTP用户登入后的默认目录?是否可以改变?  4.如何锁定FTP用户可访问的目录范围

FTP服务器搭建与配置

FTP服务器搭建与配置 FTP介绍 使用vsftpd搭建ftp服务 xshell使用xftp传输文件 使用pure-ftpd搭建ftp服务 FTP介绍 FTP是File Transfer Protocol(文件传输协议,简称文件协议)的简称,用于在Internet上控制文件的双向传输. FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序) 并查看远程计算机中的文件,然后把文件从远程计算机复制到要地计算机,或是本地计算机的文件传送到远程计算机. 小公司用的多,大企业不

Linux系统FTP服务器搭建与配置

一.简介 1.简介 File Transfer Protocol(文件传输协议)的英文简称,而中文简称为"文件传输协议".用于Internet上的控制文件的双向传输.同时,它也是一个应用程序(Application).基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同一种哦协议以传输文件.在FTP的使用当中,用户经常遇到两个概念:"下载(Download)"和"上传(Upload)". 下载文件就是将文件从远程主机拷贝到自己的计

在windwo server2008服务器上配置ftp服务器、及配置phpstrom工具、实现项目同步。

在windwo server2008服务器上配置ftp服务器 参考该篇文章:http://blog.csdn.net/u010022051/article/details/52046345 在phpstrom上配置ftp

Linux上的ftp服务器vsftpd之配置满天飞--设置匿名用户访问(不弹出用户名密码框)以及其他用户可正常上传

一.问题背景 没事谁折腾这鬼玩意哦...还不是因为bug. 我们的应用,用户头像是存在ftp上的.之前的ftp服务器是一台windows,我们后台服务器程序收到用户上传头像的请求时,会用一个ROOT/ROOT的账户,连接ftp服务器. 获取到连接后,即进行上传. 上传:上传文件则存放在ROOT用户的home 目录(在windows上装的是server-U来充当ftp服务器,所以就是在Server-U里面配置了ROOT用户的home目录). 上传完成后,会得到一个ftp协议类型的url.范例如:

ftp服务器的简单配置使用

yum install -y vsftpd systemctl start vsftpd cd /var/ftp/pub/ mkdir 111 touch weifeng.txt 打开 ftp://服务器ip/pub 里面有文件 111 和 weifeng.txt

FTP服务器管理

今天看到51CTO正在搞Linux Shell 脚本大赛,特地将自己的×××作发出来,希望能够得到分享.这里说一下这个脚本的功能,这个脚本主要用来实现VSFTPD服务器的基础管理,主要用于方便运维管理.代码不是很美,还请各位多多指教.这个代码主要基于本地用户管理.有需求基于LDAP认证管理的朋友,可以联系我,LDAP认证的功能上将更强大了些.管理界面:image代码部份:read -p "请选择您要做的操作:" caozuo case $caozuo in 0) read -p &qu

网络操作系统 第九章 DHCP 服务器管理与配置

习题 1.DHCP的主要用途是什么? DHCP(Dynamic Host Configuration Protocol,动态主机配置协议) 通过在网络中配置DHCP服务器,可以为网络内的计算机自动分配指定网段的IP地址,并配置一些重要的IP选项,如默认网关.DSN服务器.WINS服务器.WWW代理服务器等. 2.当局域网内存在多台DHCP 服务器时,会如何工作? DHCP作用域中,从DHCP服务中排除的小范围内的一个或多个IP地址.使用排除范围的作用是保留这些作用域的地址永远不会被DHCP服务器

网络操作系统 第十章 DNS服务器管理与配置

习题 1.什么是域名系统?描述域名解析的过程. 1)域名系统:Domain Name System缩写DNS,是因特网的一项核心服务域名系统作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串 2)   (1)客户机提出域名解析请求,并将该请求发送给本地的域名服务器.         (2)当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该纪录项,则本地的域名服务器就直接把查询的结果返回.         (3)如果本地