本文参考了网上的几篇博文,在CentOS上搭建FTP服务器,两种搭建方式:gssftp与vsftpd。

RedHat和CentOS都自带了一个gssftp服务,使用方式如下:

1 进入gssftp目录


[root@linux local]# cd /etc/xinetd.d


[root@linux xinetd.d]# ls


chargen cups-lpd daytime-udp echo-udp gssftp krb5-telnet rsync time-udp


chargen-udp daytime echo eklogin klogin kshell time 

2 编辑gssftp文件,将server_args改为-l,将disable改为no:


[root@linux xinetd.d]# vi gssftp


# default: off


# description: The kerberized FTP server accepts FTP connections \


# that can be authenticated with Kerberos 5.


service ftp


{


flags = REUSE


socket_type = stream


wait = no


user = root


server = /usr/kerberos/sbin/ftpd


#server_args = -l -a


server_args = -l


log_on_failure += USERID


#disable = yes


disable = no


}

3
重启xinetd服务:


[root@linux xinetd.d]# service xinetd restart


Stopping xinetd: [ OK ]


Starting xinetd: [ OK ]


这时查看21端口已经打开:


[root@linux xinetd.d]# netstat -tnlp


Active Internet connections (only servers)


Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name


tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 22543/xinetd


如果防火墙没有打开端口,则开放21端口并重启防火墙服务:


[root@linux xinetd.d]# vi /etc/sysconfig/iptables


[root@linux xinetd.d]# service iptables restart


Flushing firewall rules: [ OK ]


Setting chains to policy ACCEPT: filter [ OK ]


Unloading iptables modules: [ OK ]


Applying iptables firewall rules: [ OK ]

5  用户登录

到这里ftp服务就可用了,可以使用linux系统用户登录或者其他用户登录。gssftp不能指定共享目录,仅供内部测试使用,便捷的FTP服务需要利用vsftp来搭建。

vsftpd安装配置

1.安装vsftpd


一般在CentOS上都自动安装了vsftd,若没有安装则可以使用以下步骤进行安装: 


yum -y install vsftpd


touch /var/log/vsftpd.log # 创建vsftp的日志文件


在CentOS中,这样就可以完成了一个简单的匿名FTP的搭建。你可以通过访问ftp://yourip来进行,不过这个FTP没有任何权限。



2.基于匿名的FTP架设





参考本博客上几篇关于Vsftpd的CentOS FTP服务配置文章。





3.基于虚拟用户的FTP架设


所谓虚拟用户就是没有使用真实的帐户,只是通过某种手段达到映射帐户和设置权限的目的。


1)我们在/etc/vsftpd/vsftpd.conf中做如下CentOS FTP服务配置:


anonymous_enable=NO 设定不允许匿名访问


local_enable=YES 设定本地用户可以访问。注:如使用虚拟宿主用户,在该项目设定为NO的情况下所有虚拟用户将无法访问。


chroot_list_enable=YES 使用户不能离开主目录


xferlog_file=/var/log/vsftpd.log 设定vsftpd的服务日志保存路径。注意,该文件默认不存在。必须要手动touch出来


ascii_upload_enable=YES


ascii_download_enable=YES 设定支持ASCII模式的上传和下载功能。


pam_service_name=vsftpd PAM认证文件名。PAM将根据/etc/pam.d/vsftpd进行认证


以下这些是关于Vsftpd虚拟用户支持的重要CentOS FTP服务配置项目。默认vsftpd.conf中不包含这些设定项目,需要自己手动添加CentOS FTP服务配置。 


guest_enable=YES 设定启用虚拟用户功能。


guest_username=ftp 指定虚拟用户的宿主用户。-CentOS中已经有内置的ftp用户了


user_config_dir=/etc/vsftpd/vuser_conf 设定虚拟用户个人vsftp的CentOS FTP服务文件存放路径。存放虚拟用户个性的CentOS FTP服务文件(配置文件名=虚拟用户名)


2)创建chroot list,将用户ftp加入其中: 


touch /etc/vsftpd/chroot_list


echo ftp >> /etc/vsftpd/chroot_list


3)进行认证: 


首先,安装Berkeley DB工具,很多人找不到db_load的问题就是没有安装这个包。


yum install db4 db4-utils


然后,创建用户密码文本/etc/vsftpd/vuser_passwd.txt ,注意奇行是用户名,偶行是密码


ftpuser1


ftppass1


ftpuser2


ftppass2


接着,.生成虚拟用户认证的db文件


db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db


随后,编辑认证文件/etc/pam.d/vsftpd,全部注释掉原来语句


再增加以下两句


auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd


account required pam_userdb.so db=/etc/vsftpd/vuser_passwd


最后,创建虚拟用户个性CentOS FTP服务文件


mkdir /etc/vsftpd/vuser_conf/


vi /etc/vsftpd/vuser_conf/ftpuser1


内容如下:


local_root=/opt/var/ftp1 虚拟用户的根目录(根据实际修改)


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

4.启动vsftp服务器 


mkdir /opt/var/ftp/ftpuser1


chmod 777 /opt/var/ftp/ftpuser1


service vsftpd start


TroubleShootings:

1.553 Could not create file

