配置FTP服務

[toc]php

配置FTP服務

擴展 vsftp使用mysql存放虛擬用戶並驗證 http://www.aminglinux.com/bbs/thread-342-1-1.htmlhtml

ftp的主動和被動模式 http://www.aminglinux.com/bbs/thread-961-1-1.htmlmysql

1、FTP介紹

咱們以前傳輸文件所用的是rzsz命令,能夠簡單明瞭的就把咱們所需的文件下載或者上傳。可是有個缺陷,不能夠上傳或者下載大致積的文件。FTP就能夠解決這個問題!linux

1.1 FTP是File Transfer Protocol(文件傳輸協議,簡稱文傳協議)的英文簡稱,用於在Internet上控制文件的雙向傳輸。

FTP的主要做用就是讓用戶鏈接一個遠程計算機(這些計算機上運行着FTP服務器程序),並查看遠程計算機中的文件,而後把文件從遠程計算機複製到本地計算機,或把本地計算機的文件傳送到遠程計算機。nginx

小公司用的多,大企業不用FTP,由於不安全。大多數的企業使用git。git

2、使用vsftpd搭建ftp服務

2.1 安裝服務:

centos上自帶vsftpdredis

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

2.2 建立用戶:sql

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

這兒可能會有疑問,咱們建立了這個用戶爲何不能夠nologin呢?安全 而後咱們就用到了以下虛擬用戶:shell

2.3 配置虛擬用戶:

[root@xavi ~]# vim /etc/vsftpd/vsftpd_login //奇數行爲用戶名,偶數行爲密碼,多個用戶就寫多行!
[root@xavi ~]# vim /etc/vsftpd/vsftpd_login
//用戶爲zhdy密碼爲asd9577;zhdy02密碼爲asd9772
xavi01
linux001
xavi02
linux002

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 xavi001

local_root=/home/virftp/xavi001
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

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.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
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

-----------------------------------------------------------
//在最前面加上
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account 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=NOvim

將#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 vsftpd
root       2938  0.0  0.0  53216   580 ?        Ss   19:57   0:00 /usr/sbin/vsftpd /etcvsftpd/vsftpd.conf
root       2940  0.0  0.0 112680   976 pts/0    S+   19:57   0:00 grep --color=auto vsftpd
[root@xavi vsftpd_user_conf]# netstat -lntp
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: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

3、在客戶端的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 xavi001
lftp xavi01@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>

3.3 輸入 ? 是用來查看操做的命令。使用 get+文件名 來下載一個文件到根目錄!

mark

報錯!

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

4、使用xshell來傳輸,其原理就是:使用sftp模式登陸服務器

mark

mark

輸如帳號密碼連接,仍是主機xavi001的帳號密碼

mark

4.1 實驗

sftp:/tmp> cd /usr/local/src/
sftp:/usr/local/src> ls
drwxr-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.gz
drwxr-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.gz
drwxr-xr-x   11 501      games        4096 Mar 17 15:57 httpd-2.4.29
drwxr-xr-x   28 xavidsf  xavidsf      4096 Mar 17 15:33 apr-1.6.3
drwxr-xr-x   21 xavidsf  xavidsf      4096 Mar 17 15:40 apr-util-1.6.1
drwxr-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.bz2
drwxrwxr-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.zip
drwxr-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.gz
drwxr-xr-x    9 xavidsf  xavidsf       186 Mar 13 23:40 nginx-1.12.1

sftp:/usr/local/src> get nginx-1.12.1.tar.gz
Fetching /usr/local/src/nginx-1.12.1.tar.gz to nginx-1.12.1.tar.gz
sftp: received 958 KB in 0.06 seconds

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

5、xshell使用xftp傳輸文件

  • 在xshell界面上按下「ctrl+alt+F」彈出如下對話框

mark

  • 點擊「Download Xftp」 mark

  • 點擊下載連接 mark

  • 選擇評估版 mark

  • 填入信息 mark

  • 提示在郵箱裏有下載連接 mark

  • 下載完成後,開始安裝,注意選擇免費版 mark

  • 安裝完成後,在打開的虛擬機界面上按下「ctrl+Alt+F」,輸入帳號密碼,以下: mark

  • 選中文件後直接鼠標拖拽就能夠到達window界面中 mark

6、使用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-ftpd
root       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-pw

Usage :

pure-pw useradd <login> [-f <passwd file>] -u <uid> [-g <gid>]
                -D/-d <home directory> [-c <gecos>]
                [-t <download bandwidth>] [-T <upload bandwidth>]
                [-n <max number of files>] [-N <max Mbytes>]
                [-q <upload ratio>] [-Q <download ratio>]
                [-r <allow client ip>/<mask>] [-R <deny client ip>/<mask>]
                [-i <allow local ip>/<mask>] [-I <deny local ip>/<mask>]
                [-y <max number of concurrent sessions>]
                [-z <hhmm>-<hhmm>] [-m]

pure-pw usermod <login> -f <passwd file> -u <uid> [-g <gid>]
                -D/-d <home directory> -[c <gecos>]
                [-t <download bandwidth>] [-T <upload bandwidth>]
                [-n <max number of files>] [-N <max Mbytes>]
                [-q <upload ratio>] [-Q <download ratio>]
                [-r <allow client ip>/<mask>] [-R <deny client ip>/<mask>]
                [-i <allow local ip>/<mask>] [-I <deny local ip>/<mask>]
                [-y <max number of concurrent sessions>]
                [-z <hhmm>-<hhmm>] [-m]

pure-pw userdel <login> [-f <passwd file>] [-m]

pure-pw passwd  <login> [-f <passwd file>] [-m]

pure-pw show    <login> [-f <passwd file>]

pure-pw mkdb    [<puredb database file> [-f <passwd file>]]
                [-F <puredb file>]

pure-pw list    [-f <passwd file>]

-d <home directory> : chroot user (recommended)
-D <home directory> : don't chroot user
-<option> '' : set this option to unlimited
-m : also update the /etc/pure-ftpd/pureftpd.pdb database
For a 1:10 ratio, use -q 1 -Q 10
To allow access only between 9 am and 6 pm, use -z 0900-1800

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
相關文章
相關標籤/搜索