Centos5搭建vsftpd服务
更换镜像源
由于centos5已经历史久远,内置的镜像源已经不能用。看:
因此,我手工更换了阿里云的源。(ps:我本来是想用网易的源,但不知为什么,这个源在安装vsftpd时提示http 404错误)
- 备份你的原镜像文件,以免出错后可以恢复。
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
- 下载新的CentOS-Base.repo 到/etc/yum.repos.d/
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-5.repo
- 运行yum makecache生成缓存
yum makecache
安装vsftpd
- 在终端运行下面的命令:
yum install vsftpd
- 安装完成后,通过
service vsftpd status
命令查看,可知服务先是被禁用的,因此我们需要手动启动:
service vsftpd start
- 设置在下次启动时自动启用,命令
chkconfig
:
简单使用
此时,其实你已经可以使用ftp了,通过命令ftp ftp_server_ip_address
和用户名密码便可以登录。此时,你可以通过两种方式登录:
匿名登录:账号
anonymous
,密码为空或者你随意输入。
用户名密码登录,这个用户名和密码是由ftp服务器管理员创建的。比如我用useradd命令创建了一个普通用户busui。注意:现在的ftp服务器由于没有经过任何安全设置,所以普通用户busui拥有的权限非常大。等下面会会讲如何通过修改配置文件vsftpd.conf来提高ftp的安全。
安全配置
所谓配置,就是对vsftpd配置文件/etc/vsftpd/vsftpd.conf
的修改(注意,不同发行版配置文件路径不一样),使得ftp服务器按照你意愿的权限/方式运行。
- 在linux里有这么一个习俗:更改配置文件时,先备份,所以,我们先备份:
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak
- 接下来,打开
/etc/vsftpd/vsftpd.conf
:
anonymous_enable=NO ### 禁用匿名登录
local_enable=YES ### 允许本地用户登录
write_enable=YES ### 允许对文件系统做改动的 FTP 命令
local_umask=022 ### 本地用户创建文件所用的 umask 值
dirmessage_enable=YES ### 当用户首次进入一个新目录时显示一个消息
xferlog_enable=YES ### 用于记录上传、下载细节的日志文件
connect_from_port_20=YES### 使用端口 20 (ftp-data)用于 PORT 风格的连接
xferlog_std_format=YES ### 使用标准的日志格式
listen=YES ### 让 vsftpd 运行在独立模式
listen_ipv6=NO ### 将vsftpd监听 IPv6停止,因为我主机是ipv4
pam_service_name=vsftpd ### vsftpd 使用的 PAM 服务名
userlist_enable=YES ### vsftpd 支持载入用户列表
tcp_wrappers=YES ### 使用 tcp wrappers
跟着,便是重启ftp,使得配置文件生效:
service vsftpd restart
:
这里,我也遇到了一点小麻烦,由于跟着这篇文章操作,糊里糊涂地也跟着将listen设置为NO,将listen_ipv6=YES。看:
所以,便遇到了这样的错误:
原因分析:我看了一下参考文章的出处,才知道原来是从外国翻译回来的。要知道,外国(主要指美国)ipv6基本普及了,天朝还在用ipv4,所以,这样改:
listen=YES
,listen_ipv6=NO
就万事大吉了。 刚开始我还以为是端口冲突了呢,想查看一下日志文件,却连日志都没有看到。(估计没生成)对于listen参数,在conf文件中注释是这样的:
当启用“listen”指令时,vsftpd以独立模式运行,并在IPv4套接字(即ip和端口,一般说侦听某个端口)上侦听。 该指令不能与listen_ipv6指令一起使用。
添加用户,测试:
useradd -m -c “Busui Kadiven, student” -s /bin/bash busui
设置密码passwd Busui
,之后,便可以启动ftp服务并且登录。此时,除了被我们禁止的匿名用户,这台机器的所有其他用户都可以登录到你的ftp服务器上。所以,要介绍一种机制,可以让你控制谁有登录你的ftp服务器的权限。现在基于用户列表文件
/etc/vsftpd.userlist
来配置 FTP 来允许/拒绝用户的访问:
默认情况下,如果设置了userlist_enable=YES
,当userlist_deny
选项设置为 YES 的时候,userlist_file=/etc/vsftpd.userlist
中列出的用户被拒绝登录。然而, 更改配置为userlist_deny=NO
,意味着只有在userlist_file=/etc/vsftpd.userlist
显式指定的用户才允许登录。将下列命令添加到/etc/vsftpd/vsftpd.conf
文件中,保存并重启vsftpd服务:
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
现在假如我的电脑上有这些用户:Busui,test,jack,test1,但只有Busui和test1在vsftpd.userlist文件中,所以,只有Busui和test1有登录的权限。
设置chroot jail(参看这里)
到了这里,其实还有一些很重要的东西要说,参考这里。chroot jail主要有三个参数:
1,chroot_local_user
: 是否将所有用户限制在主目录,YES为启用 NO禁用.(该项默认值是NO,即在安装vsftpd后不做配置的话,ftp用户是可以向上切换到要目录之外的)
- 设置为YES时:
- 设置为NO或注释掉时
2,chroot_list_enable
:是否启动限制用户的名单 YES为启用 NO禁用(包括注释掉也为禁用)
3,chroot_list_file=/etc/vsftpd/chroot_list
:是否限制在主目录下的用户名单,至于是限制名单还是排除名单,这取决于chroot_local_user的值. chroot_local_user总是一个全局性的设定,其为YES时,全部用户被锁定于主目录,其为NO时,全部用户不被锁定于主目录。那么我们势必需要在全局设定下能做出一些“微调”,即,我们总是需要一种“例外机制",所以当chroot_list_enable=YES时,表示我们“需要例外”。而”例外“的含义总是有一个上下文的,即,当”全部用户被锁定于主目录“时(即chroot_local_user=YES),"例外"就是:不被锁定的用户是哪些;当"全部用户不被锁定于主目录"时(即chroot_local_user=NO),"例外"“就是:要被锁定的用户是哪些。这样解释和记忆两者之间的关系就很清晰了!
结尾
到了这里,基本是结束了,关于centos7还有更详细的设置,请参考这里。
最新文章
- 将一张表的数据,拷贝到另一张表中sql
- 饿了么基于Vue2.0的通用组件开发之路(分享会记录)
- python基础02 基本数据类型
- libev安装与示例程序编译运行
- [每天默写一个算法]KMP
- 机器学习技法--学习笔记03--Kernel技巧
- 老师你好。使用cordova生成的hellowold 的安卓5.0版本太高。怎么才可以生成4.4的呢?
- Windows CE,你妈吗喊你在多核上玩玩
- Android - 向服务器发送数据(POST) - HTTPClient.
- ThinkPHP的验证码刷新显示和验证码显示不出来的原因
- Android简单发送邮件(可带附件)
- Java ---理解MVC架构
- 代码实现PHP web服务器下绝对路径到Web网址的转换
- 7个优秀的国内外移动端web框架(转)
- 动态嵌套form,使用Stimulus Js库(前后端不分离)
- 正版phpstorm,webstorm,goland(Jetbrains系列都可以)免费激活步骤(图文详解)(亲测有效)
- Python 生产者与消费者模型
- request请求 HTTPBody 格式
- python + django + dwebsocket 实现简单的聊天室
- Unable to resolve target 'android-9'
热门文章
- 老李分享:大数据框架Hadoop和Spark的异同
- android.util.Log常用方法
- Struts2基础学习(五)—拦截器
- Java中log4j的使用
- macos系统下共语言gopath变量的设置
- a标签传值乱码问题怎么解?
- 银盛支付ecshop,shopex,shopnc在线支付接口,php版本支付接口开发
- 转账示例(二):service层面实现(本例采用QueryRunner来执行sql语句,数据源为C3P0)
- STM32F4XX与STM32F0XX编程差别
- CSAcademy Beta Round #3 a-game