博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
配置FTP服务
阅读量:5750 次
发布时间:2019-06-18

本文共 11785 字,大约阅读时间需要 39 分钟。

hot3.png

[toc]

配置FTP服务

扩展 vsftp使用mysql存放虚拟用户并验证

ftp的主动和被动模式

一、FTP介绍

我们之前传输文件所用的是rzsz命令,可以简单明了的就把我们所需的文件下载或者上传。但是有个缺陷,不可以上传或者下载大体积的文件。FTP就可以解决这个问题!

1.1 FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。

FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。

小公司用的多,大企业不用FTP,因为不安全。大多数的企业使用git。

二、使用vsftpd搭建ftp服务

2.1 安装服务:

centos上自带vsftpd

[root@xavi ~]# yum install -y vsftpd

2.2 创建用户:

[root@xavi ~]# useradd -s /sbin/nologin virftp

这儿可能会有疑问,我们创建了这个用户为什么不可以nologin呢?安全 然后我们就用到了如下虚拟用户:

2.3 配置虚拟用户:

[root@xavi ~]# vim /etc/vsftpd/vsftpd_login //奇数行为用户名,偶数行为密码,多个用户就写多行!
[root@xavi ~]# vim /etc/vsftpd/vsftpd_login//用户为zhdy密码为asd9577;zhdy02密码为asd9772xavi01linux001xavi02linux002

2.4 授权并把密码文件转换为二进制可识别配置文件:

[root@xavi ~]# chmod 600 /etc/vsftpd/vsftpd_login    //为了安全,不允许其他人修改,我们设置为600[root@xavi ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db     //再次把密码文件转换为计算机可以识别的配置文件。[root@xavi ~]# ls -l /etc/vsftpd/总用量 36-rw------- 1 root root   125 8月   3 2017 ftpusers-rw------- 1 root root   361 8月   3 2017 user_list-rw------- 1 root root  5030 8月   3 2017 vsftpd.conf-rwxr--r-- 1 root root   338 8月   3 2017 vsftpd_conf_migrate.sh-rw------- 1 root root    32 3月  29 13:10 vsftpd_login-rw-r--r-- 1 root root 12288 3月  29 13:11 vsftpd_login.db

2.5 创建虚拟用户的配置目录:

[root@xavi ~]# mkdir /etc/vsftpd/vsftpd_user_conf    //创建配置文件[root@xavi ~]# cd /etc/vsftpd/vsftpd_user_conf

2.6 创建用户配置文件(一定要和你创建的用户名字一致。)

vim xavi001 //加入如下内容local_root=/home/ftpuser/xavi     //虚拟用户的家目录anonymous_enable=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  //最大允许连接的clients客户端
[root@xavi ~]# cd /etc/vsftpd/vsftpd_user_conf[root@xavi vsftpd_user_conf]# vim xavi001local_root=/home/virftp/xavi001anonymous_enable=NOwrite_enable=YESlocal_umask=022anon_upload_enable=NOanon_mkdir_write_enable=NOidle_session_timeout=600data_connection_timeout=120max_clients=10

2.7 配置虚拟用户家目录:

[root@xavi vsftpd_user_conf]# mkdir /home/virftp/xavi01[root@xavi vsftpd_user_conf]# touch /home/virftp/xavi01/xavi.txt[root@xavi vsftpd_user_conf]# chown -R virftp:virftp /home/virftp

2.8 配置认证的路径+文件

[root@xavi vsftpd_user_conf]# vim /etc/pam.d/vsftpd#%PAM-1.0auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_loginaccount sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_loginsession    optional     pam_keyinit.so    force revokeauth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeedauth       required     pam_shells.soauth       include      password-authaccount    include      password-authsession    required     pam_loginuid.sosession    include      password-auth-----------------------------------------------------------//在最前面加上auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_loginaccount sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

mark

  • 查看下文件是否存在
[root@xavi vsftpd_user_conf]# ls /lib64/security/pam_userdb.so/lib64/security/pam_userdb.so

2.9 配置vsftpd的主配置文件:

[root@xavi vsftpd_user_conf]# vim /etc/vsftpd/vsftpd.conf

