操做系統:ubuntu (GNU/Linux)linux
爲了在機子上架設ftp服務器,咱們須要安裝ftp服務器軟件。Linux下具備表明性的ftp服務器軟件有Wu-FTP,ProFTP和Vsftp。
Wu-FTP(Washington University FTP)由美國華盛頓大學開發。它的功能強大,配置較複製。因爲開發時間較早,應用十分普遍,也所以成爲黑客們主要的攻擊目標。
ProFTP針對Wu-FTP的弱項而開發,在安全性方面進行了改進,並提供了一些Wu-FTP沒有的功能,大大簡化了架設和管理FTP服務器的工做。
Vsftp在安全性,高性能及穩定性3個方面上有上佳的表現。它提供的主要功能包括虛擬IP設置,虛擬用戶,standalone(可自行單獨啓動的daemon),inetd操做模式(由一支特殊的super daemon管理),強大的單用戶設置能力以及帶寬限流等。接下來咱們主要講解在ubuntu上如何架設vsftpd。shell
vsftpd的安裝:
在ubuntu可直接經過apt安裝 sudo apt-get install vsftpd數據庫
安裝完畢,檢查vsftpd進程是否已啓動,能夠查看進程或者查看監聽端口
ps -eaf|grep vsftpd vsftpd進程已開啓ubuntu
netstat -tnl|grep :21vim
vsftpd的配置文件:
在ubuntu中,vsftpd的主要配置文件分佈以下:
/etc/vsftpd.conf vsftpd服務器的配置文件
/usr/sbin/vsftpd vsftpd服務器的進程文件
/etc/pam.d/vsftpd vsftpd服務器的PAM接口配置文件
/var/ftp vsftpd服務器匿名用戶的工做目錄瀏覽器
配置vsftpd服務器:
vsftpd服務器的配置文件以及各參數表明的意義以下:
/etc/vsftpd.conf安全
匿名用戶配置:
配置匿名用戶,使得
1 FTP服務器支持匿名用戶(賬號:anonymous 密碼:任意)登陸
2 只要ftp用戶(操做系統用戶)在操做系統有讀權限,就能夠下載文件
3 匿名用戶登陸後進入/var/ftp/anonymous目錄,能夠下載該目錄中的文件
4 能夠上傳文件到目錄/var/ftp/anonymous/upload目錄中,但不能下載或刪除該目錄中的文件
利用vim修改vsftpd.conf文件
anonymous_enable=YES
anon_world_readable_only=NO
anon_root=/var/ftp/anonymous
anon_upload_enable=YES
chown_uploads=YES
在/var目錄下新建目錄anonymous,因此者爲root,在/var/anonymous目錄下新建目錄upload,全部者爲ftp
重啓vsftpd進程
sudo killall -HUP vsftpd
測試匿名用戶
以匿名用戶登陸本地FTP服務器(127.0.0.1)
測試完畢
虛擬主機的配置:
何爲虛擬主機?vsftpd的虛擬主機是指在一臺主機上配置多個vsftpd服務,各個vsftpd服務能夠採用不一樣的配置,給用戶的感受好像這些vsftpd服務是不一樣的主機上運行的。vsftpd的虛擬主機是基於IP地址。既然是基於IP地址的,那您可能會問我只有一個網卡一個IP怎麼配置虛擬主機?
這時,咱們能夠利用linux的邏輯網卡來實現不一樣IP。
一個虛擬主機的配置例子:
1 增長邏輯網卡,我如今的IP地址爲192.168.1.100,增長邏輯網卡IP爲192.168.1.101
sudo ifconfig eth0:1 192.168.1.101 netmask 255.255.255.0 up
2 中止vsftpd服務
sudo killall vsftpd
3 修改vsftpd.conf配置,增長如下一欄
listen_address=192.168.1.100
4 從新啓動vsftpd服務 & 表示後臺運行
sudo /usr/sbin/vsftpd /etc/vsftpd.conf &
5 爲第二個vsftpd服務器創建匿名用戶對應的本地賬號以及我的目錄,參數-d指定我的目錄,需本身創建,-s指定登陸shell,/sbin/nologin是一種不登陸shell
sudo useradd -d /var/ftp/myftp -s /sbin/nologin myftp
6 建立/var/ftp/myftp目錄,改變/var/ftp/myftp的全部者(默認就是root),目的是使myftp用戶對其沒有寫權限
sudo mkdir /var/ftp/myftp
sudo chown root /var/ftp/myftp
7 複製vsftpd.conf,命名爲myvsftpd.conf放在/etc目錄下
sudo cp /etc/vsftpd.conf /etc/myvsftpd.conf
8 修改myvsftp.conf
ftpd_banner=Welcome to my virtual FTP server
ftp_username=myftp
listen=YES
listen_address=192.168.1.101
9 啓動第二個vsftpd
sudo /usr/sbin/vsftpd /etc/vsftpd/myvsftpd.conf
測試虛擬主機:
登陸192.168.1.100 和 192.168.1.101
測試完畢
虛擬用戶的配置:
vsftpd中的用戶有3種。匿名用戶,本地用戶。還有一種就是接下來介紹的虛擬用戶,該用戶沒法登陸你的操做系統,可是可以登陸FTP服務器,並且當存在不少虛擬用戶,您並不須要在操做系統上爲每一個虛擬用戶新建一個不可登陸的本地用戶,只須要一個。並且還有一個更強大的用法,咱們能夠經過爲每一個虛擬賬號建立一個配置文件來不一樣虛擬賬號不一樣的權限,目錄,這將對咱們管理FTP用戶有很大的方便。
1 新建user.txt,輸入如下內容,表示有2個虛擬用戶,分別爲xuni1(密碼pass1),xuni2(密碼pass2)
2 接下來咱們須要生成虛擬賬號數據庫,先安裝DB庫工具
sudo apt-get install db4.8-util
在/etc下新建目錄/etc/vsftpd
sudo mkdir /etc/vsftpd
將數據庫文件導入到剛剛產生的目錄
sudo db4.8_load -T -t hash -f /home/stone/user.txt /etc/vsftpd/vsftpd_login.db
將數據庫文件設置權限爲600,並不須要被其餘用戶讀,修改
sudo chmod 600 /etc/vsftpd/vsftpd_login.db
3 新建/etc/pam.d/vsftpd_login文件,輸入如下內容
全部支持PAM的程序都有一個與PAM進行對接的配置文件,它們存放在/etc/pam.d目錄,vsftpd與PAM的對接配置文件名能夠由vsftpd.conf文件中的pam_service_name選項指定,默認是pam_service_name=vsftpd,當之後認證本地用戶時,會根據/etc/pam.d/vsftpd文件的配置內容進行認證。
4 創建全部FTP虛擬用戶賬號使用的操做系統賬號,須要咱們本身新建目錄,並設置該賬號工做目錄的權限,全部者(貌似能夠修改使之自動新建目錄)
sudo useradd -d /home/ftpsite -s /sbin/nologin ftp_virt
sudo mkdir /home/ftpsite
sudo chown ftp_virt /home/ftpsite
sudo chgrp ftp_virt /home/ftpsite
sudo chmod 700 /home/ftpsite
5 在vsftpd.conf配置文件中添加有關虛擬賬號用戶的配置內容
guest_enable=YES
guest_username=ftp_virt
pam_service_name=vsftpd_login
最後一項將於原來的默認值衝突,能夠註釋掉原來的項,重啓vsftpd以後,你將發現本地用戶沒法登陸vsftpd了
6 設置虛擬用戶的權限,咱們能夠經過添加下面這一行,來指定放置用戶配置文件的目錄位置是/etc/vsftpd
user_config_dir=/etc/vsftpd
解釋下這一項的做用,添加這一項以後,當咱們以虛擬用戶登陸vsftpd時,服務器將會尋找/etc/vsftpd目錄下於虛擬用戶名相同的配置文件,從而肯定該虛擬用戶的權限等屬性。這方便了咱們管理FTP虛擬用戶。
7 配置虛擬用戶配置文件
在/etc/vsftpd下,咱們新建文件xuni1,輸入如下內容
新建文件xuni2,輸入如下內容
8 而後重啓vsftpd
先關閉
sudo killall vsftpd
啓動
sudo /usr/sbin/vsftpd /etc/vsftpd.conf &
測試
虛擬用戶具體的權限,目錄配置方法將能夠經過各類方法來配置,這裏再也不描述。
繼續編輯中...
ubuntu server vsftpd 匿名用戶上傳下載及目錄設置
1:vsftpd服務器安裝;
sudo apt-get install vsftpd #安裝 cd /srv/ #切換到默認匿名用戶ftp目錄;
運行 ls -l 咱們能夠看到 默認的 ftp目錄是,虛擬用戶ftp的根目錄,而且此目錄是匿名用戶管理的根目錄,
不管是對 ftp,改組,改用戶,改權限都不能在ftp根目錄下,上傳東西,要麼就是ftp匿名沒法鏈接,要麼就是不能上傳;折騰了幾天,終於明白了!
ftp 做爲匿名用戶根目錄,vsftpd有特殊處理;
vsftpd對此 ftp 根目錄,有兩點特殊要求;該用戶全部者必須是root,該目錄的權限對其餘不能爲 w;
也就是說其餘人,匿名用戶來講 ftp 目錄是根目錄,只能是隻讀的,不能上傳,不能更改;以下官方解釋
1.匿名用戶就是ftp,想要匿名用戶寫入,必須文件夾的權限爲ftp可寫。
2.匿名用戶的根目錄不容許寫,因此根目錄的權限絕對不能是ftp可寫和其餘用戶可寫,若是根目錄全部者爲ftp的話,全部者的權限也不能寫。
因此解決方法是建個單獨的public文件夾用於上傳文件,設置其爲ftp可寫或」其餘用戶可寫「
還可建個download文件夾只用於下載,設置其餘用戶沒有寫權限即可。
那麼咱們若是設置匿名用戶上傳,下載,新建目錄呢,
就是在 ftp目錄下,新創建一個目錄,而且,設置其權限 777,就能夠了,還要加上配置 vsftpd.conf 文件
二:配置匿名用戶上傳下載;
1: 先建立匿名用戶可發佈的文件目錄
cd /srv/ftp/ 切換到根目錄 sudo mkdir pub #新創建pub目錄作爲 匿名用戶的上傳目錄 sudo chmod ftp:ftp pub #爲pub目錄改其全部者組爲 ftp sudo chmod -R 777 pub #爲pub目錄設置權限爲所有可讀可寫可執行
配置好以後,ls -l 查看
2:配置 vsftpd.conf 配置文件修改
sudo vim /etc/vsftpd.conf
用vim,打開-修改如圖示
設置如圖幾個選項就能夠了
anonymous_enable=YES #設置匿名用戶可用 write_enable=YES # 設置用戶寫的權限 YES anon_upload_enable=YES #設置匿名用戶上傳YES anon_mkdir_write_enable=YES # 設置匿名用戶新建目錄YES
配置好以後:保存退出
從新啓動vsftpd服務
sudo restart vsftpd
3: 測試 匿名用戶訪問,上傳,新創建目錄
#打開終端鏈接ftp服務器 ftp 192.168.8.35 #回車 anonymous #輸入用戶名,匿名用戶 #要求輸入密碼,直接回車 #出現Using binary mode to transfer files 表示鏈接成功 #ls 查看遠程服務器目錄 #cd pub 切換到遠程目錄pub #ls 查看遠程目錄 # get hi.txt 下載遠程文件到本地 #pub mac0.txt 上傳本地文件到遠程服務器
如上圖測試;
測試新建目錄;直接使用
mkdir test
便可;
能夠在瀏覽器裏面輸入ftp://192.168.8.35 打開ftp服務器目錄,查看,下載,執行操做測試
注意:權限的問題