15.0 FTP介紹

15.0 FTP介紹

  • FTP是File Transfer Protocol(文件傳輸協議,簡稱文傳協議)的英文簡稱,用於在Internet上控制文件的雙向傳輸。
  • FTP的主要做用就是讓用戶鏈接一個遠程計算機(這些計算機上運行着FTP服務器程序),並查看遠程計算機中的文件,而後把文件從遠程計算機複製到本地計算機,或把本地計算機的文件傳送到遠程計算機。
  • 小公司用的多,大企業不用FTP,由於不安全

那既然不安全,爲何要用到ftp呢?
由於lrzsz有必定的限制,如:不能傳輸大於4G的文件。也有使用阿里雲機器 我用一臺機器跳到另外一臺機器,如今要用rzsz傳數據 就會出問題!
解決方案:就是用ftp 查看ftp服務器上面的文件 並對服務器上面進行本地下載和上傳;(大公司就會用git--版本管理工具 而後使用自動化工具發佈平臺發佈)linux

15.2 使用vsftpd搭建ftp服務器

centos上自帶vsftpd
yum install -y vsftpd
useradd -s /sbin/nologin virftp
vim /etc/vsftpd/vsftpd_login //內容以下,奇數行爲用戶名,偶數行爲密碼,多個用戶就寫多行
testuser1
aminglinux
chmod 600 /etc/vsftpd/vsftpd_login
db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
mkdir /etc/vsftpd/vsftpd_user_conf 
cd /etc/vsftpd/vsftpd_user_conf
vim testuser1 //加入以下內容
local_root=/home/virftp/testuser1    ##定義虛擬用戶家目錄
anonymous_enable=NO      ##不容許匿名用戶訪問
write_enable=YES    ##可寫
local_umask=022    ##定義新文件和目錄的umask值,和系統umask值同樣;
anon_upload_enable=NO   ##不容許匿名用戶上傳;
anon_mkdir_write_enable=NO    ##不容許匿名用戶可寫
idle_session_timeout=600    ##超過600s須要從新登陸
data_connection_timeout=120    ##數據傳輸超時時間120s
max_clients=10    ##最大鏈接客戶端10
mkdir /home/virftp/testuser1
touch /home/virftp/testuser1/aming.txt
chown -R virftp:virftp /home/virftp
vim /etc/pam.d/vsftpd //在最前面加上
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
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
systemctl start vsftpd //啓動vsftpd服務
yum install -y lftp  
lftp ftpuser1@127.0.0.1  
執行命令ls,看是否正常輸出
若不正常查看日誌/var/log/messages和/var/log/secure
windows下安裝filezilla客戶端軟件,進行測試

一、安裝vsftpd並建立用戶

[root@Dasoncheng ~]# yum install -y vsftpd
[root@Dasoncheng ~]# ls /etc/vsftpd/
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@Dasoncheng ~]# useradd -s /sbin/nologin virftp
[root@Dasoncheng ~]# vim /etc/vsftpd/vsftpd_login
user1
p@ssw0rd
user2
123456
[root@Dasoncheng ~]# chmod 600 /etc/vsftpd/vsftpd_login
[root@Dasoncheng ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
[root@Dasoncheng ~]# ls /etc/vsftpd/
ftpusers   vsftpd.conf             vsftpd_login
user_list  vsftpd_conf_migrate.sh  vsftpd_login.db

二、建立和用戶對應的配置文件

[root@Dasoncheng ~]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@Dasoncheng ~]# cd /etc/vsftpd/vsftpd_user_conf
[root@Dasoncheng vsftpd_user_conf]# vim user1
local_root=/home/virftp/user1    
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
[root@Dasoncheng vsftpd_user_conf]# mkdir /home/virftp/user1
[root@Dasoncheng vsftpd_user_conf]# touch /home/virftp/user1/gecz.txt
[root@Dasoncheng vsftpd_user_conf]# chown -R virftp:virftp /home/virftp/
[root@Dasoncheng vsftpd_user_conf]# vim /etc/pam.d/vsftpd 
[root@Dasoncheng vsftpd_user_conf]# head -3 /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
……

三、修改全局配置文件

配置文件裏面不要有空格,我就在chroot那一行吃了虧;git

[root@Dasoncheng ~]# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO    ##將YES改成NO
anon_upload_enable=NO    ##將前面的#去掉,YES改成NO
anon_mkdir_write_enable=NO    ##將前面的#去掉,YES改成NO
……    ##在尾部添加以下幾行:
chroot_local_user=YES
guest_enable=YES    ##開啓映射
guest_username=virftp    ##將虛擬用戶映射到系統用戶virftp
virtual_use_local_privs=YES      ##使用ftp虛擬用戶
user_config_dir=/etc/vsftpd/vsftpd_user_conf     ##定義虛擬用戶配置文件目錄;
allow_writeable_chroot=YES
[root@Dasoncheng ~]# systemctl start vsftpd
[root@Dasoncheng ~]# ps aux |grep vsftp
root      41052  0.0  0.0  53216   576 ?        Ss   14:31   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      41058  0.0  0.0 112664   968 pts/1    S+   14:34   0:00 grep --color=auto vsftp
[root@Dasoncheng ~]# netstat -lntp |grep ftp
tcp6       0      0 :::21                   :::*                    LISTEN      41052/vsftpd
[root@Dasoncheng ~]# lftp user1@127.0.0.1
Password: 
lftp user1@127.0.0.1:/> ?    ##列出當前可以使用的命令
    !<shell-command>                     (commands)
    alias [<name> [<value>]]             attach [PID]
    bookmark [SUBCMD]                    cache [SUBCMD]
