Ubuntu自帶的FTP伺服器是vsftpd.
1、安裝vsftpd
Ubuntu安裝軟體倒不是件困難的事,輸入:
sudo apt-get install vsftpd
安裝了之後會在/home/下建立一個ftp目錄。這時候你可以試着通路下位址。應該可以看到一個空白内容的ftp空間。
預設設定下匿名使用者可以下載下傳,但不能寫入或是上傳
2、設定 vsftpd.conf檔案
現在我們要讓匿名使用者無法通路,并且得輸入linux上的使用者密碼後才能通路到他們自己目錄裡的内容。
首先找到設定vsftpd的檔案,位置在/etc/vsftpd.conf
修改之前最好先備份下這個檔案:
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old
然後可以改動了:
1. 匿名伺服器的連接配接(獨立的伺服器)
在/etc/vsftpd/vsftpd.conf配置檔案中添加如下幾項:
Anonymous_enable=yes (允許匿名登陸)
Dirmessage_enable=yes (切換目錄時,顯示目錄下.message的内容)
Local_umask=022 (FTP上本地的檔案權限,預設是077)
Connect_form_port_20=yes (啟用FTP資料端口的資料連接配接)*
Xferlog_enable=yes (激活上傳和下傳的日志)
Xferlog_std_format=yes (使用标準的日志格式)
Ftpd_banner=XXXXX (歡迎資訊)
Pam_service_name=vsftpd (驗證方式)*
Listen=yes (獨立的VSFTPD伺服器)*
功能:隻能連接配接FTP伺服器,不能上傳和下傳
注:其中所有和日志歡迎資訊相關連的都是可選項,打了星号的無論什麼帳戶都要添加,是屬于FTP的基本選項
2. 開啟匿名FTP伺服器上傳權限
在配置檔案中添加以下的資訊即可:
Anon_upload_enable=yes (開放上傳權限)
Anon_mkdir_write_enable=yes (可建立目錄的同時可以在此目錄中上傳檔案)
Write_enable=yes (開放本地使用者寫的權限)
Anon_other_write_enable=yes (匿名帳号可以有删除的權限)
3. 開啟匿名伺服器下傳的權限
在配置檔案中添加如下資訊即可:
Anon_world_readable_only=no
注:要注意檔案夾的屬性,匿名帳戶是其它(other)使用者要開啟它的讀寫執行的權限
(R)讀-----下傳 (W)寫----上傳 (X)執行----如果不開FTP的目錄都進不去
4.普通使用者FTP伺服器的連接配接(獨立伺服器)
Local_enble=yes (本地帳戶能夠登陸)
Write_enable=no (本地帳戶登陸後無權删除和修改檔案)
功能:可以用本地帳戶登陸vsftpd伺服器,有下載下傳上傳的權限
注:在禁止匿名登陸的資訊後匿名伺服器照樣可以登陸但不可以上傳下傳
5. 使用者登陸限制進其它的目錄,隻能進它的主目錄
設定所有的本地使用者都執行chroot
Chroot_local_user=yes (本地所有帳戶都隻能在自家目錄)
設定指定使用者執行chroot
Chroot_list_enable=yes (檔案中的名單可以調用)
Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list
注意:vsftpd.chroot_list 是沒有建立的需要自己添加,要想控制帳号就直接在檔案中加帳号即可
6. 限制本地使用者通路FTP
Userlist_enable=yes (用userlistlai 來限制使用者通路)
Userlist_deny=no (名單中的人不允許通路)
Userlist_file=/指定檔案存放的路徑/ (檔案放置的路徑)
注:開啟userlist_enable=yes匿名帳号不能登陸
7. 安全選項
Idle_session_timeout=600(秒) (使用者會話空閑後10分鐘)
Data_connection_timeout=120(秒) (将資料連接配接空閑2分鐘斷)
Accept_timeout=60(秒) (将用戶端空閑1分鐘後斷)
Connect_timeout=60(秒) (中斷1分鐘後又重新連接配接)
Local_max_rate=50000(bite) (本地使用者傳輸率50K)
Anon_max_rate=30000(bite) (匿名使用者傳輸率30K)
Pasv_min_port=50000 (将用戶端的資料連接配接端口改在
Pasv_max_port=60000 50000—60000之間)
Max_clients=200 (FTP的最大連接配接數)
Max_per_ip=4 (每IP的最大連接配接數)
Listen_port=5555 (從5555端口進行資料連接配接)
8. 檢視誰登陸了FTP,并殺死它的程序
ps –xf |grep ftp
kill 程序号
VSFTPD的高手篇
作者:龍磊
我可不是高手!!!^_^我隻不過是個菜鳥,盡我的能力寫出了我這個菜鳥覺得的高手篇,是以有什麼錯誤請大家指正哦!!!
環境:linux as 3.0 + vsftpd -1.2.0-4的系統架構,是在獨立伺服器下的哦!讨厭XINETD^_^
1. 配置本地組通路的FTP
首先建立使用者組 test和FTP的主目錄
groupadd test
mkdir /tmp/test
然後建立使用者
useradd -G test –d /tmp/test –M usr1
注:G:使用者所在的組 d:表示建立使用者的自己目錄的位置給予指定
M:不建立預設的自家目錄,也就是說在/home下沒有自己的目錄
useradd –G test –d /tmp/test –M usr2
接着改變檔案夾的屬主和權限
chown usr1.test /tmp/test ----這表示把/tmp/test的屬主定為usr1
chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什麼權限都沒有
這個實驗的目的就是usr1有上傳、删除和下載下傳的權限
而usr2隻有下載下傳的權限沒有上傳和删除的權限
當然啦大家别忘了我們的主配置檔案vsftpd.conf
要确定local_enable=yes、write_enable=yes、chroot_local_usr=yes這三個選項是有的哦!
2. 配置獨立FTP的伺服器的非端口标準模式進行資料連接配接
這個非常容易:在VSFTPD。CONF中添加
Listen_port=33333
就可以了啦!
好了重頭戲來了,這也是我為什麼叫高手篇的緣故!^_^(大家不要扔雞蛋哦!)
3. 配置單獨的虛拟FTP,使用虛拟FTP使用者,并使建立的四個帳戶中有不同的權限
(兩個有讀目錄的權限,一個有浏覽、上傳、下載下傳的權限,一個有浏覽、下載下傳、删除和改檔案名的權限)
A:配置網卡
第一塊網卡位址是10.2.3.4 掩碼是255.255.0.0
ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up
B:寫入/etc/sysconfig中(為了重起後IP位址不會丢失)
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0:1
vi ifcfg-eth0:1在其中修改内容如下
DEVICE=eth0:1
BROADCAST=211.131.4.255
HWADDR=該網卡的MAC位址
IPADDR=211.131.4.253
NETMASK=255.255.255.0
NETWORK=211.131.4.0
ONBOOT=yes
TYPE=Ethernet
wq推出
C:進入vsftpd.conf所在的檔案夾
cp vsftpd.conf vsftpd2.conf
修改vsftpd.conf添加以下資訊
Listen_address=10.2.3.4
修改vsftpd2.conf添加以下資訊
Listen_address=211.131.4.253
Ftpd_banner=this is a virtual ftp test
到此虛拟的FTP伺服器建立好了
D:建立logins.txt
vi /tmp/logins.txt
添加入下資訊:
longlei------------使用者名
longlei------------密碼
zhangweibo
jinhui
lxp
格式要按照我的來哦,一個使用者名,一個密碼啦
F:建立通路者的密碼庫檔案,然後修改其權限
db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db
G:進如/etc/pam.d/中建立ftp.vu
在此檔案中添加如下資訊
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
H:在/var/ftp/建立目錄并改變其屬性和它的屬主
useradd -d /var/ftp/test qiang
chmod 700 /var/ftp/test
在目錄中添加test_file測試檔案
I:進入vsftpd2.conf修改其中的資訊(我加的是)
Listen_yes
Anonymous_enable=no
Local_enable=yes
Write_enable=no
Anon_upload_enable=no
Anon_mkdir_write_enable=no
Anon_other_write_enable=no
Chroot_local_user=yes
Guest_enable=yes----------起用虛拟使用者
Guest_username=qiang------将虛拟使用者映射為本地使用者
Listen_port=5555
Max_client=10
Max_per_ip=1
Ftpd_banner=this is a virtual server and users
Pam_service_name=ftp.vu
注:在主配置檔案中給的權限越低,在後面分使用者管理的時候對擁護的權限劃分的空間就越大,因為主配置檔案最高的限制服務先讀主配置檔案,然後再讀使用者的配置檔案
重起服務
到此虛拟USER就建好了
J:在VSFTPD。CONF所在的目錄中建立virtaul檔案目錄
并在檔案目錄中建立以你使用者名命名的配置檔案
Longlei zhangweibo jinhui lxp
在longlei中添加:
在lxp中添加
這樣此兩個使用者就有了浏覽目錄的權限了
在jinhui中添加
Write_enable=yes
Anon_upload_enable=yes
此使用者就有了上傳、下載下傳和浏覽的權限
在zhangweibo中添加
Anon_other_write_enable=yes
此使用者就有了上傳、下載下傳、删除檔案目錄、修改檔案名和浏覽的權限
K:修改vsftpd2.conf
加入user_config_dir=/vsftpd.conf所在的目錄/virtual
重起伺服器就搞定了
好了大家别走開,現在隆重推出VSFTPD。CONF中的我所知道的所有配置資訊
Anon_world_readable_only=no (放開匿名使用者浏覽權限)
Ascii_upload_enable=yes (啟用上傳的ASCII傳輸方式)
Ascii_download_enable=yes (啟用下載下傳的ASCII傳輸方式)
Banner_file=/var/vsftpd_banner_file (使用者連接配接後歡迎資訊使用的是此檔案中的相關資訊)
這是一組
(前提是chroot_local_user=no)
這又是一組
Userlist_enable=yes (在指定的檔案中的使用者不可以通路)
Userlist_deny=yes
Userlist_file=/指定的路徑/vsftpd.user_list
又開始單的了
Banner_fail=/路徑/檔案名 (連接配接失敗時顯示檔案中的内容)
Ls_recurse_enable=no
Async_abor_enable=yes
One_process_model=yes
Listen_address=10.2.2.2 (将虛拟服務綁定到某端口)
Guest_enable=yes (虛拟使用者可以登陸)
Guest_username=所設的使用者名 (将虛拟使用者映射為本地使用者)
User_config_dir=/任意指定的路徑/為使用者政策自己所建的檔案夾
(指定不同虛拟使用者配置檔案的路徑)
又是一組
Chown_uploads=yes (改變上傳檔案的所有者為root)
Chown_username=root
Deny_email_enable=yes (是否允許禁止匿名使用者使用某些郵件位址)
Banned_email_file=//任意指定的路徑/xx/
又是單的
Pasv_enable=yes ( 伺服器端用被動模式)
User_config_dir=/任意指定的路徑//任意檔案目錄 (指定虛拟使用者存放配置檔案的路徑)
如需要使用本地使用者登陸關閉來賓使用者,必須設定如下指令:
anonymous_enable=no
guest_enable=no
local_enable=yes
write_enable=yes
local_umask=022
chroot_list_enable=yes
chroot_list_file=/etc/vsftpd.chroot_list (如沒有則自己建立)
(在etc/vsftpd.chroot_list 填入需要登陸的本地使用者名)
=======================================================
解決vsftpd的中文亂碼問題
這裡有點建議,如果想讓自己編譯後的vsftpd與源安裝沒有什麼差別的話
最好先安裝源中的vsfpd,然後把所有的功能都配置完後,在解決中文亂碼問題
因為删除源的vsftpd後它的/init.d/vsftpd與/vsftpd.conf是不會删除的,可以為我們打好鋪墊,不然你會發現很無奈的!如果你是直接編譯安裝,附件給出會給出我的init.d/vsftpd與vsftpd.conf檔案,把他們覆寫到/etc下吧!
這裡是需要手工編譯的,大家不要怕麻煩,其實很簡單的
開始做編譯的準備工作,準備編譯環境需要的庫包
sudo apt-get build-dep vsftpd
----------------------------------------
這裡使用先安裝源裡的vsftpd,然後解除安裝
sudo apt-get install vsftpd
sudo apt-get remove vsftpd
-----------------------------------------
下載下傳附件并解壓包
tar -zxvf vsftpd-2.0.6
cd vsftpd-2.0.6
sudo su :使用root使用者開始編譯
make #編譯指令,如果無錯誤出現,表示成功
make install #安裝
如果安裝中出現找不到目錄的話,就建立那個缺的目錄就好了
基本上都會提示缺少/man8和/man5目錄的,建立後在重新make install
下邊就來測試下效果修改配置檔案,加入
charset_filter_enable=YES #開啟符過濾
charset_client=GB2312 #用戶端字元設定為簡體中文
好了現在把服務開啟測試下吧
sudo /etc/init.d/vsftpd restart
在win下上傳一個中文檔案,看看效果吧,然後在把配置檔案中關于字元的關掉,重起服務,在看吧
如果有什麼問題的話,請回帖留言
已經測試過,伺服器ubuntu8.04-server,客戶機xp,xp上傳後編碼正常
補充下會遇到的問題
1:如果使用/etc/init.d/vsftpd restart 沒有任何輸出的話,請更改/init.d/vsftpd的内容把啟動路徑該為/usr/local/sbin/vsftpd,因為編譯安裝首先會優先安裝到這個路徑
2:如果匿名使用者無法登陸,老是提示不允許匿名登陸而配置檔案中又設定了允許,請建立目錄
sudo mkdir /usr/share/empty 建立後就可以了
3:如果在linux下上傳檔案,如果工具允許的話,設定為gb2312編碼上傳,或是盡量用英文
4:因為更新檔在一定程度覆寫原程式,是以有2G限制,有時間會去看下源代碼的,基本确定是數值溢出問題
如果修複的話,會補充上的
本文轉自 qq8658868 51CTO部落格,原文連結:http://blog.51cto.com/hujizhou/1290915,如需轉載請自行聯系原作者