您的位置:首页 > 编程语言 > PHP开发

ftp介绍和搭建

2018-08-27 18:56 441 查看

FTP介绍

FTP是File Transfer Protocol(文件传输协议的英文简称),用于internet上控制文件双向传输,ftp主要作用就是让用户连接一个远程计算机(安装了FTP程序),并查看远程计算机中的文件,可以把远程计算机中的文件复制到本地计算机中,或者把文件传输到远程计算机当中。
什么情况下使用FTP;在远程终端中操作linux时,有时候我们需要传输一个很大的文件到服务器,或者需要从服务器下载一个很大的文件。通常我们使用rzsz命令就可以满足大部分需求,但是当文件大于4GB以上时,rzsz会不支持大文件传输,这时候rzsz这个命令就无能为力了。我们就需要使用一个能够传输大文件的传输协议,这个就是文件传输协议,即FTP传输工具
FTP因为安全性较差,大的企业中应用到的地方不多,因为大企业都会有自己的一套传输控制的方案

使用vsftp搭建ftp服务

安装vsftpd

[root@aaa /]# yum install -y vsftpd
已加载插件:fastestmirror
base | 3.6 kB 00:00:00    
epel/x86_64/metalink | 8.3 kB 00:00:00    
epel    
已安装:
vsftpd.x86_64 0:3.0.2-22.el7                                                                                                                                                                                                                                                
完毕!

创建运行的用户,vsftp可以使用系统级别的用户,该用户是系统用户,可以登录到系统当中,但是这样又会不安全,所以vsftp有虚拟用户这一设置,虚拟用户建立在真实用户上,虚拟用户可以登录访问vsftp,但是不可以登录系统,增加了安全性
创建真实用户和虚拟用户,虚拟用户在配置文件中定义,奇数行为用户名。偶数行为用户的密码,创建后保存退出

[root@aaa /]# useradd -s /sbin/nologin vsftpd
[root@aaa /]# vim /etc/vsftpd/vsftpd_login
user1
passwd1
~    

使用db_load转换用户密码配置文件  db_load -T -t hash -f   密码配置文件   转换后的文件.db
 将虚拟用户配置文件权限设置为600只允许root可读,其他用户无权限访问,并把虚拟用户配置文件转为二进制的文件

[root@aaa /]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@aaa /]# ll -h /etc/vsftpd/
总用量 36K
-rw------- 1 root root 125 8月 3 2017 ftpusers
-rw------- 1 root root 361 8月 3 2017 user_list
-rw------- 1 root root 5.0K 8月 3 2017 vsftpd.conf
-rwxr--r-- 1 root root 338 8月 3 2017 vsftpd_conf_migrate.sh
-rw------- 1 root root 14 8月 18 09:05 vsftpd_login
-rw-r--r-- 1 root root 12K 8月 18 09:10 vsftpd_login.db

创建虚拟用户配置文件,创建虚拟用户配置文件保存目录,并配置文件必须要和虚拟用户配置文件中的用户名保持一致

[root@aaa /]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@aaa /]# cd /etc/vsftpd/vsftpd_user_conf/
[root@aaa vsftpd_user_conf]# vim user1
local_root=/home/vsftpd/user1              指定虚拟用户的家目录,即可访问的目录
anonymous_enable=NO                        是否禁止匿名用户访问,YES允许/NO拒绝
write_enable=YES                           是否设置为只读
local_umask=022                            创建的文件默认权限
anon_upload_enable=NO                      匿名用户是否可写
anon_mkdir_write_enable=NO                 匿名用户是否可读
idle_session_timeout=600                   链接的最大时间,超过这个时间为超时链接,会被结束掉
data_connection_timeout=120                数据最大保持时间
max_clients=10                             最大链接数

创建虚拟用户的访问目录,创建测试文件并将虚拟用户家目录设置为指定的所属主、所属组

[root@aaa vsftpd_user_conf]# mkdir /home/vsftpd/user1
[root@aaa vsftpd_user_conf]# touch /home/vsftpd/user1/index.html
[root@aaa vsftpd_user_conf]# chown -R vsftpd:vsftpd /home/vsftpd/

在vsftp的模块配置文件中添加保存虚拟用户和用户密码的文件位置,指定支持库的位置。
加入如下两行,注意的是在lib64这个位置,是区分系统位数的,如lib32对应的是32位的操作系统

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
[root@aaa vsftpd_user_conf]# vim /etc/pam.d/vsftpd
#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth

修改vsftpd的主配置文件,这个文件起到全局作用,其配置生效的优先级大于虚拟用户配置文件中的配置
在主配置文件中修改下列内容,取消注释并将YES改为NO

[root@aaa vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO                 禁止匿名用户访问
anon_upload_enable=NO               禁止匿名用户写入
anon_mkdir_write_enable=NO          禁止匿名用户读取

主配置文件中添加新的配置项

chroot_local_user=YES
guest_enable=YES
guest_username=vsftpd
vurtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf
allow_writeable_chroot=YES
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  vsftpd