将anonymous_enable=YES 改为 anonymous_enable=NO

将#anon_upload_enable=YES 改为 anon_upload_enable=NO

将#anon_mkdir_write_enable=YES 改为 anon_mkdir_write_enable=NO

mark

//再最底下增加如下内容: chroot_local_user=YES guest_enable=YES guest_username=virftp virtual_use_local_privs=YES user_config_dir=/etc/vsftpd/vsftpd_user_conf allow_writeable_chroot=YES

user_config_dir:定义user用户的配置路径。

mark

2.10 启动并查看启动状态:

[root@xavi vsftpd_user_conf]# systemctl start vsftpd[root@xavi vsftpd_user_conf]# ps aux | grep vsftpdroot       2938  0.0  0.0  53216   580 ?        Ss   19:57   0:00 /usr/sbin/vsftpd /etcvsftpd/vsftpd.confroot       2940  0.0  0.0 112680   976 pts/0    S+   19:57   0:00 grep --color=auto vsftpd[root@xavi vsftpd_user_conf]# netstat -lntpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    tcp        0      0 0.0.0.0:111             0.0.0.0:*               LISTEN      1/systemd           tcp        0      0 0.0.0.0:20048           0.0.0.0:*               LISTEN      1128/rpc.mountd     tcp        0      0 192.168.122.1:53        0.0.0.0:*               LISTEN      1882/dnsmasq        tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1064/sshd           tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      1061/cupsd          tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1694/master         tcp        0      0 0.0.0.0:54910           0.0.0.0:*               LISTEN      1067/rpc.statd      tcp        0      0 0.0.0.0:37663           0.0.0.0:*               LISTEN      -                   tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   tcp6       0      0 :::46701                :::*                    LISTEN      -                   tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           tcp6       0      0 :::20048                :::*                    LISTEN      1128/rpc.mountd     tcp6       0      0 :::21                   :::*                    LISTEN      2938/vsftpd         tcp6       0      0 :::60662                :::*                    LISTEN      1067/rpc.statd      tcp6       0      0 :::22                   :::*                    LISTEN      1064/sshd           tcp6       0      0 ::1:631                 :::*                    LISTEN      1061/cupsd          tcp6       0      0 ::1:25                  :::*                    LISTEN      1694/master         tcp6       0      0 :::2049                 :::*                    LISTEN      -

总结:21端口FTP; 22端口SSHD; 23端口TELNET

三、在客户端的FTP测试

3.1 服务器端安装

[root@xavi vsftpd_user_conf]# yum install lftp

3.2 查看服务端的文件

[root@xavi ~]# lftp xavi01@127.0.0.1口令: lftp xavi01@127.0.0.1:~> ls         drwxr-xr-x    2 1006     1007           22 Mar 29 11:40 xavi001lftp xavi01@127.0.0.1:/> ?    !
(commands) alias [
[
]] attach [PID] bookmark [SUBCMD] cache [SUBCMD] cat [-b]
cd
chmod [OPTS] mode file... close [-a] [re]cls [opts] [path/][pattern] debug [
|off] [-o
] du [options]
exit [
|bg] get [OPTS]
[-o
] glob [OPTS]
help [
] history -w file|-r file|-c|-l [cnt] jobs [-v] [
] kill all|
lcd
lftp [OPTS]
ln [-s]
ls [
] mget [OPTS]
mirror [OPTS] [remote [local]] mkdir [-p]
module name [args] more
mput [OPTS]
mrm
mv
[re]nlist [
] open [OPTS]
pget [OPTS]
[-o
] put [OPTS]
[-o
] pwd [-p] queue [OPTS] [
] quote
repeat [OPTS] [delay] [command] rm [-r] [-f]
rmdir [-f]
scache [
] set [OPT] [
[
]] site
source
torrent [-O
]
... user
[
] wait [
] zcat
zmore

3.3 输入 ? 是用来查看操作的命令。使用 get+文件名 来下载一个文件到根目录!

mark

报错!

lftp xavi01@127.0.0.1:/> get xavi.txtget: Access failed: 550 Failed to open file. (xavi.txt)lftp xavi01@127.0.0.1:/> exit

