茫茫網海中的冷日
         
茫茫網海中的冷日
發生過的事,不可能遺忘,只是想不起來而已!
 恭喜您是本站第 1730330 位訪客!  登入  | 註冊
主選單

Google 自訂搜尋

Goole 廣告

隨機相片
PIMG_00140.jpg

授權條款

使用者登入
使用者名稱:

密碼:


忘了密碼?

現在就註冊!

小企鵝開談 : [分享]VSFTP 參數大全

發表者 討論內容
冷日
(冷日)
Webmaster
  • 註冊日: 2008/2/19
  • 來自:
  • 發表數: 15773
[轉貼]VSFTPD的菜鳥篇
VSFTPD的菜鳥篇:
作者:歡樂1982 2007-09-03 23:34 星期一 晴
版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明
http://www.5ilinux.com/vsftp01.html
  
   VSFTPD的菜鳥篇:
    
   這是我這個菜鳥學習LINUX所寫的第一篇文章,是比較基礎的FTP架設的應用,如果我寫有什麼問題請大家多指教,我後續會陸續出進階篇把FTP中各種詳細的配置跟大家一起進行探討。
   我所用的是LINUX AS+VSFTPD-1.2.0-4的系統架構,在這裡說明的是如果對配置文件不是很熟悉,最好做個備份,以免誤操作:
  
   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 進程號
  
   作者:龍磊
  
  
  ------------------------ Quick Setup for Impatient ------------------------
  
  
  This document tends to be 10 minutes "grab & use" guide for Pure-FTPd
  
  
  
  ==== INSTALATION ====
  
  If you don't have pure-ftpd installed on your system, grab latest source
  package from http://www.pureftpd.org.
  Let's say we have downloaded file 'pure-ftpd-1.0.20.tar.bz2'
  
   $ tar -xjvf pure-ftpd-1.0.20.tar.bz2
   $ cd pure-ftpd-1.0.20
 
  Now configure, build and install package like this:
  
   $ ./configure --with-everything
   $ make
   $ make install

  Everything should be at the right place in /usr/local
  
  
  
  ==== CREATE NEW USER ACCOUNT ====
  
  First thing to do: create group named "ftpgroup" and system user "ftpuser"
  with following commands:
   $ groupadd ftpgroup
   $ useradd -g ftpgroup -d /dev/null -s /etc ftpuser

  Create directory "/home/ftpgroup"
   $ mkdir /home/ftpgroup

  Now, let's create "joe", whoose home directory will be /home/ftpusers/joe
   $ pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe -m
  Joe's password is asked twice.
  
  
  
  ==== LAUNCH THE SERVER ====
  
  Type following command to start pure-ftpd server:
   $ /usr/local/sbin/pure-ftpd -j -lpuredb:/etc/pureftpd.pdb &
  
  Don't forget & at the end!
  Now try to ftp://localhost and log as "joe".
  
  IMPORTANT NOTICE: By default, /etc/pureftpd.passwd and /etc/pureftpd.pdb
  files matter for authentification. If you have installed binary version
  of Pure-FTPd from your disto package management system (rpm,deb,..) these
  files can have different location. (eg. /etc/pure-ftp/pureftpd.passwd)
  
  There is no need to restart server when another new user is created.
  You can create "mike" now:
   $ pure-pw useradd mike -u ftpuser -d /home/ftpusers/mike -m

  and log as "mike".
  
  
  
  ==== SETTING UP ANONYMOUS FTP ====
  
  Well, let's create system user named "ftp"
   $ useradd ftp

  If "ftp" user already exists, check your /etc/passwd what his
  homedir is. (can be /var/ftp or whatever)
  
  Home directory of "ftp" user MUST be readable.
  
  Now, pure-ftpd should accept login "anonymous" or "ftp".
  Anonymous user will see directory /home/ftp
  
  FEW THINGS TO NOTICE: If server is run with "-i", anonymous users will
  not be able upload/delete files whatever directory permissions are.
  If you wish to create writeable "incomming", run server without "-i" and
  set appropriate permissions. Writeable directories must have owner set to 'ftp'.
  Don't chown the public files to 'ftp', just writable directories.
  
  Example:
  chmod 555 /home/ftp
  chown ftp /home/ftp/incomming
  chgrp ftp /home/ftp/incomming
  chmod 755 /home/ftp/incomming

  If you want to allow users to create directories, run server with "-M" switch.
  
  TIP: Place ".banner" file with some text in /home/ftp (user will see this text when logging)
  
  
  
  ==== STOPPING Pure-FTPd SERVER ====
  
  We need to find PID of pure-ftpd process and kill it.
  
  1) search in process table
   $ ps aux | grep pure

  and look for line like this:
   root 3954 0.0 0.1 3992 620 pts/3 S 20:43 0:00 pure-ftpd (SERVER)

  PID is 3954
  
  2) /var/run/pure-ftpd.pid
  
  This file is created always when server is launched and contains the PID we need
  
  Now simple kill this process:
   $ kill 3954 (or whatever PID you've got)

  
  
  ==== Other Quick Usefull Info ====
  
  - if you want pure-ftpd to start automatically on boot,
   add "launch command" (eg. /usr/local/sbin/pure-ftpd -j -lpuredb:/etc/pureftpd.pdb &)
   to file /etc/rc.d/rc.local
  - use command 'pure-ftpwho' to see actual ftp activity
  - add '-O clf:/var/log/pureftpd.log' when starting server and transfers
   will be logged into /var/log/pureftpd.log
  
  
  ==== Other not Quick Usefull Info ====
  
  Can be found in documentation files, README (at least recognised switches)
  and README.Virtual-Users are recommended.
  
  
  Feel free to send your comments to sector[`at`]ynet[`dot`]sk
  
  
  
  [轉貼]Pure-ftpd on FreeBSD之攻略(中文簡體版)
  
  
  作者:leolee761128 發表時間:2002/12/22 11:57am
  
   此貼(繁體原版)MaxBSD以前已經貼出來過,個人感覺看起來不方便,就把它弄成了簡體的,希望對大家有點幫助。
  有錯漏的地方請指正,謝過!
  ********************************************************************************
   Pure-ftpd on FreeBSD之攻略
   ----[作者]far
  <一>;PureFTPD介紹
   顧名思義.他是純粹的一套FTPD.(-.-"廢話).她好用在哪裡?唔...就是
   好用.用了就對了.問那麼多幹嘛.^_^!!
   --------------------------------------------------------------
  <二>;安裝PureFTPD
   FreeBSD的ports裡面也有.如果你偷懶的話.可以直接到ports下安裝即
   可(/usr/ports/ftp/pure-ftpd).不過我建議你去他的官方網站抓
   新版的(http://www.pureftpd.org/).我用的是1.0.12版.用起來還不錯.
   以往我都是懶人安裝法:到ports目錄下打make install clean.完成!!
   後來.發現用ports裝並不能將pure-ftpd的強大體現出來.(其實是舊版
   fxp支持上有問題.)所以...難得...這麼懶的我.也就用source裝了.
   廢話了好多.:D
  
   A。把抓下來的source解開.(建議解在/tmp下)
   #tar zxvf pure-ftpd-1.0.12.tar.gz

   如果沒事做.可以看看裡面的README.* 很值得看.如果你有什
   麼特殊需求的話.也可以直接在裡面去找.應該是可以找到你要的東
   東.(Ex: LDAP.MySQL.Virtual.......)
  
   B。開始準備依你的意願做出你想要的ftp-server.
   #./configure --with-paranoidmsg --with-sysquotas --with-puredb \
   --with-altlog --with-throttling --with-ratios --with-ftpwho \
   --with-welcomemsg --with-uploadscript --with-largefile \
   --with-virtualhosts --with-virtualchroot --with-diraliases \
   --with-quotas --with-peruserlimits --with-language=traditional-chinese

   在README中[ADVANCED COMPILATION]的段落中,有對上面的使用的
   詳細說明.在這裡我只對常用的做簡略的解釋.
   --without-standalone
   不能以standalone的方式執行ftpd.
   --without-inetd
   不能以inetd的方式執行ftpd.
   --without-iplogging
   做log時不將IP 地址給log下來.
   --without-shadow
   不做shadow.除非是用PAM, LDAP or SQL.不然極不建議拿掉.
   --without-usernames
   文件列表只會列出UID & GID,不列出實際user or group name.
   --without-humor
   嘿嘿嘿....
   --without-ascii
   不支持7-bits transfers(ASCII).
   --with-paranoidmsg
   唔....不知該怎麼說.算是可以給特定人的信息吧.
   --with-sysquotas
   吃系統的quota設定.
   --with-minimal
   最小化安裝.
   --with-pam
   --with-puredb
   --with-ldap
   --with-mysql
   --with-pgsql
   以上五種都是存儲資料的格式?!(算吧?!).看你比較習慣什麼.
   我是比較喜歡用puredb.
   --with-altlog
   留log拉....
   --with-cookie
   使用者進站看到的東東.類似進站畫面.
   --with-ratios
   上下傳比.
   --with-throttling
   頻寬可設限.
   --with-ftpwho
   可用pure-ftpwho來看線上使用者.像是Serv-u的線上狀態.
   --with-uploadscript
   當一個文件被完整上傳完後自動呼叫某一script去對這個文件
   處理.當然.這個script得你自己寫.
   --with-largefile
   支持下載超過2G的文件.
   --with-virtualhosts
   跟http的virtualhost有異曲同工之妙.
   --with-virtualchroot
   配合上面的chroot.
   --with-diraliases
   跟Serv-U上面的link功能一樣.
   --with-nonroot
   不需root權限.一般user即可啟動ftpd.
   --with-quotas
   使用quota.(非系統下的quota)
   --with-peruserlimits
   enable per-user concurrency limits.Avoid this on
   very loaded servers.(太難翻譯了)
   --with-everything
   所有功能全上.
   --with-language=traditional-chinese
   顯示出來的信息的語言.缺省為英語.
   (意外的發現.在config.h中作者以為大陸用traditional-chinese
   台灣用simplified-chinese.但不管如何,這不影響我們的使用)

   C.好了就準備安裝上去吧!!
   #make ; make check ; make install

   D.把一些東東搬到該放的位置.
   #chmod 755 configuration-file/pure-config.pl
   #cp configuration-file/pure-config.pl /usr/local/sbin/
   #cp configuration-file/pure-ftpd.conf /usr/local/etc/

  -------OK.PureFTPD就這樣裝完了.其他Config等下回分解.:p-----------
  
   在上一章節.我們已經成功把PureFTPD架起來了.現在我們要開始設定他的設定文件.:)
  --------------------------------------------------------------------------
  <三>;pure-ftpd.conf的設定
   *在上一次,我們把PureFTPD的default設定文件(pure-ftpd.conf)拷貝一
   份在/usr/local/etc/下.(其實哪都可以,只是我習慣).建議再拷貝
   一份叫pure-ftpd.xxx.conf(如果你要跑多支ftpd的話.xxx部分可以自
   由替代成你要的名字.方便就好).開始編輯pure-ftpd.xxx.conf.
   #vim pure-ftpd.xxx.conf (看你喜歡用什麼編輯器.自己選用)
  
  ####pure-ftpd.xxx.conf#######
  ChrootEveryone yes
  TrustedGID 50
  #以上兩者要一起用
  BrokenClientsCompatibility no
  MaxClientsNumber 999
  #最大鏈接數
  Daemonize yes
  #Fork in background
  MaxClientsPerIP 5
  #每個ip最多鏈接數
  VerboseLog no
  #是否要把所有client端的指令都log下來
  DisplayDotFiles no
  #顯示開頭的文件
  AnonymousOnly no
  #是否只讓匿名登錄
  NoAnonymous yes
  #不開放匿名登入
  SyslogFacility ftp
  DontResolve yes
  #不反向解釋客戶端的ip
  MaxIdleTime 5
  #最大閒置時間
  PureDB /ftp/etc/pureftpd.pdb
  #使用者資料的DB存放地點 [由於我是用PureFTPD的內建DB.固有此選項]
  UnixAuthentication yes
  #如果你想要有簡單的Unix(/etc/passwd)的認證的話
  LimitRecursion 1000 3
  #ls最多列出1000個文件.最深3層
  MaxLoad 4
  #當system load超過4時.使用者將不能再下載
  AntiWarez no
  #上傳的文件不能被下載(owner is ftp).等到local admin確認
  Bind 21
  #要綁定哪個ip/port
  #格式->; 127.0.0.1,21 如果只寫port表All ip,port
  Umask 133:022
  #上傳文件的Umask.(;:;)
  MinUID 1000
  # UID至少多少才能登錄
  AllowUserFXP yes
  #支不支持FXP
  ProhibitDotFilesWrite no
  ProhibitDotFilesRead no
  #.開頭的文件能不能被讀寫
  AutoRename no
  #上傳文件若有相同文件名自動改名(file.1,file.2...)
  TrustedIP 10.1.1.1
  #鎖IP.
  AltLog stats:/ftp/etc/log/pureftpd.log
  #log存放地點
  NoChmod yes
  #不給Chmod指令的權限
  KeepAllFiles yes
  #使用者可續傳.但不可刪除文件
  CreateHomeDir no
  #如果user的home不存在自動建立
  PIDFile /ftp/etc/log/pure-ftpd.pid
  #記錄pure-ftpd的PID文件
  Quota 1000:10
  #<文件數:Megabytes>;
  CallUploadScript yes
  #呼叫UploadScript
  MaxDiskUsage 99
  #當硬盤使用率到多少時將停止上傳
  NoRename yes
  #不給改文件名
  PerUserLimits 3:20
  #<每個賬號最多可登入幾次:Anonymous最多可同時登入幾次>;
  #############################

   -----------------------------------------------------------
  <四>;建立賬號
   有了ftp.理所當然得也要有賬號才行.
   #vipw
   ftpuser:$1$rEO39XEq$kRMKuch12ugYu3hCh/sPA.:9999:9999::0:0:ftp:/ftp:
   /sbin/nologin
   #vim /etc/group
   ftpgroup:*:9999:
   上面是ftp 客戶以什麼身份登入.
   接下來我想要把pure-ftpd要吃的密碼文件選個地方放.我是選擇放在/ftp/etc/下
   #pure-pw far -f pureftpd.ps -u 9999 -g 9999 -d /ftp/far -y 2
   #pure-pw mkdb pureftpd.pdb -f pureftpd.ps

   useradd ; [-f <密碼文件>;] -u ; [-g ;]
   -D/-d <主目錄>; [-c ;]
   [-t <下載頻寬>;] [-T <上傳頻寬>;]
   [-n <最多下載文件數>;] [-N <最多下載Mb>;]
   [-q ;] [-Q ;](上下傳比)
   [-r ;/;] [-R ;/;]
   [-i ;/;] [-I ;/;]
   [-y <同時最多鏈接數>;]
   [-z ;-;](可登入時間24小時制) [-m]
   pure-pw usermod ; -f ; -u ; [-g ;]
   -D/-d ; -[c ;]
   [-t ;] [-T ;]
   [-n ;] [-N ;]
   [-q ;] [-Q ;]
   [-r ;/;] [-R ;/;]
   [-i ;/;] [-I ;/;]
   [-y ;]
   [-z ;-;] [-m]
  
   pure-pw userdel ; [-f ;] [-m]
  
   pure-pw passwd ; [-f ;] [-m]
  
   pure-pw show ; [-f ;]
  
   pure-pw mkdb [; [-f ;]]

   -d ; : chroot user (建議值)
   -D ; : don't chroot user
   -y 0 : 同時最多鏈接數不限
   -m : 同時更新/etc/pureftpd.pdb文件.(如果PureDB不放置在此的請不要加)
   For a 1:10 ratio, use -q 1 -Q 10
   To allow access only between 9 am and 6 pm, use -z 0900-1800
   ****************************************************************
   關於文件權限部份.(需要將可Upload的使用者改成ftpuser:ftpgroup.可
   下載的文件權限也要是644)
   #chown -R ftpuser:ftpgroup Upload/

   ------------------------------------------------------------------
  <五>;啟動
   到/usr/local/bin/rc.d/下編輯一個pure-ftpd.sh
  #############################
  #!/bin/sh
  
  case "$1" in
   start)
   if [ -f /usr/local/etc/pure-ftpd.xxx.conf ]; then
   /usr/local/sbin/pure-config.pl /usr/local/etc/pure-
  ftpd.xxx.conf >; /dev/null 2>;&1 && echo -n 'pure-ftpd Begin!'
   fi
   ;;
   stop)
   /usr/bin/killall pure-ftpd >; /dev/null 2>;&1 && echo -n 'pure-
  ftpd Stop!'
   ;;
   *)
   echo ""
   echo "Usage: `basename $0` { start | stop }"
   echo ""
   exit 64
   ;;
  esac
  #############################
   #chmod +x pure-ftpd.sh
   #./pure-ftpd.sh start

   ok...開始測試看看吧
   ftp xxx.far2.net 21
   Connected to ftp.far2.net.
   220-=(<*>;)=-.:. (( 歡迎來到 PureFTPd 1.0.12 )) .:.-=(<*>;)=-
   220-您是第 48 個使用者,最多可達 999 個連線
   220-現在本地時間是 19:52 負載是 1.37。服務器端口: 21。
   220-這是私用系統 - 不開放匿名登入
   220 在 5 分鐘內沒有活動,您會被斷線。
   Name (xxx.far2.net:far):far
   331 使用者 far OK. 需要密碼.
   Password:
   230-使用者 far 有群組存取於: ftpgroup
   230-這個服務器支持FXP傳輸
   230 OK. 目前限制的目錄是 /
   Remote system type is UNIX.
   Using binary mode to transfer files.
   ftp>;
  
   當你看到以上信息時.恭喜你.你已經成功的架起一個ftp了.:)
  
   --------------------------------------------------------------------
  
   是不是很簡單呢.現在你可以好好享用你的FTP Server了.:)
  
   --------------------------------------------------------------------
  
   ps.如果你是超超超超超超大的b3k站.PureFTPD下面有幾點建議.
  
   * Compile with :
   #env CFLAGS="-O2 -fomit-frame-pointer -fgcse -Os"
   #./configure --with-minimal --without-inetd --without-pam
   #make install-strip

   -=特殊功能都不要加.以減輕Server負擔=-
  
   *用standalone的模式去啟動.不要打開pure-ftpwho & pure-uploadscript
   & per-userlimits 的選項
  
   -=因為那幾個都是很吃系統資源的工具=-
  
   ;
   *編輯/etc/fstab, 對所有filesystems的options增加",noatime"
  
   *在/boot/loader.conf裡增加以下兩行
   hw.ata.wc="1"
   kern.ipc.nmbclusters="60000"

   *在/etc/sysctl.conf裡增加
   vfs.vmiodirenable=1
   kern.ipc.maxsockbuf=2097152
   kern.ipc.somaxconn=8192
   kern.ipc.maxsockets=16424
   kern.maxfiles=65536
   kern.maxfilesperproc=32768
   net.inet.tcp.rfc1323=1
   net.inet.tcp.delayed_ack=0
   net.inet.tcp.sendspace=65535
   net.inet.tcp.recvspace=65535
   net.inet.udp.recvspace=65535
   net.inet.udp.maxdgram=57344
   net.local.stream.recvspace=65535
   net.local.stream.sendspace=65535

  
  vsFTP服務器的配置
  
  VSFTPD的高手篇
  
  版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明
  
  [原文出處 http://www.5ilinux.com/vsftp02.html]
  
  我可不是高手!!!^_^我只不過是個菜鳥,盡我的能力寫出了我這個菜鳥覺得的高手篇,所以有什麼錯誤請大家指正哦!!!
  
  環境:linux as 3.0 + vsftpd -1.2.0-4的系統架構,是在獨立服務器下的哦!討厭XINETD^_^
  配置本地組訪問的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這三個選項是有的哦!
  
  配置獨立FTP的服務器的非端口標準模式進行數據連接
  
  這個非常容易:在VSFTPD。CONF中添加
   Listen_port=33333

  就可以了啦!
   
  配置單獨的虛擬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
   zhangweibo
   jinhui
   jinhui
   lxp
   lxp

  格式要按照我的來哦,一個用戶名,一個密碼啦
  E:建立訪問者的口令庫文件,然後修改其權限
   db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db

  F:進如/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

  G:在/var/ftp/創建目錄並改變其屬性和它的屬主
   useradd -d /var/ftp/test qiang
   chmod 700 /var/ftp/test

  在目錄中添加test_file測試文件
  H:進入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就建好了
  I:在vsftpd.comf所在的目錄中創建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

  此用戶就有了上傳、下載、刪除文件目錄、修改文件名和瀏覽的權限
  J:修改vsftpd2.conf
  
  加入user_config_dir=/vsftpd.conf所在的目錄/virtual
  
  重起服務器就搞定了
  
  
  vsftpd.conf中的所有配置信息
  
  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=/任意指定的路徑//任意文件目錄 指定虛擬用戶存放配置文件的路徑

  
  vsFTP服務器的維護
  
  現在這裡還沒有關於維護vsftp服務器的資料。歡迎大家編輯2
  vsFTP使用的一些補充
  補充一:如何有選擇的把用戶限制在家目錄中呢?
  
  我們要自己建一個文件,在/etc目錄中
   #touch /etc/vsftpd.chroot_list

  以beinan和nanbei這兩個用戶限制在他們所在的家目錄中,而其它的FTP用戶不做此限制。
  
  在vsftpd.chroot_list這個文件中,把beinan和nanbei添上去就行,注意,每個用戶占一行。
   beinan
   nanbei

  然後改/etc/vsftpd/vsftpd.conf文件,找如下的兩行
   #chroot_list_enable=YES
   #chroot_list_file=/etc/vsftpd.chroot_list

  把前面的#號去掉,也就是這樣的
   chroot_list_enable=YES
   chroot_list_file=/etc/vsftpd.chroot_list

  如果沒有這樣的兩行,就可以自己添加上去也是一樣的。
  
  設置好後,重新vsFTPD服務器。
  
  補充一之補充:如何把系統內所有的FTP用戶都限制在家目錄中呢??經juliaugong兄的提示,我查找了vsFTPd的洋文說明,證明這個選項是一刀切的解決所有的用戶都能限制在家目錄中
  
  我們可以通過更改vsftpd.conf文件,加入如下的一行
   chroot_local_user=YES

  改完配製文件,不要忘記重啟vsFTPd服務器
  
   [root@linuxsir001 root]# /etc/init.d/vsftpd restart
   關閉 vsftpd: [ 確定 ]
   為 vsftpd 啟動 vsftpd: [ 確定 ]
   [root@linuxsir001 root]#

  補充二:打開vsFTP服務器的日誌功能
  
  把下面xferlog_file前面的#號對掉,也就是把vsftp的log功能打開,這樣我們就能在/var/log目錄下查看vsftpd.log。這是vsFTP的日誌功能,這對於我們來說是極為重要的。
   #xferlog_file=/var/log/vsftpd.log

  補充三:如何讓綁定IP到vsFTP?
  
  也就是說,如何讓用戶只能通過某個IP來訪問FTP。其實這個功能很有意思。如果綁定的是內網的IP,外部是沒有辦法訪問的。如果綁定的是對外服務的IP,內網也只能通過對外服務的IP來訪問FTP
  
  在/etc/vsftpd/vsftpd.conf中加一行,以我的局域網為例,請看第一帖中的操作環境,這樣外網就不能訪問我的FTP了,內網也可能通過192.168.0.2來訪問FTP
   listen_address=192.168.0.2

  加完後,要重啟vsFTP服務器
   [root@linuxsir001 root]# /etc/init.d/vsftpd restart
   關閉 vsftpd: [ 確定 ]
   為 vsftpd 啟動 vsftpd: [ 確定 ]
   [root@linuxsir001 root]#

  補充四:如何讓vsFTP服務器限制鏈接數,以及每個IP最大的鏈接數??
  
  答:應該改vsFTP服務器的配製文件vsftpd.conf,加入下面的兩行:
   max_clients=數字
   max_per_ip=數字

  舉例:我想讓我的vsFTP最大支持鏈接數為100個,每個IP,最多能支持5個鏈接,所以我應該在vsftpd.conf中加上如下的兩行:
   max_clients=100
   max_per_ip=5

  改好了配製文件,不要忘記啟動vsftp服務器。
  
  
  補充五:如何限制下載的速度?
  
  anon_max_rate=數字 註:這是匿名的下載速度 local_max_rate=數字 註:這是vsFTP服務器上普通用戶的下載速度

  註:這個數字的單位是字節,所以我們要計算一下。比如我想讓匿名用戶和vsFTP上的用戶都以80KB下載,所以這個數字應該是1024x80=81920 所以我們要在vsftpd.conf中加入下面的兩行
   anon_max_rate=81920
   local_max_rate=81920

  不要忘記重啟vsftpd服務
  補充六:我的硬盤空間有限,怎麼辦?
  
  我的硬盤空間有限,如何把帳號ftp默認的路徑/var/ftp更改到別處?或者是,我的linux所有的目錄都放在/根分區,因為空間緊張,我能否把ftp這個用戶的默認路徑放到別的分區?
  
  可以,應該如下操作!
  
  首先要把ftp這個用戶刪除
   #userdel -r ftp

  會有錯誤信息,不過不用理,這是正常的。
  
  然後我們再把這個用戶添加上,比如我想為帳號ftp的家目錄設置在/mnt/LinG/ftp,我們就可以如下操作
   [root@linuxsir001 root]# mkdir /mnt/LinG
   [root@linuxsir001 root]# adduser -d /mnt/LinG/ftp -g ftp -s /sbin/nologin ftp

  僅僅是這樣做還不行,因為這樣還是不能讓匿名用戶找到它的家目錄,所以我們必須改變/mnt/LinG/ftp這個目錄的權限。
   [root@linuxsir001 root]# chmod 755 /mnt/LinG/ftp/
   [root@linuxsir001 root]# chown -R root.root /mnt/LinG/ftp/

  
  補充七:如何定制歡迎信息
  
  如何在我們登入有些FTP之後,會出現類似:歡迎您來到LinuxSir FTP,在這裡,您會得到最真誠的幫助,如果有什麼問題和建議,請來信,多謝。
  
  實現這個並不難,我們可以查看vsftpd.cof文件中,是否有這行。
   dirmessage_enable=YES

  如果沒有就加上,如果dirmessage_enable=YES前面有#號,就把#號去掉。
  
  然後我們制定一個.message文件,寫上您想要寫的東西,比如是.message的內容是如下的:
   歡迎您來到LinuxSir FTP!
   在這裡,您會得到最真誠的幫助;
   如果有什麼問題和建議,請來信,多謝。

  我們可以用編輯器來寫這個.message,我想這個過程就不用說了吧。
  
  然後我們把.message這個文件複製到各個用戶的家目錄中。比如我的FTP的一個用戶是beinan,這個用戶所在的家目錄是/home/beinan
  
  我們就要把.message放在/home/beinan這個目錄下。如果系統用戶ftp,他的目錄就是/var/ftp這個目錄,這個是默認的,當匿名用戶登入時就訪問的是/var/ftp這個目錄。我們要讓匿名用戶能看到歡迎信息。就要把.message放在/var/ftp目錄中。其它的用戶,也無非就是類似的操作。
  
  
  補充八:如何實現虛擬路徑?
  
  比如: /home/a 映射為ftp://localhost/a /home/b/c 則為ftp://localhost/c
  
  其實這個不能說是vsFTPd的內容,其實我們早就接觸過了,可能我們沒有注意,我們可以通過如下的方法來實現。
   #mount --bind [原有的目錄] [新目錄]

  比如我的ftp的默認目錄是/var/ftp,我想把/mnt/LinG/WinSoft文件夾,映射到/var/ftp目錄中,我就如下操作
  
  我們要先在/var/ftp目錄中建一個目錄
   #mkdir /var/ftp/WinSoft

  然後執行mount命令
   #mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft

  這樣就OK了。
  
  
  補充九:如何上匿名訪問、上傳,並支持下載和執行?
  
  在默認的情況下,vsftp是不支持匿名用戶的訪問的,所以我們要自己打開相應的選項。現在我針對這個問題,我們要打開如下的選項。
   anonymous_enable=YES 註:允許匿名訪問
   anon_upload_enable=YES 註:允許上傳
   anon_mkdir_write_enable=YES 註:允許建立相應的目錄
   anon_umask=022 把上傳到FTP的文件或者目錄改變權限

  當然打開這些選項還是不行的,我們還要讓匿名寫入文件的上一級目錄有寫入權,以我所做的FTP為例,我所做的FTP的匿名訪問的目錄是 /var/ftp,在vsFTPd中,/var/ftp這個目錄是不能讓匿名用戶有寫入權限的,這是為了安全考慮,所以我們必須自己在/var/ftp目錄中建一個目錄,讓這個目錄有寫入權。
  
  比如:我在/var/ftp目錄建一個upload目錄,然後把它的權限設置成777,這樣匿名用戶就能寫入了。
   #mkdir /var/ftp/upload
   #chmod 777 /var/ftp/upload

  改了一系列的文件,不要忘記重啟vsFTPd服務器
  
  我是用standalone模式的,當然用下面的方法
   [root@linuxsir001 root]# service vsftpd restart
   關閉 vsftpd: [ 確定 ]
   為 vsftpd 啟動 vsftpd: [ 確定 ]
   [root@linuxsir001 root]#

  如果您用的是xinetd模式來啟動vsFTPd,我們要重啟xinetd服務器
   [root@linuxsir001 root]# service xinetd restart
   停止 xinetd: [ 確定 ]
   啟動 xinetd: [ 確定 ]
   [root@linuxsir001 root]# ]

  
  補充十:通過pam認證方式,添加虛擬用戶
  
  
  通過pam認證,用db_load添加用戶,是真正的虛擬用戶。現在我們簡單的介紹一下,通過以後的學習,我們再深入補充:
  
  1。在/etc/pam.d/目錄中創建一個文件ftp
   [root@linuxsir001 root]# touch /etc/pam.d/ftp

  2。在/etc/pam.d/ftp裡面加上如下的兩行
   auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
   account required /lib/security/pam_userdb.so db=/etc/vsftpd_login

  3。創建一系統的用戶名用密碼的文件logins.txt
   [root@linuxsir001 root]# touch logins.txt

  在logins.txt文件中,輸入如下的內容。這個內容您可以自己來定。比如我下面的。其實linuxsir007是FTP的虛擬用戶名, 123456是linuxsir007的密碼;linuxsir008是虛擬用戶名,234567是linuxsir008的密碼,以此類推,您想加入幾個就是幾個;下面是我添加的FTP的虛擬用戶名和密碼。
   linuxsir007
   123456
   linuxsir008
   234567
   linuxsir009
   567890
   linuxsir010
   678901
   linuxsir011
   789012

  4。創建一個真實的用戶名linuxsir006,這個linuxsir006的用戶,所在的家目錄由您來定。我在這裡不多說了。我是按系統默認的來添加的。
   [root@linuxsir001 root]# useradd linuxsir006

  5。把/etc/hosts複製到/home/linuxsir006,並改變它的屬主
   [root@linuxsir001 root]#cp /etc/hosts /home/linuxsir006/hosts
   [root@linuxsir001 root]#chown linuxsir006.linuxsir006 /home/linuxsir006/hosts

  6。通過db_load來創建虛擬用戶的庫文件。我們在前面建的logins.txt文件,我是放在了/root用戶目錄下。所以咱們得把目錄切換到/root目錄來創建虛擬用戶的庫文件。
   [root@linuxsir001 root]# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db

  7。更改vsftpd.conf文件,加入如下的幾行
   pam_service_name=ftp
   guest_enable=YES
   guest_username=linuxsir006
   anon_world_readable_only=NO

  8。重啟vsFTPd服務器;改了一系列的文件,不要忘記重啟vsFTPd服務器
  
  我是用standalone模式的,當然用下面的方法
   [root@linuxsir001 root]# service vsftpd restart
   關閉 vsftpd: [ 確定 ]
   為 vsftpd 啟動 vsftpd: [ 確定 ]
   [root@linuxsir001 root]#

  如果您用的是xinetd模式來啟動vsFTPd,我們要重啟xinetd服務器
   [root@linuxsir001 root]# service xinetd restart
   停止 xinetd: [ 確定 ]
   啟動 xinetd: [ 確定 ]
   [root@linuxsir001 root]#

  9。如果您想讓用戶登入FTP時,登入成功的相應的信息,請把您製作的.message複製到您的用戶的家目錄中,這方面的請參考前面的補充。
  
  10。測試:
   [root@linuxsir001 root]# ftp 192.168.0.1
   Connected to 192.168.0.1.
   220 (vsFTPd 1.1.3)
   530 Please login with USER and PASS.
   530 Please login with USER and PASS.
   KERBEROS_V4 rejected as an authentication type
   Name (192.168.0.1:root): linuxsir007
   331 Please specify the password.
   Password:
   230-歡迎光臨LinuxSir自由FTP
   230-在這裡,您將得到最真誠的幫助!
   230-本站限度為30KB!
   230-每個IP限四個線程
   230-請大家遵守FTP的有關規定。
   230-多謝合作!
   230-
   230-LinuxSir管理部
   230 Login successful. Have fun.
   Remote system type is UNIX.
   Using binary mode to transfer files.
   ftp> ls
   227 Entering Passive Mode (192,168,0,1,85,171)
   150 Here comes the directory listing.
   -rw-r--r-- 1 ftp ftp 174 Jun 01 12:59 hosts
   drwxr-xr-x 3 ftp ftp 4096 Jun 01 13:29 linuxsir008
   drwxr-xr-x 2 ftp ftp 4096 Jun 01 13:24 sun
   226 Directory send OK.
   ftp>

  補充十一:如何把系統默認用standalone啟動改為用xinetd啟動?
  
  如何把Redhat 9.0中系統默認安裝的vsftpd-1.1.3-8.i386.rpm,系統默認vsFTPd是用standalone啟動方式,改為xinetd啟動方式 ?如果是用源碼包安裝的,安裝後就是xinetd模式,如果是用RPM包安裝的,在Redhat 9.0中,應該用下面的方法來解決。
  
  1.在/etc/xinetd.d/目錄中創建一個文件vsftpd
   [root@linuxsir001 root]# touch /etc/xinetd.d/vsftpd

  /etc/xinetd.d/vsftpd內容如下:
   service ftp
   {
   socket_type = stream
   wait = no
   user = root
   server = /usr/sbin/vsftpd
   # server_args =
   # log_on_success += DURATION USERID
   # log_on_failure += USERID
   nice = 10
   disable = no
   }

  2。複製vsftpd.conf到/etc/目錄下,因為xinetd對vsFTPd配製文件應該在/etc目錄下,所以我們就必須把這個文件複製到/etc目錄下,否則會出現系統中local用戶無法登入,也就是說,不複製這個文件會出現ftp非匿名用戶無法訪問,只能用匿名用戶訪問。
   [root@linuxsir001 root]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf

  3。更改配製文件/etc/vsftpd.conf,把如下的項注掉:也就是把
   listen=YES

  改為
   #listen=YES

  或者是把這行刪除也行。
  
  4。把/etc/init.d/vsftpd這個文件刪除。其實最好的備份到別處,因為我們有時實驗來實驗去,可能還會轉到standalone模式啟動。我就直接移動到別的目錄,比如是/root下面的backup目錄。
  
   [root@linuxsir001 root]#mkdir /root/backup
   [root@linuxsir001 root]# mv /etc/init.d/vsftpd /root/backup

  5。運行ntsysv,把vsftpd的服務取消
   [root@linuxsir001 root]#ntsysv
   [ ] vsftpd

  6。重啟xinetd服務
   [root@linuxsir001 root]# service xinetd restart



原文出處:VSFTPD的菜鸟篇:_天涯博客_有见识的人都在此_天涯社区
前一個主題 | 下一個主題 | | | |

討論串




Powered by XOOPS 2.0 © 2001-2008 The XOOPS Project|