五十六、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
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
先ctrl+d退出來終端,然後可以使用ctrl+alt+f
然後到這個網站裏去下載這個插件,再安裝這樣的一個過程。
五十六、FTP介紹、使用vsftpd搭建ftp服務