VSftp

来源:互联网 发布:vb表格怎么设置滚动条 编辑:程序博客网 时间:2024/05/21 13:58

FTP可以通过很多软件实现,我们linux下面最常用的FTP服务器架设使用vsftpd软件 
vsftpd 是一个基于GPL发布的FTP服务器软件。其中的vs是“ Very Secure”的缩写,由此名称缩写可以看出,本服务器的初衷就是服务的安全性。 
当然,vsftpd也是REDHAT默认安装的ftp服务器软件 
后台进程:vsftpd 
类型:System V 服务 
使用端口:20(ftp-data)21(ftp) 
所需RPM包:vsftpd 
配置文件:/etc/vsftpd/vsftpd.conf
FTP的主动模式和被动模式很重要
主动模式: 
client 先连接服务器的 21端口(命令端口),然后client开放一个大于1024的端口等待服务器的20端口连接,21号端口的链接建立以后,服务器就用20去连接client开放的端口,简单来说就是服务器主动连客户端啦 
基于上面的连接方式,如果client端有个防火墙,服务器的20端口就连接不进入,导致会连接失败。 
被动模式:  
就是client开启大于1024的X端口连接服务器的21(命令端口),同时开启X+1端口 
当21号端口连接成功后,client会发送PASV命令,通知服务器自己处于被动模式,服务器收到这个消息后,就会开放一个大于1024的端口Y通知client,client接到通知后就会用X+1来连接服务器的Y端口,简单的说就是client主动连接服务器 
一般我们使用的是主动模式 
大家了解被动模式就可以了,当你架设FTP服务器,出现这样的情况,你应该想到可以使用被动模式来解决,当然防火墙一般也支持FTP的追踪模块,会自动识别自己发出的FTP数据请求。这样制动模式也能返回数据 
下面我们先安装vsftpd吧 
所有服务里面只有vsftpd 没有依耐关系,其他服务都要yum来安装或解决其依赖关系哈~ 
没有就安装下~

我们来说vsftpd的配置文件
大家切换到/etc/vsftpd目录 ,这个目录就是vsftpd的配置文件存放的目录 

第一个文件ftpusers是用户控制文件,在这个文件里面的用户,默认是不可以使用vsftpd服务的。 
第二个文件user_list默认功能和第一个一样,但是通过配置,我们可以让只有在第二个文件里的用户才能使用vsftpd服务,这样新加入的用户就不会自动拥有vsftp的使用权,这样可以让vsftpd服务器更加安全 
最后一个脚本vsftpd_conf_migrate.sh是vsftpd操作的一些变量和设置,这个不用管的 
当然,主角就是 vsftpd.conf ,配置vsftpd,我们操作最多的也就是这个文件了 
等会我们会介绍里面的内容 ,现在大家看看自己的 /etc/passwd文件,是不是多了一个ftp的用户? 
[root@rhel5 vsftpd]# cat /etc/passwd |grep ftp

大家还知道他的执行shell的特点吧
/sbin/nologin shell 
这个是虚拟用户使用的,不具有登陆系统的权限。他只能使用vsftpd这样的服务器登陆用 
还有这个用户的家目录是哪个,大家能从passwd文件中看出来吗? 
/var/ftp这个就是ftp用户的家目录

他和其他用户不一样,他的家目录没在/home下面,在匿名登陆的时候,系统默认使用的用户就是ftp用户 ,用户登陆成功后就会进入自己的家目录,所以匿名用户登陆就会进入 / var/ftp目录,下面我们看看 ftp家目录的权限
大家注意,家目录的权限是755,这个权限是不能改变的。切记!切记!! 
vsftpd安装好,默认就可以匿名下载,所以达到第一个功能,我们要做的就只是启动服务器 
使用service vsftpdstart来启动vsftpd服务  centos7 systemctl start vsftpd
也可以使用 chkconfig  vsftpd. 来打开2-5级别系统启动时启动vsftpd 

现在我们先用win下面的资源管理来测试ftp服务器 

成功登陆了
顺便在var/ftp/pub目录里面建立些文件,看能不能下载,可以下载哈~ 

刚才我们完成了匿名用户的测试,现在我们在linux下测试 
linux最经典的ftp client软件lftp 
使用lftp 软件:lftp  服务器IP地址 
这样就可以登陆进去了,使用“?”可以查看这个模式下可以使用的命令 
一般使用的命令有这几个:
ls 查看 
cd
切换目录 
put
文件名  上传  
get   
文件名  下载

