实验环境:在redhat6.5中安装配置FTP服务,并使用一台win7系统访问验证。
理论:
FTP连接方式
支持两种连接模式:主动模式(Port)和被动模式(Pasv),这两种模式都是针对数据链路进行的,与控制链路无关。
- 主动模式工作过程:
1.客户端从自己的一个任意端口(N >
1024)和FTP服务器的21端口建立控制链路
2.然后客户端发出Port指令告诉服务器连接自己的N+1端口来建立一条数据通道
3.当FTP服务器接到这一指令时,会使用20端口连接用户在Port指令中指定的端口号N+1来发送数据 - 被动模式工作过程:
1.客户端从自己的一个任意端口(N >
1024)和FTP服务器的21端口建立控制链路
2.然后客户端发送Pasv指令,告诉服务器自己要连接服务器的某一个端口
3.如果服务器上的这个端口是空闲可用的,那么服务器会返回确认信息,之后数据传输通道被建立;但如果服务器上的这个端口被另一个资源所使用,那么服务器返回不确认的信息,那么这是客户端会再次发送Pasv命令。操作环境
1 操作系统 : redhat 6.5
IP 地址 : 192.168.10.128
主机名 : zred
2 操作系统:win 7
IP地址: 192.168.10.10
确认两台主机互联互通。
步骤
需求:在Linux中搭建一个ftp服务器在存储文件,创建一个ftp用户:mod,主目录是:/home/mod,设置该用户不允许登录服务器,并需要限制该用户不能离开自己的主目录。
一,首先我们需要vsftp包,显示如下图则表示已安装 vsftp软件,如果未显示则需要安装vsftpd软件。
[[email protected] vuser]# rpm -q vsftpd
如果没有则通过yarm源进行安装
二,安装完成后,我们进入到ftp的根目录,默认是/etc/vsftpd/文件中进行配置。
/etc/vsftpd/vsftpd.conf:vsftpd
的核心配置文件
/etc/vsftpd/ftpusers:用于指定哪些用户不能访问FTP 服务器。
黑名单
/etc/vsftpd/user_list:指定允许使用vsftpd 的用户列表文件。 白名单/etc/vsftpd/chroot_list:指定允许使用vsftpd 的用户列表文件。 控制名单下的目录能不能离开ftp根目录、
其中
vsftpd.conf的具体配置如下:
#----匿名用户设置---- anonymous_enable=NO #禁止匿名用户登录 #----本地用户设置---- local_enable=YES #允许本地用户登录ftp服务器 write_enable=YES #允许用户想服务器执行写入操作 local_umask=022 #设置服务器上本地用户创建文件的权限掩码
#----欢迎语设置---- dirmessage_enable=YES #启用目录提示消息 #----日志文件设置---- xferlog_enable=YES #启用日志文件功能,记录于/var/log/xferlog xferlog_std_format=YES #启用标准的日志格式 #----FTP工作方式与端口设置---- connect_from_port_20=YES #主动模式下,是否启用默认的20端口进行数据传输 #----与连接相关的设置---- listen=NO #vsftpd不是以独立的服务运行,要受到xinetd服务的管控,功能上会受到限制 listen_ipv6=YES #----控制用户是否允许切换到上级目录---- chroot_list_enable=YES #开启限制用户在主目录的功能 chroot_list_file=/etc/vsftpd/chroot_list #在chroot_list文件中加入你要限制的用户名,一行一个用户 #----虚拟用户设置---- pam_service_name=vsftpd #虚拟用户使用PAM认证方式 #----控制用户访问(通过vsftpd.user_list和ftpusers文件来实现)---- userlist_enable=YES #是否启用userlist_file文件 userlist_file=/etc/vsftpd/user_list #允许user_list文件中加入的用户访问ftp服务器 #----控制主机访问---- tcp_wrappers=YES #vsftpd服务器检查/etc/hosts.allow和/etc/hosts.deny中的设置,来决定请求连接的主机,是否允许访问该FTP服务器 #----其它设置---- allow_writeable_chroot=YES #去除用户主目录的写权限
三,创建mod用户,并设置密码。
[[email protected] vsftpd]# useradd -d /home/mod -m mod
[[email protected]
vsftpd]# passwd mod四,开启服务。
关闭防火墙:[[email protected] vsftpd]# service iptables stop
启动ftp服务器:[[email protected] ~]# service vsftpd
restart赋权,将ftp指定的根目录赋权为777权限:
[[email protected] ~]# chmod 777 /var/ftp/pub/
[[email protected] ~]# ls -lh
/var/ftp检查SElinux状态并关闭
/usr/sbin/sestatus -v ##如果SELinux status参数为enabled即为开启状态
# sentenforce 0 ##关闭它
在win7系统中运行CMD,输入ftp “linux主机ip”进行访问。
-
如果想让匿名用户拥有添加和删除文件的权限则需要修改主配置文件中的:
将anon前的#去掉。
再在MKDIR的下面添加一行。
重启服务,这样,匿名用户就拥有最大的权限了。
下一篇接着介绍如何使用本地用户以及各种安全策略。
原文地址:http://blog.51cto.com/13706064/2148177