……
……
lftp user1@127.0.0.1:~> ls        ##這個就是我以前建立的文件
-rw-r--r--    1 1003     1003            0 Feb 26 06:41 gecz.txt
lftp user1@127.0.0.1:/> get gecz.txt     ##get下載,默認是當前目錄
lftp user1@127.0.0.1:/> quit
[root@Dasoncheng ~]# ls
1.txt  anaconda-ks.cfg  ccc       logs       wordpress-4.9.4-zh_CN.tar.gz
aaa    bbb              gecz.txt  wordpress

15.3 Xshell鏈接ftp的兩種方式:

xshell鏈接ftp的協議是ssh,不須要安裝ftp服務器 也和21端口沒啥關係!shell

法一(SFTP):

  • 設置xshell
    mark
    mark
  • 默認本地目錄:
    mark
  • 這裏配置本地目錄:
    mark

法二(XFTP)--推薦:

  • 安裝xftp軟件:
    mark
  • xshell鏈接狀態按ctrl+alt+f
    mark
  • 出現這個界面;(雙擊或者拖動傳輸文件!)
    mark

15.4 使用pure-ftpd搭建ftp服務

之因此用這個pure-ftpd搭建:主要是由於其輕便,簡單(給客戶,或小夥伴搭建首選);vim

yum install -y epel-release
 yum install -y pure-ftpd
 vim /etc/pure-ftpd/pure-ftpd.conf//找到pureftpd.pdb這行,把行首的#刪除
 systemctl stop vsftpd
 systemctl start pure-ftpd
 mkdir /data/ftp
 useradd -u 1010 pure-ftp
 chown -R pure-ftp:pure-ftp /data/ftp
 pure-pw useradd ftp_usera -u pure-ftp  -d /data/ftp
 pure-pw mkdb
 pure-pw list/userdel/usermod/passwd

一、安裝pure-ftpd

[root@DasonCheng ~]# yun install -y epel-release ^C    //這裏我已經安裝過了;
[root@DasonCheng ~]# yum install -y pure-ftpd

二、配置pure-ftpd

[root@DasonCheng ~]# vim /etc/pure-ftpd/pure-ftpd.conf 
PureDB                        /etc/pure-ftpd/pureftpd.pdb     //去掉前面的#號,使其生效 指定其密碼配置文件;

三、啓動pure-ftpd服務

[root@DasonCheng ~]# ps aux|grep ftp
root      28769  0.0  0.0  52708   696 ?        Ss   08:31   0:00 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
root      29489  0.0  0.0 112664   972 pts/1    S+   10:41   0:00 grep --color=auto ftp
[root@DasonCheng ~]# systemctl stop vsftpd    // 由於vsftp和pure-ftp使用的都是21端口,因此關閉vsftpd;
[root@DasonCheng ~]# systemctl start pure-ftpd
[root@DasonCheng ~]# ps aux|grep pure-ftp
root      29506  0.0  0.1 201916  1192 ?        Ss   10:42   0:00 pure-ftpd (SERVER)

四、測試:

[root@Dasoncheng ~]# mkdir /data/ftp
[root@Dasoncheng ~]# useradd -u 1010 pure-ftp
[root@Dasoncheng ~]# chown -R pure-ftp:pure-ftp /data/ftp/
[root@Dasoncheng ~]# pure-pw useradd ftp_usera -u pure-ftp -d /data/ftp
Password: 
Enter it again: 
[root@Dasoncheng ~]# pure-pw --help ^C
[root@Dasoncheng ~]# pure-pw mkdb
[root@Dasoncheng ~]# pure-pw list /userdel/usermod/passwd
ftp_usera           /data/ftp/./                                               
[root@Dasoncheng ~]# touch /data/ftp/123.txt
[root@Dasoncheng ~]# lftp ftp_usera@127.0.0.1
Password: 
lftp ftp_usera@127.0.0.1:~> ls    
drwxr-xr-x    2 1010       pure-ftp           21 Feb 26 16:07 .
drwxr-xr-x    2 1010       pure-ftp           21 Feb 26 16:07 ..
-rw-r--r--    1 1010       pure-ftp            0 Feb 26 16:07 123.txt
[root@Dasoncheng ~]# touch /data/ftp/456.txt
[root@Dasoncheng ~]# lftp ftp_usera@127.0.0.1
Password: 
lftp ftp_usera@127.0.0.1:~> ls    
drwxr-xr-x    2 1010       pure-ftp           36 Feb 26 16:14 .
drwxr-xr-x    2 1010       pure-ftp           36 Feb 26 16:14 ..
-rw-r--r--    1 1010       pure-ftp            0 Feb 26 16:07 123.txt
-rw-r--r--    1 0          0                   0 Feb 26 16:14 456.txt
lftp ftp_usera@127.0.0.1:/> quit
[root@Dasoncheng ~]# chown pure-ftp:pure-ftp /data/ftp/456.txt 
[root@Dasoncheng ~]# lftp ftp_usera@127.0.0.1
Password: 
lftp ftp_usera@127.0.0.1:~> ls    
drwxr-xr-x    2 1010       pure-ftp           36 Feb 26 16:14 .
drwxr-xr-x    2 1010       pure-ftp           36 Feb 26 16:14 ..
-rw-r--r--    1 1010       pure-ftp            0 Feb 26 16:07 123.txt
-rw-r--r--    1 1010       pure-ftp            0 Feb 26 16:14 456.txt   ##文件屬主爲uid,屬組爲pure-ftp 這是pure-ftpd的一個特性!
相關文章
相關標籤/搜索