引用 vsftpd配置手册(实用)
生活随笔
收集整理的這篇文章主要介紹了
引用 vsftpd配置手册(实用)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
引用
xyz 的 vsftpd配置手冊(實用)作者: 木頭 ?? 來源: PHPChina 開源社區門戶
1、vsftpd配置參數詳細整理
#接受匿名用戶
anonymous_enable=YES
#匿名用戶login時不詢問口令
no_anon_password=YES
#匿名用戶主目錄
anon_root=(none)
#接受本地用戶
local_enable=YES
#本地用戶主目錄
local_root=(none)
#如果匿名用戶需要密碼,那么使用banned_email_file里面的電子郵件地址的用戶不能登錄
deny_email_enable=YES
#僅在沒有pam驗證版本時有用,是否檢查用戶有一個有效的shell來登錄
check_shell=YES
#若啟用此選項,userlist_deny選項才被啟動
userlist_enable=YES
#若為YES,則userlist_file中的用戶將不能登錄,為NO則只有userlist_file的用戶可以登錄
userlist_deny=NO
#如果和chroot_local_user一起開啟,那么用戶鎖定的目錄來自/etc/passwd每個用戶指定的目錄(這個不是很清楚,很哪位熟悉的指點一下)
passwd_chroot_enable=NO
#定義匿名登入的使用者名稱。默認值為ftp。
ftp_username=FTP
#################用戶權限控制###############
#可以上傳(全局控制).
write_enable=YES
#本地用戶上傳文件的umask
local_umask=022
#上傳文件的權限配合umask使用
#file_open_mode=0666
#匿名用戶可以上傳
anon_upload_enable=NO
#匿名用戶可以建目錄
anon_mkdir_write_enable=NO
匿名用戶其它的寫權利(更改權限?)
anon_other_write_enable=NO
如果設為YES,匿名登入者會被允許下載可閱讀的檔案。默認值為YES。
anon_world_readable_only=YES
#如果開啟,那么所有非匿名登陸的用戶名都會被切換成guest_username指定的用戶名
#guest_enable=NO
所有匿名上傳的文件的所屬用戶將會被更改成chown_username
chown_uploads=YES
匿名上傳文件所屬用戶名
chown_username=lightwiter
#如果啟動這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄
chroot_list_enable=YES
#允許使用"async ABOR"命令,一般不用,容易出問題
async_abor_enable=YES
管控是否可用ASCII 模式上傳。默認值為NO。
ascii_upload_enable=YES
#管控是否可用ASCII 模式下載。默認值為NO。
ascii_download_enable=YES
#這個選項必須指定一個空的數據夾且任何登入者都不能有寫入的權限,當vsftpd 不需要file system 的權限時,就會將使用者限制在此數據夾中。默認值為/usr/share/empty
secure_chroot_dir=/usr/share/empty
###################超時設置##################
#空閑連接超時
idle_session_timeout=600
#數據傳輸超時
data_connection_timeout=120
#PAVS請求超時
ACCEPT_TIMEOUT=60
#PROT模式連接超時
connect_timeout=60
################服務器功能選項###############
#開啟日記功能
xferlog_enable=YES
#使用標準格式
xferlog_std_format=YES
#當xferlog_std_format關閉且本選項開啟時,記錄所有ftp請求和回復,當調試比較有用.
#log_ftp_protocol=NO
#允許使用pasv模式
pasv_enable=YES
#關閉安全檢查,小心呀.
#pasv_promiscuous+NO
#允許使用port模式
#port_enable=YES
#關閉安全檢查
#prot_promiscuous
#開啟tcp_wrappers支持
tcp_wrappers=YES
#定義PAM 所使用的名稱,預設為vsftpd。
pam_service_name=vsftpd
#當服務器運行于最底層時使用的用戶名
nopriv_user=nobody
#使vsftpd在pasv命令回復時跳轉到指定的IP地址.(服務器聯接跳轉?)
pasv_address=(none)
#################服務器性能選項##############
#是否能使用ls -R命令以防止浪費大量的服務器資源
#ls_recurse_enable=YES
#是否使用單進程模式
#one_process_model
#綁定到listen_port指定的端口,既然都綁定了也就是每時都開著的,就是那個什么standalone模式
listen=YES
#當使用者登入后使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者的名稱,則將此功能開啟。
text_userdb_names=NO
#顯示目錄清單時是用本地時間還是GMT時間,可以通過mdtm命令來達到一樣的效果
use_localtime=NO
#測試平臺優化
#use_sendfile=YES
################信息類設置################
#login時顯示歡迎信息.如果設置了banner_file則此設置無效
ftpd_banner=歡迎來到湖南三辰Fake-Ta FTP 網站.
#允許為目錄配置顯示信息,顯示每個目錄下面的message_file文件的內容
dirmessage_enable=YES
#顯示會話狀態信息,關!
#setproctitle_enable=YES
############## 文件定義 ##################
#定義不能更改用戶主目錄的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
#定義限制/允許用戶登錄的文件
userlist_file=/etc/vsftpd/vsftpd.user_list
#定義登錄信息文件的位置
banner_file=/etc/vsftpd/banner
#禁止使用的匿名用戶登陸時作為密碼的電子郵件地址
banned_email_file=/etc/vsftpd.banned_emails
#日志文件位置
xferlog_file=/var/log/vsftpd.log
#目錄信息文件
message_file=.message
##############目錄定義 #################
#定義用戶配置文件的目錄
user_config_dir=/etc/vsftpd/userconf
#定義本地用戶登陸的根目錄,注意定義根目錄可以是相對路徑也可以是絕對路徑.相對路徑是針對用戶家目錄來說的.
local_root=webdisk #此項設置每個用戶登陸后其根目錄為/home/username/webdisk
#匿名用戶登陸后的根目錄
anon_root=/var/ftp
#############用戶連接選項#################
#可接受的最大client數目
max_clients=100
#每個ip的最大client數目
max_per_ip=5
#使用標準的20端口來連接ftp
connect_from_port_20=YES
#綁定到某個IP,其它IP不能訪問
listen_address=192.168.0.2
#綁定到某個端口
#listen_port=2121
#數據傳輸端口
#ftp_data_port=2020
#pasv連接模式時可以使用port 范圍的上界,0 表示任意。默認值為0。
pasv_max_port=0
#pasv連接模式時可以使用port 范圍的下界,0 表示任意。默認值為0。
pasv_min_port=0
##############數據傳輸選項#################
#匿名用戶的傳輸比率(b/s)
anon_max_rate=51200
#本地用戶的傳輸比率(b/s)
local_max_rate=5120000
########################################
別外,如果要對每個用戶進行單獨的控制,只需要在user_config_dir中建立username文件,內容為數據傳輸和用戶權利里面設置個人的合適的選項,用戶自定義文件同樣適合用pam支持的虛擬用戶
附: FTP 數字代碼的意義
110 重新啟動標記應答。
120 服務在多久時間內ready。
125 數據鏈路埠開啟,準備傳送。
150 文件狀態正常,開啟數據連接端口。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態或是系統求助響應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的聯機服務ready。
221 服務的控制連接埠關閉,可以注銷。
225 數據連結開啟,但無傳輸動作。
226 關閉數據連接端口,請求的文件操作成功。
227 進入passive mode。
230 使用者登入。
250 請求的文件操作完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,需要密碼。
332 登入時需要賬號信息。
350 請求的操作需要進一部的命令。
421 無法提供服務,關閉控制連結。
425 無法開啟數據鏈路。
426 關閉聯機,終止傳輸。
450 請求的操作未執行。
451 命令終止:有本地的錯誤。
452 未執行命令:磁盤空間不足。
500 格式錯誤,無法識別命令。
501 參數語法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件需要賬戶登入。
550 未執行請求的操作。
551 請求的命令終止,類型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的命令,名稱不正確。
2、VSFTPD官方資料翻譯版(不完整版)---摘自中國Linux公社
翻譯了部分VSFTPD的官方資料。
有些知道是什么意思,但難于翻譯。有些涉及專業的知識,我自己也不懂,只好按字面翻譯。有些我自己看不懂,只好盡量翻譯。
如果看了其中一部分覺得糊涂,請參閱官方文擋。
安裝篇
===============
這個文件詳細介紹了如何從VSFTPD的.tar.gz分發包開始,建立和安裝并運行VSFTPD。
1)建立VSFTPD
先進入解壓.tar.gz文件后產生的目錄內。如下:
cd vsftpd-2.0.1
編輯"builddefs.h"以操作compile-time設定。(tcp_wrappers build,等)
輸入make,回車(如果它不工作請發郵件通知我 .
這將產生一個二進制文件,你可以驗證一下。如下:
[chris@localhost vsftpd]$ ls -l vsftpd
-rwxrwxr-x 1 chris chris 61748 Sep 27 00:26 vsftpd
2)滿足VSFTPD安裝所需的一些條件
VSFTPD默認設置需要一個"nobody"用戶,如果這個用戶不存在,那么添加它。如下:
[root@localhost root]# useradd nobody
useradd: user nobody exists
VSFTPD默認設置需要一個空目錄:/usr/share/empty.增加這個目錄,如果它還不存在的話。如下:
[root@localhost root]# mkdir /usr/share/empty/
mkdir: cannot create directory `/usr/share/empty': File exists
如果容許匿名用戶(anonymous),那么你將需要一個"ftp"用戶和其home目錄(這個home目錄不屬于“ftp”用戶,而且“ftp"用戶也對其沒有寫權限)在你的系統中存在。
以下命令用來創建一個"ftp"用戶,如果它還不存在的話。
[root@localhost root]# mkdir /var/ftp/
[root@localhost root]# useradd -d /var/ftp ftp
(即使你的"ftp"用戶已經存在,完成以下這兩步也是很有好處的:)
[root@localhost root]# chown root.root /var/ftp
[root@localhost root]# chmod og-w /var/ftp
3)安裝VSFTPD的配置、執行和幫助文件。
輸入"make install"后會將二進制文件和幫助文件拷貝到適當的目錄。
你也可以手工拷貝這些文件:
cp vsftpd /usr/local/sbin/vsftpd
cp vsftpd.conf.5 /usr/local/man/man5
cp vsftpd.8 /usr/local/man/man8
"make install"不會拷貝默認的配置文件,所以建議你手工拷貝:
cp vsftpd.conf /etc
daidong注:根據你系統版本的不同,也可能是 cp vsftpd.conf /etc/vsftpd
4)測試 (無inetd影響)
VSFTPD能運行在獨立模式(standalone)或者通過inetd(xinetd)來啟動。
你能通過inetd來運行vsftpd以更好地控制它。但我們在首次運行時不這么做,以便檢查系統是否現在配置正常。
編輯/etc/vsftpd.conf(daidong注:也可能是/etc/vsftpd/vsftpd.conf),并在最下面加入以下這一行:
listen=YES
這將告訴VSFTPD不要從inetd啟動。
OK,現在試著啟動FTP。
以ROOT登錄。
確定你沒有運行其他FTP服務(否則VSFTPD不能占用FTP所需的21端口)。
運行那個二進制文件,如下:
[root@localhost root]# /usr/local/sbin/vsftpd &
[1] 2104
如果一切正常,那么你將連上FTP服務器,如下:
[chris@localhost chris]$ ftp localhost
Connected to localhost (127.0.0.1).
220 (vsFTPd 1.1.1)
Name (localhost:chris): ftp
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (127,0,0,1,229,133)
150 Here comes the directory listing.
d--x--x--x 2 0 0 4096 Jan 14 2002 bin
d--x--x--x 2 0 0 4096 Apr 21 20:52 etc
drwxr-xr-x 2 0 0 4096 Apr 21 20:52 lib
drwxr-sr-x 2 0 50 4096 Jul 26 22:58 pub
226 Directory send OK.
ftp>
5)從inetd或者類似方式啟動(官方推薦使用standalone方式)
你也許想通過inetd或者類似方式啟動VSFTPD,因為這能給你更多的感受。例如xinetd就有很多的設置。
(注意:VSFTPD的內在機制屏蔽了xinetd的大多數的有用的設置)。
如果使用標準的"inetd",你需要編輯/etc/inetd.conf,在其中加入以下一行:
ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd
(確定你刪除或者注釋掉一些已存在的FTP服務配置行。如果你沒有安裝tcp_wrappers,或者不想使用它們,那么請去掉/usr/sbin/tcpd part).
inetd需要指定并重新載入它的配置文件:
kill -SIGHUP `pidof inetd`
如果你想使用"xinetd",請參閱我們提供的范例 /EXAMPLE/INTERNET_SITE/README. 而其他范例文件將告訴你如何調配出更強大的xinetd功能。
6)為本地登錄配置PAM文件(可選)
如果你在一臺激活了PAM的設備上運行VSFTPD,你需要提供一個 /etc/pam.d/ftp 文件。否則非匿名用戶將無法登錄服務器。
(注:如果你的PAM版本比較老,那么這個文件也許是 /etc/pam.conf).
做為一個標準設置,你可以拷貝一個已提供的范例文件,如下:
cp RedHat/vsftpd.pam /etc/pam.d/ftp
7)自定義你的配置文件
完成以上的配置后,建議你安裝一個配置文件。默認的配置文件位置是/etc/vsftpd.conf. 在VSFTPD軟件分發包內有一個范例配置文件。
你可以拷貝其為/etc/vsftpd.conf以做進一步修改。
cp vsftpd.conf /etc
(daidong注:也可能是 cp vsftpd.conf /etc/vsftpd ).
這個默認配置即不容許本地登錄也不容許匿名用戶上傳,也許你希望更改這個配置。
其它
===================
測試平臺 (已通過)
-流行的,功能完善的平臺都能測試通過。在以下平臺的較新版本,VSFTPD工作得很好。在其大部分較早的版本下,也運行正常。
- RedHat Linux
- RedHat Enterprise Linux
- Solaris / GNU tools (Solaris 8 or newer)
- SuSE Linux
- Debian Linux
- OpenBSD
- FreeBSD
- NetBSD
- HP-UX / GNU tools
- IRIX / GNU tools
- Mac OS X (note; older versions have setgroups() problem. 10.3.4 reported OK)
虛擬用戶1
=============
這個例子示范了如何為虛擬用戶設置VSFTPD/PAM。
虛擬用戶是一個在系統中并不作為一個登錄實體而存在的用戶。使用虛擬用戶比使用真實的用戶更安全,因為這個賬號只能用于FTP服務器。
虛擬用戶經常用來提供給不大可信任的用戶訪問某些資源,而這些資源通常是其他普通用戶不能訪問的。
1)創建虛擬用戶數據庫
我們將使用pam_userdb來認證虛擬用戶。這需要提供一個“db"格式(一種通用數據庫格式)的用戶名/密碼文件。
創建一個"db"格式的文件,首先要創建一個標準文本文件,并把用戶名,密碼以豎直排列方式輸入。如logins.txt:
tom
foo
fired
bar
這個例子中,tom用戶的密碼是foo.fired用戶的密碼是bar.
以ROOT登錄,創建一個數據庫文件,如下:
db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
(這要求berkeley db程序已經安裝)
(注:一些系統也許安裝了多個版本的"db",所以某些情況下你可能使用"db3_load"才是正確的。對于一些 Debian系統就是這樣。
關鍵在于要讓pam_userdb相信它的登錄數據庫是哪一個db版本所產生(一般都是db3,盡管你的系統里可能安裝的是db4).)
這將創建/etc/vsftpd_login.db文件。顯然,你希望設定這個文件的權限:
chmod 600 /etc/vsftpd_login.db
要了解更多關于維護你的登錄數據庫的信息,請在"berkeley DB"察看相關文檔:
http://www.sleepycat.com/docs/utility/index.html
2)用你的新數據庫創建一個PAM文件
請參考范例vsftpd.pam,它包含2行:
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
這是告訴PAM用新的數據庫去驗證用戶。把這個PAM文件拷貝到PAM目錄,一般是/etc/pam.d
cp vsftpd.pam /etc/pam.d/ftp
3)為虛擬用戶設置home目錄
useradd -d /home/ftpsite virtual
ls -ld /home/ftpsite
(which should give):
drwx------ 3 virtual virtual 4096 Jul 30 00:39 /home/ftpsite
我們已經創建了一個名叫"virtual"的用戶,home目錄是"/home/ftpsite".
我們拷貝一些東西到這個下載目錄:
cp /etc/hosts /home/ftpsite
chown virtual.virtual /home/ftpsite/hosts
4)創建你的vsftpd.conf配置文件
請參考這個目錄下的例子。讓我們一行行地看一看這些配置:
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
這將把虛擬用戶鎖定在我們在以上設置的/home/ftpsite目錄內。
guest_enable=YES
guest_username=virtual
guest_enable非常重要-它激活了虛擬用戶!而guest_username說明所有的虛擬用戶都對應我們在上面設置的真實用戶:“virtual".
這同時確定了虛擬用戶在文件系統中的位置,也就是說,虛擬用戶的home目錄即"virtual"用戶的home目錄:/home/ftpsite。
listen=YES
listen_port=10021
這讓VSFTPD以獨立模式(standalone)運行,而不是從inetd方式啟動。也就是說,你運行VSFTPD可執行文件就啟動了FTP服務。
同時也讓VSFTPD啟用非標準端口10021來監聽FTP請求(FTP一般使用21端口)。
pasv_min_port=30000
pasv_max_port=30999
這設定了被動模式的FTP請求端口。當你配置了一個防火墻的時候,這個配置就很好用。
拷貝范例配置文件到/etc
cp vsftpd.conf /etc/
(daidong注:也可能是/etc/vsftpd)
5)啟動VSFTPD
到VSFTPD二進制文件所在的目錄,輸入:
./vsftpd
如果一切正常,這個命令將生效。否則,你將會看到一些錯誤信息的反饋。
6)測試
啟動另一個會話。(或者ctrl-z,再輸入"bg",讓VSFTPD在后臺運行)。
這是一個FTP會話的例子:
ftp localhost 10021
Connected to localhost (127.0.0.1).
220 ready, dude (vsFTPd 1.1.0: beat me, break me)
Name (localhost:chris): tom
331 Please specify the password.
Password:
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/"
ftp> ls
227 Entering Passive Mode (127,0,0,1,117,135)
150 Here comes the directory listing.
226 Transfer done (but failed to open directory).
ftp> size hosts
213 147
ftp>
注釋:
密碼是"foo"
出現”failed to open directory“的話,別擔心。這是因為/home/ftpsite目錄不容許被任意瀏覽。
(我們可以更改anon_world_readable_only=NO以消除告警,但為了安全,還是保留這個配置)。
我們能通過size命令看到我們已經訪問了被我們拷貝到這里的"hosts"文件。
vsftpd.conf
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=virtual
listen=YES
listen_port=10021
pasv_min_port=30000
pasv_max_port=30999
虛擬用戶2
===============
這個例子將演示如何擴展“VIRTUAL_USERS”那個范例,從而實現更復雜一點的配置。
讓我們假定我們需要2種不同的虛擬用戶:一種只能瀏覽并下載資源,另一種能上傳文件并瀏覽站內資源。
要激活這個設置,我們將使用VSFTPD的強大的“單個用戶配置”功能(是V1.1.0后出現的新功能)。
在前一個虛擬用戶范例中,我們創建了2個用戶-tom和fred.
我們將實現fred有寫權限以上傳新文件,同時tom只能下載文件。
1)激活單個用戶配置功能。
要激活這個功能,需要增加以下配置行到配置文件:
user_config_dir=/etc/vsftpd_user_conf
并且創建目錄:
mkdir /etc/vsftpd_user_conf
2)授予tom讀取所有文件和目錄的權限
在上一個例子的最后,我們注意到虛擬用戶只能瀏覽所有的完全可讀屬性的目錄和文件。我們使/home/ftpsite完全可讀,而且被上傳的文件也
賦予了完全可讀的權限(daidong注:意思是說這樣虛擬用戶就能讀取所有的文件了)。但實現這個目的的另一個方法是授權tom能下載那些非完全可讀的文件。
對于tom,他的配置文件中需要修改一個設置:
anon_world_readable_only:
設為"anon_world_readable_only=NO" > /etc/vsftpd_user_conf/tom
(daidong注:既把默認配置修改了anon_world_readable_only后,復制到/etc/vsftpd_user_conf下,名字為tom)
驗證一下結果-以tom登錄,“ls”將返回一個目錄列表。如果以fred登錄將不會如此。
注意:重啟VSFTPD以啟用配置文件/etc/vsftpd.conf(高級用戶也可以發送SIGHUP給VSFTPD的監聽進程).
3)授予freg讀取所有文件/目錄并創建新文件/目錄的權限,但讓他不能對已存在的文件/目錄進行操作.
echo "anon_world_readable_only=NO" > /etc/vsftpd_user_conf/fred
echo "write_enable=YES" >> /etc/vsftpd_user_conf/fred
echo "anon_upload_enable=YES" >> /etc/vsftpd_user_conf/fred
驗證一下-以tom登錄,將不能上傳,而fred就可以.
試圖刪除一個文件--噢,你們倆都不行!
轉載于:https://www.cnblogs.com/zhihaowang/archive/2010/10/11/10128621.html
總結
以上是生活随笔為你收集整理的引用 vsftpd配置手册(实用)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 抽取PDF文本
- 下一篇: SQL Server Integrati