第二十五课预习笔记--FTP

15.1 FTP介绍

FTP是File Transfer Protocol(文件传输协议,简称文传协议)的英文简称,用于在Internet上控制文件的双向传输。
FTP的主要作用就是让用户连接一个远程计算机(这些计算机上运行着FTP服务器程序),并查看远程计算机中的文件,然后把文件从远程计算机复制到本地计算机,或把本地计算机的文件传送到远程计算机。
FTP小公司用的多,大企业不用FTP,因为不安全。

 

15.2-15-3 使用vsftpd搭建ftp服务

安装vsftpd。

yum install -y vsftpd

创建普通用户:virftp

useradd -s /sbin/nologin virftp

在 /etc/vsftpd/vsftpd_login 添加虚拟用户名、密码,用来映射普通用户。内容如下,奇数行为用户名,偶数行为密码,多个用户就写多行

[root@liang-00 ~]# vim /etc/vsftpd/vsftpd_login 
[root@liang-00 ~]# cat !$
cat /etc/vsftpd/vsftpd_login
testuser1
123456
[root@liang-00 ~]# 

权限设置:

chmod 600 /etc/vsftpd/vsftpd_login

将创建的文本文件转换成二进制文件。

db_load -T -t hash -f    /etc/vsftpd/vsftpd_login    /etc/vsftpd/vsftpd_login.db

[root@liang-00 ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@liang-00 ~]# ll /etc/vsftpd/
total 36
-rw------- 1 root root   125 Oct 31 03:45 ftpusers
-rw------- 1 root root   361 Oct 31 03:45 user_list
-rw------- 1 root root  5116 Oct 31 03:45 vsftpd.conf
-rwxr--r-- 1 root root   338 Oct 31 03:45 vsftpd_conf_migrate.sh
-rw------- 1 root root    17 Dec 22 13:39 vsftpd_login
-rw-r--r-- 1 root root 12288 Dec 22 13:43 vsftpd_login.db
[root@liang-00 ~]# 

创建虚拟用户配置文件所在的目录。

mkdir /etc/vsftpd/vsftpd_user_conf

进入/etc/vsftpd/vsftpd_user_conf目录,创建虚拟用户配置文件(文件名字要和用户名字保持一致)。

[root@liang-00 ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@liang-00 ~]# cd /etc/vsftpd/vsftpd_user_conf
[root@liang-00 vsftpd_user_conf]# vim testuser1
[root@liang-00 vsftpd_user_conf]# 

添加内容在虚拟用户配置文件中:

local_root=/home/virftp/testuser1    定义虚拟用户的家目录
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    最大客户端

创建虚拟用户家目录:

mkdir /home/virftp/testuser1

更改家目录属主属组:

chown -R virftp:virftp /home/virftp

添加密码文件(非常重要)用于登录时比对用户名、密码:

vim /etc/pam.d/vsftpd

607bcd2edcfc77588bf133748851b5c32d6.jpg

设置vsftpd配置文件:

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

文件最后添加:

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

 

启动vsftpd服务(端口为21):

[root@liang-00 vsftpd_user_conf]# systemctl start vsftpd
[root@liang-00 vsftpd_user_conf]# ps aux|grep vsftp
root      4761  0.0  0.0  53260   572 ?        Ss   14:03   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      4770  0.0  0.0 112704   972 pts/0    S+   14:03   0:00 grep --color=auto vsftp
[root@liang-00 vsftpd_user_conf]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:2049            0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:37064           0.0.0.0:*               LISTEN      -                   
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      3966/rpc.mountd     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      967/sshd            
tcp        0      0 0.0.0.0:38649           0.0.0.0:*               LISTEN      1955/rpc.statd      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1229/master         
tcp6       0      0 :::2049                 :::*                    LISTEN      -                   
tcp6       0      0 :::36201                :::*                    LISTEN      -                   
tcp6       0      0 :::42378                :::*                    LISTEN      1955/rpc.statd      
tcp6       0      0 :::111                  :::*                    LISTEN      1/systemd           
tcp6       0      0 :::20048                :::*                    LISTEN      3966/rpc.mountd     
tcp6       0      0 :::21                   :::*                    LISTEN      4761/vsftpd         
tcp6       0      0 :::22                   :::*                    LISTEN      967/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1229/master         
[root@liang-00 vsftpd_user_conf]# 

 

测试:

可以在Windows中安装filezilla client 来测试。

在Linux中安装lftp来测试:

yum install -y lftp

登录ftp服务器:

[root@liang-00 vsftpd_user_conf]# lftp testuser1@127.0.0.1
Password: 
lftp testuser1@127.0.0.1:~> ls    
-rw-r--r--    1 1003     1003            0 Dec 22 05:52 liang.txt
lftp testuser1@127.0.0.1:/> 

查看可以使用的命令:

