zoukankan      html  css  js  c++  java
  • FTP

    FTP

    1.匿名用户的FTP

    1.1服务端口:

    1.1.1挂载光盘

    [root@server ~]# mount /dev/sr0 /media/cdrom
    mount: block device /dev/sr0 is write-protected, mounting read-only
    

    1.1.2安装vsftpd

    [root@server ~]# yum -y install vsftpd
    [root@server ~]# rpm -qa vsftpd
    vsftpd-2.2.2-11.el6_4.1.x86_64
    

    1.1.3共享目录pub

    [root@server ~]# cd /var/ftp
    [root@server ftp]# ls
    pub
    

    1.1.4把ftp(程序用户设置成它的属主)

    [root@server ftp]# ll
    total 4
    drwxr-xr-x. 2 root root 4096 Mar  1  2013 pub
    [root@server ftp]# chown ftp pub
    [root@server ftp]# ll
    total 4
    drwxr-xr-x. 2 ftp root 4096 Mar  1  2013 pub
    

    1.1.5查看它的配置文件

    [root@server ftp]# cd /etc/vsftpd
    [root@server vsftpd]# ls
    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
    

    1.1.6备份文件

    [root@server vsftpd]# cp vsftpd.conf{,.bak}
    [root@server vsftpd]# ls
    ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
    

    1.1.7进入

    [root@server vsftpd]# head -32 vsftpd.conf | tail -6
    anon_upload_enable=YES   #开启匿名用户上传权限
    anon_umask=022           #手动添加匿名用户的权限掩码
    # Uncomment this if you want the anonymous FTP user to be able to create
    # new directories.
    anon_mkdir_write_enable=YES    #开启匿名用户新建目录的权限
    anon_other_write_enable=YES    #手动添加匿名用户的其他写入
    

    1.1.8启动ftp服务

    [root@server vsftpd]# /etc/init.d/vsftpd start
    Starting vsftpd for vsftpd:                                [  OK  ]
    

    1.1.9打开一个服务,确定一下它是否有端口

    [root@server vsftpd]# netstat -antup | grep vsftpd
    tcp      0      0 0.0.0.0:21    0.0.0.0:*     LISTEN    1426/vsftpd
    

    1.1.10已知共享目录pub目录下有一个文件yang,有一个目录wenbo

    [root@server pub]# pwd
    /var/ftp/pub
    [root@server pub]# ls
    wenbo  yang
    

    1.1.11传文件时,关闭防火墙

    [root@server pub]# service iptables stop
    iptables: Setting chains to policy ACCEPT: filter          [  OK  ]
    iptables: Flushing firewall rules:                         [  OK  ]
    iptables: Unloading modules:                               [  OK  ]
    

    1.2客户端口:

    1.2.1装包ftp

    [root@client ~]# yum -y install ftp
    [root@client ~]# rpm -qa ftp
    ftp-0.17-54.el6.x86_64
    

    1.2.2已知客户端目录yunwei里有以下文件

    [root@client yunwei]# pwd
    /root/yunwei
    [root@client yunwei]# ls
    xiaohong  xiaoming
    

    1.2.3进入ftp

    [root@client yunwei]# ftp 192.168.200.58   #也可以理解为服务端的IP地址
    Connected to 192.168.200.58 (192.168.200.58).
    220 (vsFTPd 2.2.2)
    Name (192.168.200.58:root): ftp   #匿名用户通用名
    331 Please specify the password.
    Password:          #不用输密码,直接按“回车”即可
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> 
    

    1.2.4查看

    image_1cji5o4oh125uc7kb751tetpds6c.png-8kB

    1.2.5help显示帮助

    image_1cji5p8q61vcd1ueh2ft1fbhjqd6p.png-21.5kB

    1.2.6进入共享目录pub里

    ftp> cd pub
    250 Directory successfully changed.
    ftp> ls
    227 Entering Passive Mode (192,168,200,58,45,17).
    150 Here comes the directory listing.
    drwxr-xr-x    2 0        0            4096 Sep 03 10:10 wenbo
    -rw-r--r--    1 0        0               0 Sep 03 10:10 yang
    226 Directory send OK.
    ftp> 
    

    1.2.7下载文件

    (1)下载单一文件

    ftp> get yang
    local: yang remote: yang
    227 Entering Passive Mode (192,168,200,58,132,204).
    150 Opening BINARY mode data connection for yang (0 bytes).
    226 Transfer complete.
    
    [root@client yunwei]# ls
    xiaohong  xiaoming  yang
    

    (2)下载多个文件
    image_1cji5u6qg1kc11if32pdkn19e18d.png-13.2kB

    image_1cji5uf73l5qo8gb1e1s75snr8q.png-2.5kB

    1.2.8上传文件

    image_1cji5vigi8up1n266iuh7u83497.png-1kB

    1.2.9退出

    image_1cji60dbe1v3v183g705152a1us09k.png-1.2kB

    2.搭建本地用户的FTP

    2.1服务端

    2.1.1查看它的配置文件

    [root@server ftp]# cd /etc/vsftpd
    [root@server vsftpd]# ls
    ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
    

    2.1.2备份文件

    [root@server vsftpd]# cp vsftpd.conf{,.bak}
    [root@server vsftpd]# ls
    ftpusers  user_list  vsftpd.conf  vsftpd.conf.bak  vsftpd_conf_migrate.sh
    

    2.1.3进入

    [root@server vsftpd]# sed -n '12p;96p' vsftpd.conf
    anonymous_enable=NO     #关掉匿名用户
    chroot_local_user=YES   #开启本地用户家目录的锁定
    

    2.1.4平滑重启vsftpd

    [root@server vsftpd]# /etc/init.d/vsftpd reload
    Shutting down vsftpd:                                      [  OK  ]
    Starting vsftpd for vsftpd:                                [  OK  ]
    

    2.1.5挑选一个本地用户

    [root@server vsftpd]# id yunwei
    uid=500(yunwei) gid=500(yunwei) groups=500(yunwei)
    

    2.1.6已知本地用户的家目录如下

    [root@server yunwei]# pwd
    /home/yunwei
    [root@server yunwei]# ls
    xiaoming  yangwenbo
    

    2.2客户端

    2.2.1进入ftp

    [root@client /]# ftp 192.168.200.58
    Connected to 192.168.200.58 (192.168.200.58).
    220 (vsFTPd 2.2.2)
    Name (192.168.200.58:root): yunwei
    331 Please specify the password.
    Password:
    500 OOPS: cannot change directory:/home/yunwei
    Login failed.
    ftp> 
    

    2.2.2如果进去看不见东西

    ftp> ls
    421 Service not available, remote server has closed connection
    

    2.2.3那就执行(服务端执行)

    (1)找到这个

    [root@server /]# getsebool -a | grep ftp
    allow_ftpd_anon_write --> off
    allow_ftpd_full_access --> off
    allow_ftpd_use_cifs --> off
    allow_ftpd_use_nfs --> off
    ftp_home_dir --> off       #找到这个设置成on
    ftpd_connect_db --> off
    ftpd_use_fusefs --> off
    ftpd_use_passive_mode --> off
    httpd_enable_ftp_server --> off
    tftp_anon_write --> off
    tftp_use_cifs --> off
    tftp_use_nfs --> off
    

    (2)打开

    [root@server /]# setsebool -P ftp_home_dir=on
    

    (3)重新查看

    [root@server /]# getsebool -a | grep ftp
    allow_ftpd_anon_write --> off
    allow_ftpd_full_access --> off
    allow_ftpd_use_cifs --> off
    allow_ftpd_use_nfs --> off
    ftp_home_dir --> off       #找到这个设置成on
    ftpd_connect_db --> off
    ftpd_use_fusefs --> off
    ftpd_use_passive_mode --> off
    httpd_enable_ftp_server --> off
    tftp_anon_write --> off
    tftp_use_cifs --> off
    tftp_use_nfs --> off
    

    2.2.4重新查看共享目录(如果还看不到,就重新登录)

    ftp> ls
    227 Entering Passive Mode (192,168,200,58,113,183).
    150 Here comes the directory listing.
    drwxr-xr-x    2 0        0            4096 Sep 03 13:30 xiaoming
    -rw-r--r--    1 0        0               0 Sep 03 13:25 yangwenbo
    226 Directory send OK.
    

    3.虚拟账号的FTP

    3.1服务端:

    3.1.1进入ftp的配置文件内,并在在当前创建一个虚拟文件

    [root@server vsftpd]# pwd
    /etc/vsftpd
    [root@server vsftpd]# cat vusers.list 
    yang    #账号
    123     #密码
    
    wen     #账号
    456     #密码
    
    bo      #账号
    789     #密码
    

    3.1.2把这个文件转换成数据文件,给它加密

    [root@server vsftpd]# db_load -T -t hash -f vusers.list vusers.db
    [root@server vsftpd]# ls
    ftpusers   vsftpd.conf      vsftpd_conf_migrate.sh  vusers.list
    user_list  vsftpd.conf.bak  vusers.db #加密文件
    
    [root@server vsftpd]# file vusers.db 
    vusers.db: Berkeley DB (Hash, version 9, native byte-order)
    

    3.1.3给加密文件加上600权限

    [root@server vsftpd]# chmod 600 vusers.*
    [root@server vsftpd]# ll vusers.*
    -rw-------. 1 root root 12288 Sep  5 02:50 vusers.db
    -rw-------. 1 root root    24 Sep  5 02:47 vusers.list
    

    3.1.4创建FTP根目录,并赋予它755权限

    [root@server vsftpd]# chmod 755 /var/ftproot
    [root@server vsftpd]# ll -d /var/ftproot
    drwxr-xr-x. 2 root root 4096 Sep  5 02:55 /var/ftproot
    

    3.1.5创建一个虚拟账号

    [root@server vsftpd]# useradd -d /var/ftproot/ -s /sbin/nologin virtual
    

    image_1cji7d4ba4dc1dl21ijneekho2n.png-8kB

    3.1.6修改FTP根目录的属主与属组

    [root@server vsftpd]# chown virtual:virtual /var/ftproot/
    [root@server vsftpd]# ll -d /var/ftproot/
    drwxr-xr-x. 2 virtual virtual 4096 Sep  5 02:55 /var/ftproot/
    

    3.1.7创建一个pam.d认证文件

    [root@server pam.d]# pwd
    /etc/pam.d
    [root@server pam.d]# cat vsftpd.vu 
    auth required pam_userdb.so db=/etc/vsftpd/vusers
    account required pam_userdb.so db=/etc/vsftpd/vusers
    

    3.1.8修改配置文件

    [root@server vsftpd]# pwd
    /etc/vsftpd
    [root@server vsftpd]# cat -n /etc/vsftpd/vsftpd.conf | sed -n '23p;117p;118p;119p'
        23	anon_umask=022           #手动添加此行
       117	pam_service_name=vsftpd.vu   #在其末尾添加.vu
       118	guest_enable=YES         #手动添加此行
       119	guest_username=virtual   #手动添加此行
    

    3.1.9平滑重启vsftpd

    [root@server vsftpd]# /etc/init.d/vsftpd reload
    Shutting down vsftpd:                                      [  OK  ]
    Starting vsftpd for vsftpd:                                [  OK  ]
    

    3.1.10给/var/ftproot/目录下创建一个共享文件(实验用的)

    [root@server vsftpd]# touch /var/ftproot/yangwenbo
    [root@server vsftpd]# ls /var/ftproot/
    yangwenbo
    

    3.1.11依次使用加密文件里的账号登录ftp验证

    [root@server vsftpd]# cat vusers.list 
    yang
    123
    wen
    456
    bo
    789
    

    3.2客户端

    3.2.1 关闭CLinux

    [root@server ~]# setenforce 0
    [root@client ~]# setenforce 0
    

    3.2.2 客户端依次使用加密文件里的账号登录ftp验证

    [root@client ~]# ftp 192.168.200.58
    Connected to 192.168.200.58 (192.168.200.58).
    220 (vsFTPd 2.2.2)
    Name (192.168.200.58:root): yang
    331 Please specify the password.
    Password:           #之前设置的密码“123”
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    227 Entering Passive Mode (192,168,200,58,57,153).
    150 Here comes the directory listing.
    -rw-r--r--    1 0        0               0 Sep 05 13:04 yangwenbo
    226 Directory send OK.
    
    [root@client ~]# ftp 192.168.200.58
    Connected to 192.168.200.58 (192.168.200.58).
    220 (vsFTPd 2.2.2)
    Name (192.168.200.58:root): wen
    331 Please specify the password.
    Password:            #之前设置的密码“456”
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    227 Entering Passive Mode (192,168,200,58,226,45).
    150 Here comes the directory listing.
    -rw-r--r--    1 0        0               0 Sep 05 13:04 yangwenbo
    226 Directory send OK.
    
    [root@client ~]# ftp 192.168.200.58
    Connected to 192.168.200.58 (192.168.200.58).
    220 (vsFTPd 2.2.2)
    Name (192.168.200.58:root): bo
    331 Please specify the password.
    Password:            #之前设置的密码“789”
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    227 Entering Passive Mode (192,168,200,58,106,202).
    150 Here comes the directory listing.
    -rw-r--r--    1 0        0               0 Sep 05 13:04 yangwenbo
    226 Directory send OK.
    
  • 相关阅读:
    网络诊断工具:[tcpdump]
    网络诊断工具:iproute
    C语言编译全过程
    (Ruby)Ubuntu12.04安装Rails环境
    (Life)牛人的学习方法(转译文)
    (WPF)WPF事件要点WPF宝典笔记
    (WPF)依赖属性要点WPF宝典笔记
    (DP)降低代码重构的风险(转载)
    (WPF)路由事件要点WPF宝典笔记
    JDBC,MYBATIS,Hibernate性能对比!
  • 原文地址:https://www.cnblogs.com/ywb123/p/11132401.html
Copyright © 2011-2022 走看看