歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

Ubuntu 用VSFTP搭建FTP服務器設置教程

1、安裝vsftpd
終端輸入sudo apt-get install vsftpd
安裝之後會在/home/下建立一個ftp目錄,訪問下可以看到一個空白內容的ftp空間。
默認設置下需要匿名用戶不可以登錄

2、設置 vsftpd.conf文件
修改之前最好先備份這個文件:sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.old
參數意義
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的基本選項
開啟匿名FTP服務器上傳權限:
Anon_upload_enable=yes (匿名帳號開放上傳權限)
Anon_mkdir_write_enable=yes (匿名帳號可創建目錄的同時可以在此目錄中上傳文件)
Write_enable=yes (開放本地用戶寫的權限)
Anon_other_write_enable=yes (匿名帳號可以有刪除的權限)
Anon_world_readable_only=no(開啟匿名服務器下傳的權限)
普通用戶FTP服務器的連接(獨立服務器)配置:
Local_enble=yes (本地帳戶能夠登陸)
Write_enable=no (本地帳戶登陸後無權刪除和修改文件)
功能:可以用本地帳戶登陸vsftpd服務器,有下載上傳的權限
注:在禁止匿名登陸的信息後匿名服務器照樣可以登陸但不可以上傳下傳
用戶登陸限制進其它的目錄,只能進它的主目錄:
設置所有的本地用戶都執行chroot
Chroot_local_user=yes (本地所有帳戶都只能在自家目錄)
設置指定用戶執行chroot
Chroot_list_enable=yes (文件中的名單可以調用)
Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list
注意:vsftpd.chroot_list 是沒有創建的需要自己添加,要想控制帳號就直接在文件中加帳號即可
限制本地用戶訪問FTP:
Userlist_enable=yes (用userlistlai 來限制用戶訪問)
Userlist_deny=no (名單中的人不允許訪問)
Userlist_file=/指定文件存放的路徑/ (文件放置的路徑)
:開啟userlist_enable=yes匿名帳號不能登陸
安全選項
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端口進行數據連接)
查看誰登陸了FTP,並殺死它的進程
ps –xf |grep ftp
kill 進程號

3、配置本地組訪問的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這三個選項是有的哦!

4、配置獨立FTP的服務器的非端口標准模式進行數據連接
在VSFTPD_CONF中添加Listen_port=33333

5、配置單獨的虛擬FTP,使用虛擬FTP用戶,並使建立的四個帳戶中有不同的權限
(兩個有讀目錄的權限,一個有浏覽、上傳、下載的權限,一個有浏覽、下載、刪除和改文件名的權限)
1>配置網卡
第一塊網卡地址是10.2.3.4 掩碼是255.255.0.0
ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up
2>寫入/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退出
3>進入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服務器建立好了
4>建立logins.txt
vi /tmp/logins.txt
添加入下信息:
longlei------------用戶名
longlei------------密碼
zhangweibo
zhangweibo
jinhui
jinhui
lxp
lxp
格式:一個用戶名,一個密碼
5>建立訪問者的口令庫文件,然後修改其權限
db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db
6>進如/etc/pam.d/中創建
在中添加如下信息
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
7>在/var/ftp/創建目錄並改變其屬性和它的屬主
useradd -d /var/ftp/test qiang
chmod 700 /var/ftp/test
在目錄中添加test_file測試文件
8>進入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
注:在主配置文件中給的權限越低,在後面分用戶管理的時候對用戶的權限劃分的空間就越大,因為主配置文件最高的限制服務先讀主配置文件,然後再讀用戶的配置文件
配置完成時候執行/etc/init.d/vsftpd restart重啟ftp服務器即可
到此虛擬USER就建好了
9>在VSFTPD_CONF所在的目錄中創建virtaul文件目錄,並在文件目錄中創建以你用戶名命名的配置文件
Longlei zhangweibo jinhui lxp
在longlei中添加:
Anon_world_readable_only=no
在lxp中添加
Anon_world_readable_only=no
這樣此兩個用戶就有了浏覽目錄的權限了
在jinhui中添加
Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes
此用戶就有了上傳、下載和浏覽的權限
在zhangweibo中添加
Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes
Anon_other_write_enable=yes
此用戶就有了上傳、下載、刪除文件目錄、修改文件名和浏覽的權限
10>修改vsftpd2.conf
加入user_config_dir=/vsftpd.conf所在的目錄/virtual
重起服務器就搞定了
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服務器)*
Anon_upload_enable=yes (開放上傳權限)
Anon_mkdir_write_enable=yes (可創建目錄的同時可以在此目錄中上傳文件)
Write_enable=yes (開放本地用戶寫的權限)
Anon_other_write_enable=yes (匿名帳號可以有刪除的權限)
Anon_world_readable_only=no (放開匿名用戶浏覽權限)
Ascii_upload_enable=yes (啟用上傳的ASCII傳輸方式)
Ascii_download_enable=yes (啟用下載的ASCII傳輸方式)
Banner_file=/var/vsftpd_banner_file (用戶連接後歡迎信息使用的是此文件中的相關信息)
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端口進行數據連接)
Local_enble=yes (本地帳戶能夠登陸)
Write_enable=no (本地帳戶登陸後無權刪除和修改文件)
這是一組
Chroot_local_user=yes (本地所有帳戶都只能在自家目錄)
Chroot_list_enable=yes (文件中的名單可以調用)
Chroot_list_file=/任意指定的路徑/vsftpd.chroot_list (前提是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 填入需要登陸的本地用戶名)

6、解決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
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下上傳一個中文文件,看看效果吧,然後在把配置文件中關於字符的關掉,重起服務,在看吧.
Copyright © Linux教程網 All Rights Reserved