NFS,SAMBA都是基于RPC的网络文件系统,用户能够挂载共享目录到本地来使用,与本地磁盘分区上的文件系统使用方式无区别。
FTP是不用RPC而基于C/S模式来运行的7层协议,提供文件传输服务。vim
一 两种工做模式windows
主动模式:服务端命令链接监听在端口21,数据链接使用端口20。客户端经过某个本地端口(如12340)去链接服务端,服务端经过21端口接收客户端的命令。当有数据传输时客户端又再打开一个本地端口12340+1(如这个端口已被占用,再+1)并通知服务端,服务端使用20端口主动去请求链接客户端新打开的端口,完成数据传输。安全
被动模式:服务端命令链接监听在端口21。客户端经过某个本地端口(如12340)去链接服务端,服务端经过21端口接收客户端的命令。当有数据传输需求时,服务端打开一个随机端口并通知客户端(服务端会发送两个数字如[123,31],客户端经过计算123*256+31的结果得知端口号),而后客户端再打开一个本地端口12340+1(如这个端口已被占用,再+1)去请求链接服务端打开的随机端口,完成数据传输。因为每次数据链接端口都是随机的,因此也就有了多用户同时下载功能。bash
客户端为了网络安全都有防火墙,通常不会容许外部的链接请求,从而致使主动模式的ftp数据传输失败。服务器工做于被动模式下的同时使用防火墙的链接追踪功能能够避免这个问题。服务器
二 数据传输格式
流式化数据有两种形式:文本格式/二进制格式。
不能流式化的数据不能经过网络发送,也不能存储到文件中(文件就是文件流)。
ftp能传输文本格式和二进制格式的数据。http传输二进制数据的功能,是基于mime协议以base64编码二进制格式数据为文本格式后再传输的。
数据传输安全
sftp(基于ssh协议)
ftps(基于ssl协议)网络
三 程序包
服务端程序:vsftpd
客户端程序:GUI(flashfxp,cuteftp),CLI(ftp,lftp,wget)
安装 yum -y install vsftpd ftpssh
主配置文件:/etc/vsftpd/vsftpd.conf(配置项行首无空格,等号两边无空格)
基于pam认证用户的配置文件:/etc/pam.d/vsftpd(rpm包方式安装才有,主要包括:身份检查/帐号检查/会话检查/修改密码检查等)
ftp用户家目录:/var/ftp/(匿名用户默认被禁锢在这个目录,windows上匿名用户登陆用anonymous)
全部三种类型的用户上传文件的umask都为077ui
四 匿名用户登陆控制编码
容许匿名用户登陆 anonymous_enable=YES 容许匿名用户上传(须要文件系统权限+服务权限),最好在/var/ftp目录下新建任意目录,并给这个目录加facl权限rwx给ftp用户 anon_upload_enable=YES #上传文件 anon_other_write_enable=YES #删除文件 anon_mkdir_write_enable=YES #建立目录 指定匿名用户上传文件的属主 chown_uploads=YES chown_username=ftp 若是开启了SELinux,还须要命令行中修改域 setsebool -P ftpd_full_access=on
五 本地用户登陆控制命令行
容许本地用户登陆 local_enable=YES 容许本地用户上传 write_enable=YES 匿名用户或ftp用户都默认被禁锢在家目录中,为了安全,本地用户也应该禁锢在各自家目录中 chroot_local_user=YES 或者使用下面的(用户名写入文件,每行一个,写入的所有禁锢) chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list 控制本地用户登陆机制 1./etc/pam.d/vsftpd中定义了规则,限制写在文件/etc/vsftpd/ftpusers文件中的用户不能登录。 2.还能够在主配置文件中设置 userlist_enable=YES #启用文件/etc/vsftpd/user_list userlist_deny=YES #默认值,表示黑名单,若是是NO则是白名单 3.ftpusers文件中的规则优先于user_list文件
六 虚拟用户登陆控制
建立虚拟用户库文件 cd /etc/vsftpd vim vuser.txt #写入用户名密码,单数行写用户名,双数行写密码 zhangsan 123456 lisi 123 db_load -T -t hash -f vuser.txt vuser.db chmod 600 vuser.db rm -rf vuser.txt 建立一个本地用户,用于虚拟用户映射 useradd -d /var/ftproot -s /sbin/nologin virtual chmod -Rf 755 /var/ftproot 提供pam认证规则,写入这个文件中/etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser 在主配置文件中支持虚拟用户 anonymous_enable=NO #启用虚拟用户必须关闭匿名用户 local_enable=YES guest_enable=YES guest_username=virtual #虚拟用户映射的本地用户名 pam_service_name=vsftpd.vu #pam规则配置文件 allow_writeable_chroot=yes #vsftpd2.2 中不支持这一项,能够不用 user_config_dir=/etc/vsftpd/vuser_dir #虚拟用户权限控制文件存放目录 给虚拟用户分别设置访问权限 mkdir /etc/vsftpd/vuser_dir vim /etc/vsftpd/vuser_dir/zhangsan anon_upload_enable=YES anon_other_write_enable=YES anon_mkdir_write_enable=YES 重启vsftpd服务便可检查虚拟用户登陆效果