ftp服务器搭建

在搭建linux下的ftp服务器之前,大家要清楚服务器搭建流程:

  • 检查并安装ftp程序
  • 对配置文件进行修改,完成用户需求(尤为重要)
  • 对防火墙iptable进行操作,添加模块以及21号端口,对ftp服务进行支持
  • 添加系统用户,以及虚拟用户
  • 登录测试,是否可以登录服务器
接下来逐点进行分析:
  • 检查并安装ftp程序
lingyun@localhost ~]$ rpm -q vsftpd
vsftpd-2.2.2-24.el6.i686
如未安装此程序,则用yum语句对其进行安装:
[lingyun@localhost ~]$ yum -y install vsftpd
安装完成后并设置为开机启动项目(开始的时候是被禁止的):
[lingyun@localhost ~]$ chkconfig vsftpd on
以上为止,最基本的安装操作已经完成。
我们可以用绝对路径[root@localhost /]# cd /etc/vsftpd打开此文件夹

有三个主文件:
/etc/vsftpd/vsftpd.conf     主配置文件
/etc/vsftpd/ftpusers        指定哪些用户不能访问FTP服务器
/etc/vsftpd/user_list       文件中指定的用户是否可以访问ftp服务器由vsftpd.conf文件中的userlist_deny的取值来决定。
  • 对配置文件进行修改
首先我们需要完成用户登录的需求,在此之前我们需要了解三种不同的登录方式:
  1. 匿名登录:在登录FTP时使用默认的用户名,一般是ftp或anonymous
  1. 本地用户登录:使用系统用户登录,在/etc/passwd中
  1. 虚拟用户登录:这是FTP专有用户,有两种方式实现虚拟用户,本地数据文件和数据库服务器
现在对主配置文件进行修改:
一般情况下,会有以下项目要进行修改
anonymous_enable=YES/no    是否允许匿名用户登录
anonymous_enable=yes/no    是否允许匿名上传文件
local_enable= YES/no       是否允许本地用户登录
write_enable= YES/no       是否允许本地用户上传
local_mask=022             设置本地用户的文件生成掩码为022,默认值为077
guest_enable=yes/no        是否允许虚拟用户登录
dirmessage_enable= YES     设置切换到目录时显示.message隐含文件的内容
xferlog_enable= YES        激活上传和下载日志
connect_from_port_20=YES   启用FTP数据端口连接
pam_service_name=vsftpd    设置PAM认证服务的配置文件名称, 该文件存放在/etc/pam.d目录下
userlist_enable= YES       允许vsftpd.user_list文件中的用户访问服务器
userlist_deny= YES         拒绝vsftpd.user_list文件中的用户访问服务器
userlist_file=/etc/vsftpd/user_list 存储用户名的文件,显式指定的用户才允许登录
listen= YES/no             是否使用独占启动方式(这一项比较重要)
tcp_wrappers= YES/no       是否使用tcp_wrappers作为主机访问控制方式
chroot_local_user=YES/no      是否可以让ftp用户跳出自己的家目录,(yes是禁止跳出,no是可以)
以下是我的配置:
为了提高服务器的安全性以及减少服务器承载量,我们设置anonymous_enable=no,禁止匿名登录
在上图中以下是设置本地用户登录权限
local_enable= YES      允许本地用户登录
write_enable= YES      允许本地用户上传
local_mask=022         设置本地用户的文件生成掩码为022
dirmessage_enable= YES     设置切换到目录时显示.message隐含文件的内容
其余为默认值,在不知道具体使用情况下没要修改。

虚拟用户配置:
chroot_local_user=no
chroot_list_enable=YES    (对以下路径权限进行限制)
chroot_list_file=/etc/vsftpd/xunipasswd.file (限制用户目录)
#chroot_list_file=/etc/vsftpd/chroot_list  (我注释掉它默认的选项,因为chroot_list 它的功能与我自己创建的xunipasswd.file文件夹功能一样:虚拟用户账号及密码列表,文件夹名字自拟,之后详解)
listlisten=YES   允许ftp运行在独立模式之下
guest_enable=YES    (允许虚拟用户)
guest_username=zbq   (虚拟用户映射的系统用户)
pam_service_name=vsftpd     (pam证明模块)
virtual_use_local_privs=YES      
user_config_dir=/etc/vsftpd/xuniuser_config  (虚拟用户配置文件,配置的是以上提到的xunipasswd.file文件夹中的用户)
userlist_enable=YES    
userlist_file=/etc/vsftpd/user_list   (用户总表列,虚拟用户名也需要加入)
userlist_deny=NO

tcp_wrappers=YES


