本文主要內容有:linux中安裝vsftpd(也就是FTP服務)。linux
一、使用匿名用戶上傳和下載文件。shell
二、使用身份驗證的方式上傳和下載文件。數據庫
三、創建虛擬用戶(步驟比較多)。安全
四、爲單獨的用戶創建單獨的上傳和下載機制(花那麼多時間只是爲了您知道「兂」這個字)。服務器
首先是安裝vsftpd服務(也就是FTP服務),安裝完成以後使用rpm -qc vsftpd查看文件的安裝目錄,也可使用grep命令過濾掉以#開頭的註釋文件並查看配置文件。ide
下面是關閉iptables防火牆和SElinux策略,而後使用echo在FTP站點中建立一個.txt文件。ui
若是說是匿名訪問的話,此時就能夠直接開啓vsftpd服務,開啓以後也能夠檢查FTP的21端口開啓了沒有。spa
下面可使用win7客戶機,訪問linux的vsftpd服務,在命令行中切換到C盤下面。而後輸入「ftp 加IP地址」服務器的IP地址,接着輸入用戶名ftp或者anonymous提供任意密碼訪問,而後使用get命令把111.txt文件下載到win7客戶機上。命令行
由於我切換到了C盤,因此打開C盤就能夠看到下載下來的文件,修改個名字222.txt上傳文件試一下,結果證實此時是不能上傳的(沒有設置權限和參數)。3d
此時使用vi /etc/vsftpd/vsftpd.conf命令編輯vsftpd的主配置文件。把下面三個容許匿名用戶上傳的參數前面的#號去掉,或添加上去。
如今設置目錄權限,注意這裏更改權限只能修改ftp下面的某個目錄的權限,不能修改ftp目錄的權限,一旦修改ftp目錄權限,將全部用戶都沒法訪問。我這裏權限設置的是ftp目錄下面的pub目錄。
上面配置完成而且重啓vsftpd服務後,回到win7客戶機使用by退出登錄,而後再從新登錄cd切換到ftp下面的pub目錄。使用put上傳文件222.txt成功。一樣使用
ftp> ls //查看pub目錄下的文件,ftp> delete 222.txt //表示刪除文件
下面作本地用戶登錄訪問,首先建立兩個用戶,並設置密碼。
能夠到客戶機上先驗證一下此時用戶所能作的事情,能夠看到用戶zhangsan居然能夠切換到root根目錄中,這樣是很不安全的。
下面回到linux中編輯vsftpd的主配置文件,把其中的「chroot_local_user=YES」註釋去掉(解釋在圖中)。重啓服務。
Win7客戶機上一樣須要by退出後從新登陸,顯示隨便怎麼切換都是在本身的家目錄而已。
另外在「/etc/vsftpd/」目錄下,有個能夠控制用戶登錄的文件user_list默認這裏面的用戶是禁止登錄FTP的。可使用echo命令把zhangsan用戶追加進去。
再到win7客戶機上面去登錄,表示登錄失敗了。
一樣的道理,若是把主配置文件裏面的userlist_enable=YES改成deny=YES那麼上面的user_list中的用戶將只是容許登錄的用戶。
下面建立虛擬用戶,虛擬用戶就是在FTP用戶和系統用戶之間創建映射關係,首先在/etc/vsftpd目錄下編輯配置文件vuser,內容爲:
jack /*奇數行爲用戶*/
123123 /*偶數行爲密碼*/
jerry
123123
db_load -T -t hash -f vuser vuser.db /*把剛纔建立的用戶文件轉換成數據庫文件*/ chmod 600 vuser、chmod 600 vuser.db /*設置權限不讓別人看見裏面的用戶名和密碼信息*/(注意文件路徑,文中使用的是絕對路徑)。
useradd -d /opt/vuser -s /sbin/nologin vuser /*建立一個用戶爲vuser 指定家目錄/opt/vuser 並切不使用shell登錄*/。
編輯pam認證模塊支持虛擬用戶的登錄vi /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser /*此處兩個文件vuser並非普通文件而是剛纔建立的vuser.db數據庫文件,此處必須省略不寫*/
而後再vi /etc/vsftpd/vsftpd.conf編輯主配置文件,註釋掉上面的pam認證服務文件,而後在下面編輯。
guest_enable=YES //開啓虛擬用戶登錄。
guest_username=vuser //指定虛擬用戶。
pam_service_name=vsftpd.vu //使用pam認證登錄
配置完成以後重啓或者從新加載配置文件。這裏最好也設置一下系統用戶vuser的家目錄文件權限(爲了後面能夠寫入)。
而後使用win7客戶機從新訪問FTP服務,使用虛擬用戶jack進行訪問,put上傳文件也是能夠的(若是你能夠上傳可是ls看不到文件那是權限的問題)。
還能夠對單獨用戶進行配置,進入主配置文件按G到末行插入user_config_dir=/etc/vsftpd/vu_dir #單獨用戶配置文件夾位置。Mkdir建立上面配置文件中所指定的目錄,vi進入建立jack用戶配置文件,在裏面編輯anon_umask=022 #指定上傳文件的權限。
使用win7客戶機進行訪問,再次上傳個文件。
回到linux查看剛纔上傳的文件的權限,可以看到已是644權限。
經驗總結:用戶名,編輯目錄位置,服務開啓加載狀態等都是容易忘記和出錯的地方。還有權限設置,通常匿名訪問都是用於公共場合使用,建議不要給最大權限。用戶身份驗證的時候注意應該給用戶的權限,不能讓他權限太多。虛擬用戶登錄時用戶設置別搞錯了。
好了,實驗完成謝謝你們!