一般都是SELinux的问题,设置SELinux的一个值,重启服务器即可。


setsebool -P ftpd_disable_trans 1 


service vsftpd restart

2.500 OOPS: bad bool value in config file for: write_enable

注意你的CentOS FTP服务文件中保证每一行最后没有任何空格,一般出错就是在多余的空格上。

注:后半部分待测试。

CentOS上搭建FTP服务器[未测试]的更多相关文章

  1. CentOs上搭建git服务器

    CentOs上搭建git服务器 首先安装setuptools wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0 ...

  2. 【转】【FTP】之windows8.1上搭建FTP服务器方法

    参考地址:<windows8.1上搭建FTP服务器方法>

  3. 如何在windows上搭建ftp服务器

    FTP(File Transfer Protocol)是TCP/IP网络上两台计算机传送文件的协议,使得主机间可以共享文件.目前有很多软件都能实现这一功能,然而windows自带的IIS就可以帮助你搭 ...

  4. CentOS 下搭建FTP服务器

    vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个.本文介绍了在CentOS 6 4下安装vsftpd.配置虚拟用户登录FTP的过程.正 vsftpd是Linux下比较著名 ...

  5. [FTP]通过FileZilla在阿里云主机上搭建ftp服务器

    前一阵子租了一台服务器主机来玩,正好周末有时间研究了一下怎么搭建ftp server. 准备.首先要下载filezilla client和filezilla server, 下载地址: server: ...

  6. Centos7上搭建ftp服务器

    ftp服务器搭建 1.安装好centos系统,配好yum仓库 其中vsftpd源在这下载 http://rpmfind.net/linux/rpm2html/search.php?query=vsft ...

  7. Ubuntu14.04上搭建FTP服务器

    Ubuntu上常用的Ftp服务器是vsFTPd.安装前检查下是否已经装好了.用 sudo service vsftpd restart,如果提示重启成功之类的信息,说明此服务器已经安装好了vsFTPd ...

  8. linux上搭建ftp服务器

    摘要 vsftpd 是"very secure FTP daemon"的缩写,安全性是它的一个最大的特点.vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行 ...

  9. Centos下搭建ftp服务器

    完全不用那么麻烦,直接可以用xshell中自带的传输文件功能,下载客户端xftp安装就行,不用配置,可以在windows系统向Linux系统的任何文件地方上传下载文件,简单方便,大大节约时间, vsf ...

  10. CentOS 7搭建FTP服务器

    安装vsftpd 命令:yum -y install vsftpd 修改ftp配置文件 命令:vim /etc/vsftpd/vsftpd.conf 按i进入insert模式后,按以下要求修改 ano ...

随机推荐

  1. Volatile关键字原理

    转载请标明:https://www.cnblogs.com/tangZH/p/15113505.html 一.如果一个变量被volatile关键字修饰,那么所有线程都是可见的.所谓可见就是,当一条线程 ...

  2. [Linux] rockylinux9.1 的部署使用过程 -- ZFS 虚拟机 cockpit podman samba

    备选镜像 | Rocky Linux rocky linux 使用记录 - 个人文章 - SegmentFault 思否 # https://blog.csdn.net/NeverGUM/articl ...

  3. [VueJsDev] 基础知识 - ES6循环使用手册

    [VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html ES6循环使用手册 ::: details 目录 目录 ES ...

  4. C++实现一个简单的生产者-消费者队列

    本文的代码都是ChatGPT生成,我只是做了微小的调整和整合,AI提示词如下: 设计一个C++类,支持生产者-消费者模型,可以通过size函数获取剩余数量 可能第一次生成的不一定合适,多刷新几次. 生 ...

  5. Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL

    简介 https://www.hangfire.io/ 在 .NET 和 .NET Core 应用程序中执行后台处理的简单方法,无需 Windows 服务或单独的进程. Hangfire 是一个开源的 ...

  6. C# 中的for/foreach循环

    for 循环是一个执行特定次数的循环的重复控制结构. C# 中 for 循环的语法: for ( init; condition; increment ) { statement(s); } 执行流程 ...

  7. Android源码在线查看网站

    一.aospxref http://aospxref.com/ 优点:更新速度快 缺点:历史版本较少 二.androidxref http://androidxref.com/ 优点:历史版本较多 缺 ...

  8. python面向对象(反射、内置方法、元类)

    一 反射 # 静态语言:在执行前就定义好数据类型 # var x int=8 # 动态语言:在执行的时候,才识别数据类型 # x = 8 # 什么是反射? # 指的是在程序运行过程中可以"动 ...

  9. python基础八(迭代器、生成器、生成式、递归、匿名函数、面向过程编程)

    一 迭代器 1.什么是迭代器 迭代器指的是迭代取值的工具,迭代是一个重复的过程,每次重复都是基于上一次的结果而 继续的,单纯的重复并不是迭代2.为何要有迭代器 迭代器是用来迭代取值的工具,而涉及到把多 ...

  10. Lifecycle详细分析

    Lifecycle源码分析 目录介绍 01.Lifecycle的作用是什么 02.Lifecycle的简单使用 03.Lifecycle的使用场景 04.如何实现生命周期感知 05.注解方法如何被调用 ...