Linux下的ftp服务器搭建

FTP的主动模式和被动模式

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命令。

注意
在FTP客户连接服务器的整个过程中,控制信道是一直保持连接的,而数据传输通道是临时建立的;
主动模式建立数据传输通道是由服务器端发起的,服务器使用20端口连接客户端某一个大于1024的端口;
被动模式中建立数据传输通道是由客户端发起的,它使用一个大于1024的端口连接服务器的1024端口以上的某一个端口。

ftp服务器搭建

需求是在Linux中搭建一个ftp服务器在存储文件,创建一个ftp用户:upload,主目录是:/video,设置该用户不允许登录服务器,并需要限制该用户不能离开自己的主目录。
1.安装vsftpd

yum install vsftpd   

2.建立一个新用户upload

useradd -d /video -s /sbin/nologin upload 

-d 参数指定用户登入时的主目录, -s /sbin/nologin设置不允许通过ssh登录
为upload用户设置密码

passwd upload

按提示设置密码
3.配置vsftpd
vsftpd配置文件在/etc/vsftpd/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 #启用标准的日志格式
connect_from_port_20=YES #主动模式下,是否启用默认的20端口进行数据传输
listen=NO #vsftpd不是以独立的服务运行,要受到xinetd服务的管控,功能上会受到限制
chroot_list_enable=YES #开启限制用户在主目录的功能
chroot_list_file=/etc/vsftpd/chroot_list #在chroot_list文件中加入你要限制的用户名,一行一个用户
pam_service_name=vsftpd #虚拟用户使用PAM认证方式
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 #去除用户主目录的写权限

4.启动

service vsftpd start
阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页