下载的文件默认放在用户当前登陆的目录,所以用户一定要对当前的目录有写入权限

看下有没下载成功哈~
匿名用户默认不能上传哈~

下面我们使用ftp软件做client来登陆服务器,因为在救援模式下是没有lftp软件的,而且win下面也没有lftp软件,我们用命令提示符来做ftp的登陆
打开cmd 
ftp 192.168.0.188

用户名使用ftp,密码为空 

登陆successful 
下面我们学习匿名用户的上传功能,这个就比较麻烦了 
编辑/etc/vsftpd/vsftpd.conf这个文件

这个配置文件很简单,而且每行命令上面都有注释来解释命令的用处
anonymous_enable=YES 
是否允许匿名ftp(默认为YES),如否则选择NO,基于用户名与密码的访问。
anon_upload_enable=YES 
是否允许匿名ftp 用户上传(默认被注释即不支持) 
chroot_list_enable=YES  
是否将系统用户限制在自己的home目录下 
chroot下季我们还会测试的 
chroot_list_file=/etc/vsftpd/chroot_list 
如果chroot_list_enable=YES那么在/etc/vsftpd/chroot_list中列出的是被限制的用户的列表,这个和上面的连用

ftpd_banner=Welcome to blah FTP service.  
定制欢迎信息 

local_enable=YES 
是否允许本地用户登录  local_umask=022 
默认的umask码  
配置文件里面没有anon_umask,其实可以用这条, 权限掩码,比如umask是 022,你创建一个文件本来是666 就要 -022 = 644
dirmessage_enable=YES 
是否显示目录说明文件, 默认是YES 但需要手工创建.message文件 
这个.message,只有用命令登陆或者用工具,才可以看见,他不是一个弹出对话框,而是一段字符 
其他的一些参数,大家了解下就好了 
connect_from_port_20=YES 
是否确信端口传输来自20(ftp-data) 
chown_username=username 
是否改变上传文件的属主, 如果是需要输入一个系统用户名, 你可以把上传的文件都改成root 属主  
xferlog_file=/var/log/vsftpd.log  
ftp 传输日志的路径和名字默认是/var/log/vsftpd.log 
xferlog_std_format=YES  
是否使用标准的ftp xferlog 模式  
idle_session_timeout=600 
设置默认的断开不活跃session的时间  
data_connection_timeout=120 
设置数据传输超时时间  
ascii_upload_enable=YES 
ascii_download_enable=YES
 
是否使用ascii码方式上传和下载文件  
userlist_enable=YES 
在/etc/vsftpd/user_list 文件中列出用户不能访问FTP 服务器  
tcp_wrappers=YES 
是否支持tcp_wrappers 
userlist及tcp wrapper 下季我们会讲 
我们要配置了 
匿名用户上传需要注意这几个地方 
1、上传目录ftp用户的写入权限 
2
、服务器配置支持上传 
3
selinux支持上传
 
下面我们来一步一步的实现,先修改目录权限,创建一个上传用的目录,叫upload,分配ftp用户所有,目录权限是755 

OK了,就做第二个,修改配置文件
vim /etc/vsftpd/vsftpd.conf
设置行号命令 set nu
取消27和31行的注释,这两行的意思就是允许匿名用户上传文件 
第三步修改selinux ,这个也是很多教程没有的一步 
修改selinux有两种方法 
1、是图形界面 
2
、是命令行
 
我们先用图形界面 
system-config-selinux

选择boolean ,点FTP ,第三条,允许匿名用户上传文件,别修改目录的上下文为他要求的 

切记,选中后要等会才会出现勾,你别一直点哈,点一次就OK 
我们使用命令行来打开
使用getsebool -a |grep ftp 命令可以找到ftp的bool值,然后我们来改 
getsebool -a 是显示所有的selinux的布尔值,通过管道,查找与ftp相关的

使用setsebool -Pallow_ftpd-anon_write .命令设置布尔值 

下面我们准备修改上下文 
然后重新启动服务  匿名登录FTP现在我们匿名上传现在匿名上传的文件是禁止删除滴~这样匿名用户的上传就算成功了

使用vsftpd让匿名用户可以具有上传、下载、删除权限

 增加两行:

让匿名用户可以删除目录和文件:anon_other_write_enable=YES

让匿名用户可以下载自己上传的文件:anon_umask=022

 

0 0
原创粉丝点击