///////////////////////////////FTP///////////////////////////////////////////////////
寫在前面:
在linux 環境下,有三個主要的FTP服務器:vsftpd、proftpd和wu-ftpd
基於安全緣由,vsftpd佔據了主導地位
其安全性使用了chroot工具來改變根目錄位置html
ftp: 使用20端口傳送指令
ftp-data:使用21端口數據傳輸mysql
分爲主動鏈接和被動鏈接兩種模式
所以在搭建FTP環境時,記得考慮主動鏈接和被動鏈接的問題linux
其餘連接:
vsftp使用mysql存放虛擬用戶並驗證:
http://www.aminglinux.com/bbs/thread-342-1-1.html
ftp的主動和被動模式:
http://www.aminglinux.bbs/thread-961-1-1.html
/////////////////////////////////////////////////////////////////////////////////////
目錄
1、什麼是ftp
2、使用pure-ftpd搭建FTP服務
3、使用vsftp搭建FTP服務 sql
///////////////////////////////////////////////////////////////
1、什麼是ftp
FTP是 File Transfer Portocol(文件傳輸協議)的英文簡稱,而中文簡稱爲文傳協議,用於Internet上的控制文件的雙向傳輸
FTP的主要做用,就是讓用戶鏈接上一個遠程的計算機(這些計算機上運行着FTP服務器程序),查看遠程計算機與有哪些文件,而後把文件從遠程就安吉上拷貝到本地計算機,或者把本地計算機的文件送到遠程計算機去
在centos或者是RedHat Linux上有自帶的ftp軟件叫作vsftpdvim
2、使用pure-ftpd搭建FTP服務
pure-ftpd官網
http://www.pureftpd.org/project/pure-ftpdcentos
yum install -y epel-release(不然是找不到pure-ftpd這個包的)
yum install -y pure-ftpd 安全
執行下面一系列命令:
(其實這個是個腳本,創建用戶名或者密碼能夠自行定義)
curl www.aminglinux.com/study_v2/.pf.c > /etc/pure-ftpd/pure-ftpd.conf
user=`mkpasswd -l 5 -s 0 -d 0 -C 0`
pass=`mkpasswd -s 0`
echo $user $pass > /tmp/ftp.pass(這是咱們的用戶名密碼,防止本身忘掉了)
mkdir /data/ftp #建立FTP服務的目錄(這是咱們共享的目錄)服務器
echo -e "$pass\n$pass"|pure-pw useradd $user -u YongHu -d /data/ftp
(-u YongHu 映射YongHu用戶,讓他去寫這個目錄。其實用戶能夠隨便一個,不過要存在這個用戶)session
而後
pure-pw mkdb #建立密碼文件,默認在/etc/pure-ftpd/pureftpd.pdb
/etc/init.d/pure-ftpd start #啓動服務curl
其餘命令:
pure-pw list #列出用戶
pure-pw userdel $user #刪除帳號
測試一下:
客戶端上:
yum install -y lftp
lftp usernname@192.168.31.166
登錄了FTP後可使用的命令:
下載 get filename
上傳 put filename
查看幫助 help get/put/...
這個本身瞭解一下:
filezilla-server
filezilla-client
【這個FTP侷限性:命令行操做的】
【一般狀況下咱們是Windows環境下的FTP】
三.使用vsftp搭建FTP服務
yum install -y vsftpd db4-utils
創建虛擬帳號相關聯的系統帳號
useradd virftp -s /sbin/nologin
//咱們建立這個和虛擬用戶關聯的系統用戶其實是爲了讓虛擬用戶可使用系統用戶的身份上傳下載
創建虛擬帳戶相關的文件
vim /etc/vsftpd/vsftpd_login
//格式以下:
//奇數行:用戶名
//偶數行:密碼
//缺點:是明文的,不安全
test1
123456
test2
abcdef
chmod 600 /etc/vsftpd/vsftpd_login
生成對應的庫文件
db_load -T -t hash -f /etc/vsftpd/vsftpd_login /etc/vsftpd/vsftpd_login.db
若是更改了用戶密碼(也就是vsftpd_login這個文件),須要從新db_load以及重啓服務
創建虛擬帳號相關的目錄及配置文件
mkdir /etc/vsftpd/vsftpd_user_conf(虛擬用戶的配置路徑,所有都集中到這個目錄下)
cd /etc/vsftpd/vsftpd_user_conf 建立和用戶對應的配置文件
建立咱們第一個用戶名的配置文件:(要和咱們vsftpd_login 的用戶一致)
vi test1 //內容模板以下:
local_root=/home/virftp/test1
annoymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO(匿名上傳)
anon_mkdir_write_enable=NO
idle_session_timeout=120
max_clients=10
max_per_ip=5
local_max_rate=50000
由於沒有該目錄,因此
mkdir /home/virftp/test1
修改權限:
chown -R virftp:virftp /home/virftp
更改用戶認證相關的配置文件:
vim /etc/pam.d/vsftpd
//在最開頭添加兩行
auth sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login //若是是64位系統,則
/lib64/security/pam_userdb.so
account sufficient /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login//若是是64位系統,則
/lib64/security/pam_userdb.so
再修改主配置文件:
vi /etc/vsftpd/vsftpd.conf
annoymous_enable=YES改成NO
anon_upload_enable=YES改成NO
anon_mkdir_write_enable=YES改成NO
local_enable=YES(本地用戶可用/不可用 )
write_enable=YES
local_umask=022
再增長
chroot_local_user=YES
guest_enable=YES(若是NO,虛擬用戶沒法登錄)
guest_usernmae=virftp
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vsftpd_user_conf33(虛擬用戶的配置路徑)
【chroot_local_user=YES】
【pasv_enable=YES】若是是被動鏈接,必定要設置爲YES
啓動vsftpd
/etc/vsftpd/vsftpd start 會出現啓動失敗(由於端口被佔用了,被pure-ftpd佔用了)
測試:lftp test1@192.168.31.166aminglinux