我们对配置做以下讲解:
chroot_local_user 是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外
chroot_list_enable 是否启动限制用户的名单 YES为启用  NO禁用(包括注释掉也为禁
chroot_list_file=/etc/vsftpd/chroot_list (xunipasswd.file) 是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值,我们可以这样记忆: chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些,
所以我们这里做的是局部调整,把chroot_list_file=/etc/vsftpd/xunipasswd.file 此路径中的用户做限制,禁止切换到上级目录。

基于用户列表文件 /etc/vsftpd/user_list来配置 FTP 来允许/拒绝用户的访问,默认情况下,如果设置了 userlist_enable=YES  ,当 userlist_deny选项设置为 YES 的时候列出的用户被拒绝登录,然而, 更改配置为 userlist_deny=NO,意味着只有在/etc/vsftpd/user_list显式指定的用户才允许登录。

userlist_enable=YES

userlist_file=/etc/vsftpd/user_list   (用户总表列,虚拟用户名也需要加入)

userlist_deny=NO

完成以上配置后重启ftp使其生效[root@localhost vsftpd]# service vsftpd restart 



 
  • 对防火墙iptable进行操作,添加模块以及21号端口,对ftp服务进行支持
[root@localhost vsftpd]# vi /etc/sysconfig/iptables-config    
 添加tcp模块  IPTABLES_MODULES="ip_conntrack_ftp"
[root@localhost vsftpd]#vi /etc/sysconfig/iptables 
添加端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

然后重启iptable使其生效[root@localhost vsftpd]# service iptables restart


  • 添加系统用户,以及虚拟用户(这里着重讲虚拟用户)
添加虚拟用户口令文件
  • 添加虚拟用户口令文件vi /etc/vsftpd/xunipasswd.file  
添加虚拟用户名和密码,一行用户名,一行密码,以此类推。奇数行为用户名,偶数行为密码
zhubaiqing #用户名
123456789 #密码
  • 生成虚拟用户口令认证文件
将刚添加的xunipasswd.file虚拟用户口令文件转换成系统识别的口令认证文件,类似于身份证。
首先查看系统有没有安装生成口令认证文件所需的软件db4-utils
[root@localhost vsftpd]# rpm -q  db4-utils
db4-utils-4.7.25-19.el6_6.i686
使用db_load命令生成虚拟用户口令认证文件
db_load –T –t hash –f /etc/vsftpd/xunipasswd.file /etc/vsftpd/vftpuser_passwd.db
  • 编辑vsftpd的PAM认证文件
此文件默认在/etc/pam.d目录下
vi /etc/pam.d/vsftpd

将里面其他的都注释掉,修改下面这两行(告诉系统生成的db文件的路径以及文件名):
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser 修改为auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser_passwd
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser 修改为account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser_passwd
  • 建立本地映射用户并设置宿主目录权限
所有的FTP虚拟用户需要使用一个系统用户,映射在此系统用户上(就像儿子跟着父母一样),这个系统用户不需要密码.
[root@localhost vsftpd]# #useradd –d /home/zbq –s /sbin/nologin zbq
用root账户创建的此系统用户,我们要给它相应的权限:

[root@localhost vsftpd]#chmod 700 /home/zbq

FTP 用户所映射到的系统帐户必须对 FTP 用户主目录拥有相应的读/写权限。仍然以zhubaiqing用户为例,本文中zhubaiqing虚拟用户是被映射到zbq系统帐户的,所以 zbq系统帐户必须拥有对zhubaiqing 的 FTP 主目录/data/FTP/zhubaiqing 的读/写权限

[root@localhost vsftpd]#chown -R zbq:zbq /data/FTP/zhubaiqing/

之后我们需要将我们创建的用户加入到/etc/vsftpd/user_list中,

以满足我们之前的设置

userlist_enable=YES    

用以下命令对账户进行添加:

# echo "zhubaiqing" | tee -a /etc/vsftpd/user_list

# echo "zbq" | tee -a /etc/vsftpd/user_list

# cat /etc/vsftpd/user_list


  • 配置xuniuser.conf(设置虚拟用户配置项)
之前在主配置文件vsftpd.conf   中有一项user_config_dir=/etc/vsftpd/xuniuser_config  (虚拟用户配置文件,配置的是以上提到的xunipasswd.file文件夹中的用户)
此xuniuser_config是手动创建的文件夹,里面包含了对xunipasswd.file中账户的配置,而我们之前提到过xunipasswd.file中是虚拟用户的账户和密码信息,有它生成的db文件。现在我们理清一条线:passwd.file虚拟用户信息,xuniuser_config控制着每一个虚拟用户的权限。这两个文件在主配置文件中都必须有路径存在指导系统进行操作
/etc/vsftpd/xuniuser_config 下给每个用户创建个权限文件,这个文件要和虚拟用户名称相
例:vi/etc/vsftpd/xuniuser_config/zhubaiqing

local_root=/data/FTP/zhubaiqing   虚拟用户的登录后的目录路径(必须存在,自己创建)

local_root=/data/FTP/zhubaiqing
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
pam_service_name=vsftpd

保存退出

  • 重启vsftpd服务
[root@localhost vsftpd]#service vsftpd restart
  • 测试虚拟用户登录FTP
用浏览器登录或命令行进行测试
如果用浏览器无法登录查看
vi /etc/selinux/config 
把此项修改为SELINUX=disable  
命令行使用lftp命令:
lftp zhubaiqing@ip 回车
123456789

成功








 






  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值