FTP 是 File Transfer Protocol(文件传输协议)的英文简称,用于 Internet 上的文件的双向传输。使用 FTP 来传输时,是具备必定程度的危险性, 由于数据在因特网上面是彻底没有受到保护的明文传输方式!VSFTP是一个基于GPL发布的类Unix系统上使用的FTP服务器软件,它的全称是Very Secure FTP, 从名称定义上基本能够看出,这是为了解决 ftp 传输安全性问题的。数据库
FTP 客户端首先和服务器的 TCP 21 端口创建链接,用来发送命令,客户端须要接收数据的时候在这个通道上发送 PORT 命令。PORT 命令包含了客户端用什么端口接收数据。在传送数据的时候,服务器端经过本身的 TCP 20 端口链接至客户端的指定端口发送数据。vim
FTP 客户端首先和服务器的 TCP 21 端口创建链接,用来创建控制通道发送命令,但创建链接后客户端发送 Pasv 命令。 服务器收到 Pasv 命令后,打开一个临时端口(端口大于 1023 小于 65535)而且通知客户端链接这个端口进行传送数据,客户端进而链接 FTP 服务器的临时端口进行数据传输。centos
Linux的红帽发行版中VSFTP默认采用的是Binary模式,这样能保证绝大多数文件传输后能正常使用 。
切换方式:在ftp>提示符下输入ascii即转换到ACSII方式,输入bin,即转换到Binary方式。安全
服务端软件名:vsftpd 客户端软件名:ftp 服务名:vsftpd 端口号:20、2一、指定范围内随机端口 配置文件:/etc/vsftpd/vsftpd.conf
用户帐号名称:ftp或anonymous
用户帐号密码:无密码
工做目录:/var/ftp
默认权限:默承认下载不可上传,上传权限由两部分组成(主配置文件和文件系统,配置文件中配置上传权限,对该目录具备写权限。)服务器
用户帐号名称:本地用户(/etc/passwd)
用户帐号密码:用户密码(/etc/shadow)
工做目录:登陆用户的宿主目录
权限:最大权限(drwx------)测试
建立虚拟用户用来代替本地用户,减小本地用户曝光率
使用本地用户做为虚拟用户的映射用户,为虚拟用户提供工做目录和权限控制
可以设置严格的权限ui
匿名用户相关配置参数操作系统
一、安装服务 yum install vsftpd -y 二、匿名用户相关配置 /etc/vsftpd/vsftpd.conf pasv_enable=YES #设置链接模式 pasv_min_port=3000 #随机最小端口范围 pasv_max_port=5000 #随机最大端口范围 anonymous_enable=YES #启用匿名访问 anon_umask=022 #匿名用户所上传文件的权限掩码 anon_root=/var/ftp/anno #匿名用户的 FTP 根目录 anon_upload_enable=YES #容许上传文件 anon_mkdir_write_enable=YES #容许建立目录 anon_other_write_enable=YES #开放其余写入权(删除、覆盖、重命名) anon_max_rate=0 #限制最大传输速率(0 为不限速,单位:bytes/秒) 三、实现文件上传 a. 修改配置文件 anon_upload_enable=YES anon_root=/var/ftp b. 在/var/ftp/下建立上传目录 mkdir /var/ftp/anon c. 修改上传目录的权限或全部者,让匿名用户有写入权限 chown ftp:ftp /var/ftp/anon d. 客户机登陆 ftp> [root@centos ~]# ftp 100.100.100.103 Name (100.100.100.103:root): ftp 331 Please specify the password. Password: 230 Login successful. ftp> cd anon ftp> put install.log 28529 bytes sent in 0.0821 secs (347.54 Kbytes/sec) 四、实现建立目录和文件其余操做 添加以下配置。 anon_mkdir_write_enable=YES #容许建立目录 anon_other_write_enable=YES #删除文件、文件更名、文件覆盖 五、进入到目录弹出信息 在对应目录下建立 .message 文件,并写入相应内容 确认dirmessage_enable=YES 六、下载上传的文件权限 默认状况下开放上传权限后,上传的文件是没法被下载的,由于文件的其余人位置没有r权限 anon_umask=022
本地用户相关配置code
local_enable=YES #是否启用本地系统用户 local_umask=022 #本地用户所上传文件的权限掩码 local_root=/var/ftp #设置本地用户的 FTP 根目录 默认在当前用户的家目录下 chroot_local_user=YES #只能本身的家目录, chroot_list_enable=YES #开启容许切换目录用户文件 chroot_list_file=/etc/vsftpd/chroot_list #写入该文件中的用户能够随意切换目录 local_max_rate=0 #限制最大传输速率 ftpd_banner=Welcome to blah FTP service #用户登陆时显示的欢迎信息 userlist_enable=YES & userlist_deny=YES #禁止/etc/vsftpd/user_list 文件中出现的用户名登陆 FTP (默认) userlist_enable=YES & userlist_deny=NO #仅容许/etc/vsftpd/user_list 文件中出现的用户名登陆 FTP 配置文件:/etc/vsftpd/ftpusers /etc/vsftpd/ftpusers 文件中出现的用户名登陆 FTP,权限比 user_list 更高,即时生效 a. useradd -s /sbin/nologin huahua #服务端须要建立用户并设置密码(所建立的用户,不须要登陆操做系统,仅用来登陆VSFTP) b. passwd huahua #密码 c. 客户机登陆 [root@centos ~]# ftp 100.100.100.103 Connected to 100.100.100.103 (100.100.100.103). Name (100.100.100.103:root): huahua 331 Please specify the password. Password: 230 Login successful.
vim /etc/vsftpd/vsftpd.user(单数行用户名,偶数密码) zs 123456
二、将上一步创建的vsftpd.user文件转成数据库密码文件进程
db_load -T -t hash -f vsftpd.user vsftpd.db chmod 600 vsftpd.db #修改权限,保证安全性
三、建立 FTP 虚拟用户的映射用户,并制定其用户家目录
useradd -d /var/ftp_virtual_root -s /sbin/nologin virtual
四、创建支持虚拟用户的 PAM 认证文件,添加虚拟用户支持
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.pam vim /etc/pam.d/vsftpd.pam(清空源文件内容,加入下面两条) auth required pam_userdb.so db=/etc/vsftpd/vsftpd account required pam_userdb.so db=/etc/vsftpd/vsftpd 在 vsftpd.conf 文件中添加支持配置 修改: pam_service_name=vsftpd.pam 添加: guest_enable=YES guest_username=virtual user_config_dir=/etc/vsftpd/dir/ #指定用户配置目录
五、为虚拟用户创建独立的配置文件,启动服务并测试
a、修改配置文件,将主配置文件中自定义的匿名用户相关设置注释掉,防止主配置覆盖用户配置 cd dir/ vim zs anon_upload_enable=YES #用户能够上传 anon_mkdir_write_enable=YES #容许建立目录 用户能够修改文件名 anon_other_write_enable=YES #容许重名和删除文件、覆盖 b、给映射用户的家目录,设置让虚拟用户有读权限 chmod a+r /var/ftp_virtual_root