四、使用xshell来传输,其原理就是:使用sftp模式登录服务器

mark

mark

输如账号密码链接,还是主机xavi001的账号密码

mark

4.1 实验

sftp:/tmp> cd /usr/local/src/sftp:/usr/local/src> lsdrwxr-xr-x   10 root     root         4096 Mar 13 23:35 .drwxr-xr-x   21 root     root          254 Mar 13 23:43 ..-rw-r--r--    1 root     root     21040959 Mar 18  2017 mysql-5.5.55.tar.gzdrwxr-xr-x   31 7161     31415        4096 Mar 18  2017 mysql-5.5.55-rw-r--r--    1 root     root     316320366 Mar 18  2017 mysql-5.6.36-linux-glibc2.5-x86_64.tar.gz-rw-r--r--    1 root     root     541295045 Feb 28 22:23 mariadb-10.2.6-linux-glibc_214-x86_64.tar.gz-rw-r--r--    1 root     root      8638793 Oct 21 03:39 httpd-2.4.29.tar.gz-rw-r--r--    1 root     root      1072661 Oct 23 01:33 apr-1.6.3.tar.gz-rw-r--r--    1 root     root       554301 Oct 23 01:33 apr-util-1.6.1.tar.gzdrwxr-xr-x   11 501      games        4096 Mar 17 15:57 httpd-2.4.29drwxr-xr-x   28 xavidsf  xavidsf      4096 Mar 17 15:33 apr-1.6.3drwxr-xr-x   21 xavidsf  xavidsf      4096 Mar 17 15:40 apr-util-1.6.1drwxr-xr-x   17 xavi     xavi         4096 Mar 13 22:53 php-5.6.30-rw-r--r--    1 root     root     15011816 Jan 19  2017 php-5.6.30.tar.bz2-rw-r--r--    1 root     root     19274631 Mar  2 11:14 php-5.6.30.tar.gz-rw-r--r--    1 root     root     15732452 Jun  7  2017 php-7.1.6.tar.bz2drwxrwxr-x   19 xavi     xavi         4096 Mar  2 16:02 php-7.1.6-rw-r--r--    1 root     root       230093 Mar 11 20:35 phpredis-develop.zipdrwxr-xr-x   11 root     root         4096 Mar 11 20:43 phpredis-develop-rw-r--r--    1 root     root     314581668 Nov 28  2016 mysql-5.6.35-linux-glibc2.5-x86_64.tar.gz-rw-r--r--    1 root     root     19274631 Jan 19  2017 php-5.6.30.tar.gz.1-rw-r--r--    1 root     root       981093 Jul 11  2017 nginx-1.12.1.tar.gzdrwxr-xr-x    9 xavidsf  xavidsf       186 Mar 13 23:40 nginx-1.12.1sftp:/usr/local/src> get nginx-1.12.1.tar.gzFetching /usr/local/src/nginx-1.12.1.tar.gz to nginx-1.12.1.tar.gzsftp: received 958 KB in 0.06 seconds

在桌面找到了nginx的安装包 mark

五、xshell使用xftp传输文件

  • 在xshell界面上按下“ctrl+alt+F”弹出以下对话框

mark

  • 点击“Download Xftp” mark

  • 点击下载链接 mark

  • 选择评估版 mark

  • 填入信息 mark

  • 提示在邮箱里有下载链接 mark

  • 下载完成后,开始安装,注意选择免费版 mark

  • 安装完成后,在打开的虚拟机界面上按下“ctrl+Alt+F”,输入账号密码,如下: mark

  • 选中文件后直接鼠标拖拽就可以到达window界面中 mark

六、使用pure-ftpd搭建ftp服务

6.1 安装并配置pure-ftpd

[root@xavi ~]# yum install -y pure-ftpd[root@xavi ~]# vim /etc/pure-ftpd/pure-ftpd.conf#找到这行,删除前面#号# PureDB                        /etc/pure-ftpd/pureftpd.pdb

mark

6.2 开启pure-ftpd服务,这里注意vsftpd服务和pure-ftpd服务都是使用了21端口,必须关闭一个才能使用

