五十六、FTP介紹、使用vsftpd搭建ftp服務
一、FTP介紹
FTP是File Transfer Protocol(檔案傳輸協定,簡稱文傳協定)的英文簡稱,用于在Internet上控制檔案的雙向傳輸,檔案共享。
FTP的主要作用:讓使用者連接配接一個遠端計算機(這些計算機上運作着FTP伺服器程式),并檢視遠端計算機中的檔案,然後把檔案從遠端計算機複制到本地計算機,或把本地計算機的檔案傳送到遠端計算機。
小公司用的多,大企業不用FTP,因為不安全,盡量不要用FTP,如果一定要用,就用SFTP,然後用密鑰。
二、使用vsftpd搭建ftp服務
centos上預設自帶ftp的軟體包叫:vsftpd
# yum install -y vsftpd
# useradd -s /sbin/nologin virftp
//名字自定義,-s指定shell,/sbin/nologin表示這個使用者不能登入系統。
//vsftpd這個軟體包可以使用系統級别的軟體包,就比如user1,可以用user1來登入vsftpd,登入形式不是ssh,而是ftp,登入以後會進入user1的家目錄下;但是這樣不安全,是以解決辦法是:給這個ftp設定一個虛拟使用者,虛拟使用者映射成系統的普通使用者,這個虛拟使用者名,是不能登入伺服器這個機器的,這樣就安全很多。
# 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保持一緻的
anon_upload_enable=NO 是否允許匿名使用者可上傳
anon_mkdir_write_enable=NO 是否允許匿名使用者可建立目錄和寫
idle_session_timeout=600 逾時時間,超過600秒以後就自動斷開ftp連接配接
data_connection_timeout=120 資料傳輸的逾時時間
max_clients=10 最大的用戶端是多少
//标紅的是關鍵配置參數。
# mkdir /home/virftp/testuser1 建立虛拟使用者的家目錄
# touch /home/virftp/testuser1/aming.txt
# chown -R virftp:virftp /home/virftp
//因為最終要映射成virftp這個使用者,是以沒有權限不行
# 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
# ls /lib64/security/pam_userdb.so //這裡需要注意,如果是centos6,區分32位和64位的作業系統,是32就寫32,這個檔案是必須存在的。
# vim /etc/vsftpd/vsftpd.conf 編輯vsftpd的主配置檔案
将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要想生效,這裡打開
guest_username=virftp 虛拟使用者映射的對應的系統使用者
virtual_use_local_privs=YES 告訴這個我們用的是虛拟使用者
user_config_dir=/etc/vsftpd/vsftpd_user_conf
//定義虛拟使用者配置檔案所在路徑
allow_writeable_chroot=YES
# systemctl start vsftpd //啟動vsftpd服務
然後看一下監聽的端口是21,看一下程序。
測試ftp
# yum install -y lftp
# lftp [email protected] 密碼就是密碼,
執行指令ls,就能看到之前建立的檔案,看是否正常輸出
若不正常檢視日志/var/log/messages和/var/log/secure
看支援什麼指令,輸入個問号再回車。
常用的有put,get
lftp [email protected]:/> get aming.txt 會get到目前目錄
lftp [email protected]:/> quit
[root@MRX ~]# ls
就可以看到aming.txt這個檔案
windows下安裝filezilla用戶端軟體,進行測試
lftp:Linux上的ftp用戶端。
filezilla:ftp的開源的,免費的,可以搭建服務,有用戶端,很好用。
用xshell實作和ftp的功能:兩種方案
(一)建立會話
協定改成SFTP,名稱定義的yaowei-01-sftp,主機名是192.168.93.130,端口22。然後就可以連接配接了,使用者名root,輸入密碼,進入後這時候是在root下。然後就可以get檔案了,那麼get的檔案儲存的路徑就在這個會話屬性中SSH下的SFTP中可以自定義本地檔案夾,這裡我定義了桌面,get就會直接傳到桌面上,因為這邊是指令行,是以不太直覺。
(二)使用XFTP