lftp testuser1@127.0.0.1:/> ?
    !<shell-command>                     (commands)                           alias [<name> [<value>]]
    attach [PID]                         bookmark [SUBCMD]                    cache [SUBCMD]
    cat [-b] <files>                     cd <rdir>                            chmod [OPTS] mode file...
    close [-a]                           [re]cls [opts] [path/][pattern]      debug [<level>|off] [-o <file>]
    du [options] <dirs>                  exit [<code>|bg]                     get [OPTS] <rfile> [-o <lfile>]
    glob [OPTS] <cmd> <args>             help [<cmd>]                         history -w file|-r file|-c|-l [cnt]
    jobs [-v] [<job_no...>]              kill all|<job_no>                    lcd <ldir>
    lftp [OPTS] <site>                   ln [-s] <file1> <file2>              ls [<args>]
    mget [OPTS] <files>                  mirror [OPTS] [remote [local]]       mkdir [-p] <dirs>
    module name [args]                   more <files>                         mput [OPTS] <files>
    mrm <files>                          mv <file1> <file2>                   [re]nlist [<args>]
    open [OPTS] <site>                   pget [OPTS] <rfile> [-o <lfile>]     put [OPTS] <lfile> [-o <rfile>]
    pwd [-p]                             queue [OPTS] [<cmd>]                 quote <cmd>
    repeat [OPTS] [delay] [command]      rm [-r] [-f] <files>                 rmdir [-f] <dirs>
    scache [<session_no>]                set [OPT] [<var> [<val>]]            site <site-cmd>
    source <file>                        torrent [-O <dir>] <file|URL>...     user <user|URL> [<pass>]
    wait [<jobno>]                       zcat <files>                         zmore <files>
lftp testuser1@127.0.0.1:/> 

常用的命令有:put get。

从ftp服务器中下载liang.txt(文件在服务器中的位置为 /home/virftp/testuser1/liang.txt)文件(下载到当前目录):

lftp testuser1@127.0.0.1:~> get liang.txt
lftp testuser1@127.0.0.1:/> quit
[root@liang-00 ~]# ls
anaconda-ks.cfg  grep  liang.txt  sed
[root@liang-00 ~]#

 

使用sftp下载ftp服务器文件。

在xshell中新建会话sftp:

40260380c4e7eabfa40d64724bee211d50b.jpg

连接后就可以在ftp服务器中下载、上传文件了。

e1c304ebe6c61238de15cb862c8fc8e5d2e.jpg

 

15.4 xshell使用xftp传输文件

在服务器会话中用 ctrl+alt+f    打开xftp。

可以直接拖动文件到windows中。

56622738ef388cb429a966c1fd7b3996b41.jpg

 

15.5 使用pure-ftpd搭建ftp服务

 

pure-ftpd比vsftp更加简单。

安装 pure-ftpd:

yum install -y pure-ftpd

更改配置文件:

vim /etc/pure-ftpd/pure-ftpd.conf     //找到pureftpd.pdb这行,把行首的#删除

212d88765713b2af00423bf152ab703148e.jpg

启动pure-ftpd

[root@liang-00 ~]# systemctl stop vsftpd.service 
[root@liang-00 ~]# systemctl start pure-ftpd.service 
[root@liang-00 ~]# 

创建ftp用户目录,创建用户,更改属主属组:

[root@liang-00 ~]# mkdir /data/ftp
[root@liang-00 ~]# useradd -u 1010 pure-ftp
[root@liang-00 ~]# chown -R pure-ftp:pure-ftp /data/ftp
[root@liang-00 ~]# 

创建虚拟用户(ftp_usera)映射系统普通用户(pure-ftp),-d 指定家目录:

[root@liang-00 ~]# pure-pw useradd ftp_usera -u pure-ftp  -d /data/ftp
Password: 
Enter it again: 
[root@liang-00 ~]# 

生成系统可识别的密码:

[root@liang-00 ~]# pure-pw mkdb
[root@liang-00 ~]# 

 

测试:

[root@liang-00 ~]# touch /data/ftp/111.txt
[root@liang-00 ~]# lftp ftp_usera@127.0.0.1
Password: 
lftp ftp_usera@127.0.0.1:~> ls    
drwxr-xr-x    2 1010       pure-ftp           21 Dec 22 14:49 .
drwxr-xr-x    2 1010       pure-ftp           21 Dec 22 14:49 ..
-rw-r--r--    1 0          0                   0 Dec 22 14:49 111.txt
lftp ftp_usera@127.0.0.1:/> 

其中111.txt的属主属组为root用户,可以修改。

 

扩展:

 

vsftp使用mysql存放虚拟用户并验证 http://www.aminglinux.com/bbs/thread-342-1-1.html
ftp的主动和被动模式  http://www.aminglinux.com/bbs/thread-961-1-1.html

 

转载于:https://my.oschina.net/u/3993922/blog/2992179

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值