[root@xavi ~]# systemctl stop vsftpd[root@xavi ~]# systemctl start pure-ftpd    [root@xavi ~]#  ps aux | grep pure-ftpdroot       3001  0.0  0.0 202480  1208 ?        Ss   10:11   0:00 pure-ftpd (SERVER)root       3003  0.0  0.0 112680   972 pts/0    S+   10:11   0:00 grep --color=auto pure-ftpd

mark

6.3 创建一个用户

[root@xavi ~]# mkdir /data/ftp  //创建目录[root@xavi ~]# useradd -u 1010 pure-ftp   //创建系统用户[root@xavi ~]#  chown -R pure-ftp:pure-ftp /data/ftp/[root@xavi ~]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp/     //创建虚拟帐号,-pw设定密码,-u系统用户,-d指定家目录Password:

pure-pw用法

[root@xavi ~]# pure-pwUsage :pure-pw useradd 
[-f
] -u
[-g
] -D/-d
[-c
] [-t
] [-T
] [-n
] [-N
] [-q
] [-Q
] [-r
/
] [-R
/
] [-i
/
] [-I
/
] [-y
] [-z
-
] [-m]pure-pw usermod
-f
-u
[-g
] -D/-d
-[c
] [-t
] [-T
] [-n
] [-N
] [-q
] [-Q
] [-r
/
] [-R
/
] [-i
/
] [-I
/
] [-y
] [-z
-
] [-m]pure-pw userdel
[-f
] [-m]pure-pw passwd
[-f
] [-m]pure-pw show
[-f
]pure-pw mkdb [
[-f
]] [-F
]pure-pw list [-f
]-d
: chroot user (recommended)-D
: don't chroot user-

6.4 新建一个文本稳定并测试

[root@xavi ~]# pure-pw  //关键一步[root@xavi ~]# touch /data/ftp/123.txt[root@xavi ~]# lftp ftp_usera@127.0.0.1口令: lftp ftp_usera@127.0.0.1:~> ls      drwxr-xr-x    2 1010       pure-ftp           21 Mar 30 10:20 .drwxr-xr-x    2 1010       pure-ftp           21 Mar 30 10:20 ..-rw-r--r--    1 0          0                   0 Mar 30 10:20 123.txt

6.5 将pure-ftp下文件属性改为与系统文件属性相同1010

[root@xavi ~]# chown pure-ftp:pure-ftp /data/ftp/123.txt[root@xavi ~]# lftp ftp_usera@127.0.0.1口令: lftp ftp_usera@127.0.0.1:~> ls      drwxr-xr-x    2 1010       pure-ftp           21 Mar 30 10:20 .drwxr-xr-x    2 1010       pure-ftp           21 Mar 30 10:20 ..-rw-r--r--    1 1010       pure-ftp            0 Mar 30 10:20 123.txt

转载于:https://my.oschina.net/u/3960917/blog/2992323

你可能感兴趣的文章
angular-bootstrap ui-date组件问题总结
查看>>
读书笔记--C++ Template(The complete guide)--Chapter3--类模板
查看>>
poj 3267 -- The Cow Lexicon
查看>>
[经验转帖]在豆瓣上直接下载你喜欢的书
查看>>
[Asp.net core]bootstrap分页
查看>>
jee 命令行打包war(转)
查看>>
PostgreSQL表空间_数据库_模式_表_用户角色之间的关系[转]
查看>>
Linux常见命令(二)
查看>>
纯数学教程 Page 325 例LXVIII (9)
查看>>
document.write()的用法和清空的原因
查看>>
【EXLUCAS模板】【拓展卢卡斯详解】【组合数高级篇】LuoGu P4720
查看>>
PyCharm切换解释器
查看>>
一些基本的灰度变换函数
查看>>
java中的@Override是否需要
查看>>
postgresql connection refused 5432 win10
查看>>
Validform:一行代码搞定整站的表单验证!
查看>>
Xcode快捷键
查看>>
中间件
查看>>
Day5 - Python基础5 常用模块学习
查看>>
SQLAlchemy的使用---数据库的创建与连接
查看>>