国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

用wu-ftpd架設FTP服務器

2024-07-21 02:30:39
字體:
供稿:網(wǎng)友
一、前言

  當我們架設的網(wǎng)站需要提供下載功能時,除了使用http的方式連接外,也可以另外提供ftp服務供用戶直接連線下載。事實上,ftp是個存在已久的服務,它的設計是用來傳輸兩臺電腦之間的數(shù)據(jù),以避免太多的遠端執(zhí)行。如果要傳送的文件比較大時,若以http的方式連線傳輸會占用一些網(wǎng)站的資源(例如可連線的人數(shù)),這時就要用到ftp了。ftp是一個以TCP/ip為基礎的應用程序,所以一般的ftp服務程序都會以內(nèi)嵌于inetd的執(zhí)行方式。
  ftp分為兩個部分,一個是服務器端的程序,一個是用戶端的。在Unix上的ftp服務程序非常多,不同的操作系統(tǒng)所內(nèi)建的版本也都不一樣,常見的有wu-ftpd、PRoftpd、Troll ftpd、ncftpd和Bero ftpd等等。其中最常用的最受歡迎的的是wu-ftpd,它是當初由華盛頓大學wuarchive.wustl.edu開發(fā)出來的,是一個以效率以及穩(wěn)定性為考量的程序,它提供了原始碼以及開放學術(shù)單位免費使用。

二、安裝與設定

  wu-ftpd的安裝非常容易,大多數(shù)版本的linux中都包含了wu-ftpd的rpm軟件包,你可以在安裝Linux時指定裝入。如果你想自行編譯源代碼,也可以到ftp://ftp.wu-ftpd.org下載最新版本的源代碼包。
  安裝好以后,可以用ckconfig命令來檢查是否已經(jīng)正確安裝。在/etc/passwd中可以指定ftp用戶的登入目錄。
  wu-ftpd主要有以下6個配置文件:
  ftpaccess(主要配置文件,控制存取權(quán)限)
  ftpconvertions(配置文件壓縮/解壓縮轉(zhuǎn)換)
  ftpgroups(設定ftp自己定義的群組)
  ftphosts(設定個別的用戶權(quán)限)
  ftpservers(設定不同IP/Domain Name以對應到不同的虛擬主機)
  ftpusers(設定哪些帳號不能用ftp連線)
  下面我們來一一介紹。
  ⒈/etc/ftpaccess(wu-ftpd的主要配置文件)
  class--定義群組,用法如下:
  class<class 名稱><種類><用戶地址>[<用戶地址>……]
  由class定義的群組用戶才可以連線進來,可以使用多層式的class來規(guī)范哪些群組的用戶能夠從哪些地方上來。這里有三個重要的種類,real、anonymous個guest。real如果沒有列在定義中,那么這臺機器中任何真實的一般用戶都無法用自己的帳號連上來。anonymous如果沒有在定義,就表示不讓沒有帳號的的人連上來。如果有定義guest,那么guest群組的人就可以上來。另外<用戶地址>是指ftp上來的用戶會用到的IP地址,<class 名稱>則可自行設定。以下是一些例子:
  class all real,guest,anonymous *
  定義了一個名為all的class,包含三種人,所有IP的連線用戶(也就是所有人都包括了)
  class local real localhost loopback
  local這個class說,只有real的用戶可以從本機機器連上來
  class remote guest,anonymous *
  remote這個class包含了從任何地方上來的guest和anonymous用戶,但是real用戶不算
  class rmtuser real !*.example.com
  rmtuser這個class包含了從外面來的(除了example.com)真實用戶
  autogroup--自動對應群組,用法如下:
  autogroup<group 名稱><class 名稱>[<class 名稱>……]
  當你定義好的那些同屬于一個class的用戶,一旦連線上來就會被對應到一個相應的群組下面,這樣你就可以用Unix的文件權(quán)限對某一群人做限制。
  deny--拒絕某些地址連線,用法如下:
  deny<拒絕連線的地址><信息文件>
  禁止某些機器連線,并顯示<信息文件>。例如:
  deny 210.62.146.*:255.255.255.254 /etc/reject.msg
  guestgroup--設定訪客群
  guestuser--設定訪客帳號
  realgroup--設定真實群組
  realuser--設定真實帳號
  nice--設定給某些class多少優(yōu)先權(quán),用法如下:
  nice<nice-delta><class 名稱>
  在Linux中,nice的值是-20(最優(yōu)先)到19(最后處理),這里你可以指定負的值來提高某class的優(yōu)先順序。
  defumask--設定某class的umask,用法如下:
  defumask<umask>[<class 名稱>]
  umask是建立文件時該文件的的權(quán)限掩碼
  tcpwindow--設定tcpwindow的大小
  keepalive--設定是否使用TCP SO_KEEPALIVE來控制斷線情形
  timeout--設定連線超時,用法如下:
  timeout accept<秒>
  接受連線超時,預設120秒
  timeout connect<秒>
  連線建立超時,預設120秒
  timeout data<秒>
  數(shù)據(jù)傳送超時,預設1200秒
  timeout idle<秒>
  用戶發(fā)呆超時,預設900秒
  file-limit--限制某class只能傳幾個文件,用法如下:
  file-limit[<raw>]<int/out/total>[<class>]
  對某個class限制存取文件的數(shù)目,包含了in(上傳)、out(下載),total raw代表整個傳輸?shù)慕Y(jié)果,不光是數(shù)據(jù)文件。例如:
  file-limit out 20 lvfour
  限制lvfour這個class的用戶最多只能下載20個文件
  byte-limit--限制某class只能傳幾個字節(jié),用法跟file-limit相似
  limit-time--限制一個連線只能持續(xù)多久,用法如下:
  limit-time{*|anonymous|guest}<分鐘>
  為了避免有人掛在站上不下來,可以用這個方法限制用戶的上線時間,例如:
  limit-time guest 5
  讓guest帳號的用戶只能用5分鐘
  limit--限制某class能同時幾人上線,用法如下:
  limit<class 名稱><連線數(shù)目><時間區(qū)段><額滿信息文件>
  設定某個class在某一時間區(qū)段內(nèi)最多能夠幾人同時上線,后面是當超過連線數(shù)目時要顯示的信息。例如:
  limit all 32 Any /home/ftp/etc/toomanyuser.msg
  限制所有連線在任何時間只能有32個用戶,超過則拒絕連線并顯示信息
limit levellone 5 Any2300-0600 /home/ftp/etc/toomanyuser.msg
限制levellone這個class的用戶在23:00到6:00這段時間內(nèi)只能有5人連線
  noretrieve--設定哪些文件不可下載
  noretrieve[absolute/relative][class=<class 名稱>]…[-][<文件名>…]
  absolute或relative指文件是用絕對路徑還是相對路徑
  allow=retrieve--設定哪些文件可以下載
  allow[absolute/relative][class=<class 名稱>]…[-][<文件名>…]
  loginfails--設置登入錯誤可嘗試的次數(shù)
  當用戶連線時可能打錯ID或密碼,這個設定可以讓他打錯幾次以后就斷線,避免有人用窮舉法猜測密碼。
  private--設定線上是否可以執(zhí)行SITE GROUP/SITE GPASS
  當開放SITE GROUP與SITE GPASS指令時,可以用這兩個指令切換到/etc/ftpgroup的群組。一般而言我們不會用到這個功能,以避免安全漏洞。
greeting--顯示Server的版本信息,用法如下:
  greeting <full/brief/terse>
  當用戶登入畫面顯示的server信息,full是預設值,包含版本號以及hostname,brief只有hostname,而terse只有“FTP server ready”的信息。
  barnner--設定未進入Login畫面之前用戶看到的信息,用法如下:
  banner<文件路徑>
  這里敘述了在用戶登入時,在還沒打ID/PassWord之前要出現(xiàn)的信息。文件路徑指的是相對于真實的路徑,而不是相對于ftp的根目錄。
  host--設定ftp主機名
  email--指定ftp管理者的email地址
  message--信息文件的設定,用法如下:
  message<文件>{<何時>{<class 名稱>……}}
  這里的文件的路徑是相對于ftp的根目錄的,“何時”是指當你做了什么動作之后的反應,有幾個選擇:
  login(登入時)
  cwd=<目錄>(進入某目錄時)
  class 名稱是前面已經(jīng)定義過的,允許你的信息只對哪些人發(fā)出。
  而信息文件的內(nèi)容除了文字以外,還可以使用以下一些事先定義好的代號:
  %T(本機時間)
  %F(目前分區(qū)所剩余的空間)
  %C(目前所在的目錄)
  %E(管理者的E-mail)
  %R(客戶端主機名稱)
  %L(本機主機名稱)
  %U(用戶名稱)
  %M(與我相同class用戶允許多少人連線)
  %N(與我相同class用戶目前有多少人連線)
  %B(絕對磁盤限制大小,目前分區(qū)(單位blocks))
  %b(preferred磁盤限制大小,目前分區(qū)(單位blocks))
  %Q(目前已使用的blocks)
  %I(最大可使用的inodes(+1))
  %i(Preferred inodes限制)
  %q(目前使用的indoes)
  %H(超量使用磁盤空間的時間限制)
  %h(超量使用文件數(shù)目的時間限制)
  readme--通知用戶哪些README文件已經(jīng)更新
  log commands--記錄用戶所使用過的命令,用法如下:
  log commands<用戶種類>
  log transfers--記錄用戶所傳輸?shù)奈募梅ㄈ缦拢?
  log transfers<用戶種類><傳輸方向>
  設定有哪些類型的用戶傳輸文件需要記錄,包含了inbound(用戶上傳)和outbound(用戶下載),例如:
  log transfers anonymous,guest inbound,outbound
  log security--記錄安全性,用法如下:
  log security<用戶種類>
  特別用于記錄某類用戶關(guān)于noretrive、notar等有關(guān)安全性的記錄
  log syslog--記錄到系統(tǒng)的syslog文件
  alias--設定目錄別名,用法如下:
  alias<別名字符串><目錄>
  cdpath--設定cd更換目錄搜索順序
  compress,tar--設定是否自動壓縮,用法如下:
  compress<yes/no><class 名稱>[<class 名稱>……]
  tar<yes/no><class 名稱>[<class 名稱>……]
  定義哪些人可以執(zhí)行壓縮以及tar
  shutdown--通知用戶要關(guān)站了
  shutdown<信息文件>
  如果信息文件存在的話,當這個文件指定的某時間以后,就會拒絕連線并切斷已有的連線,等時間一到就關(guān)機。這個信息文件的格式如下:
  <年><月><日><時><分><拒絕倒數(shù)><斷線倒數(shù)><文字>
  daemon address--指定只監(jiān)聽某個IP地址,用法如下:
  daemon address<address>
  當你有許多IP的時候,使用這個選項將會取消其它任何虛擬FTP主機的設定。不設定的話,監(jiān)聽所有IP。
  virtual--設定虛擬FTP站臺
  wu-ftpd提供了虛擬主機的功能,也就是說,在同一臺機器上提供了不同F(xiàn)TP站臺,以主機名稱或IP來區(qū)分;當然你要用名稱的話,還需要跟DNS配合才行。virtual有很多個設定:
  virtual<address><root/banner/logfile><路徑>
  <address>可以是主機名或IP地址
  <root/banner/logfile>root指的是ftp的根目錄,banner是歡迎信息,logfile指的是這個虛擬站臺的log文件
  以下是一些例子:
  virtual virtual.com.bj root /home/ftp2
  virtual virtual.com.bj banner /etc/vftpbanner.2
  virtual virtual.com.bj logfile /etc/viftplog.2
  virtual<address><hostname/email><字母>
  <hostname/email>用戶可以查到hostname跟管理者email,以下是一些例子:
  virtual 210.62.146.50 hostname virtual.site.com.bj
  virtual vritual.site.com.bj email ftpown@virtual.site.com.bj
  virtual<address>allow<用戶>[<用戶>……]
  virtual <address>deny<用戶>[<用戶>……]
  很明顯,以上兩個選項是設定是否允許連線的,以下是一些例子:
  virtual virtual.site.com.bj allow *
  virtual virtual.site.com.bj deny badman
  virtual<address>private
  本虛擬站臺拒絕anonymous用戶
  defaultserver deny <用戶>[<用戶>……]
defaultserver allow <用戶>[<用戶>……]
  當我們使用了虛擬主機,原先的deny,allow設定不知道要設哪個server,所以會無效,用defaultserver代表原來的主機
  defaultserver private
  主站臺拒絕anonymous用戶
  passive address--轉(zhuǎn)換IP數(shù)值
  passive address<外部IP>/cidr
  passive ports--passive的ports范圍
  passive ports<cidr><min><max>
  pasv-allow--允許使用pasv
  pasv-allow<class 名稱>[<地址>……]
  port-allow--允許使用port
  port-allow<class 名稱>[<地址>……]
  mailserver--指定Upload通知的mail服務器
  incmail--指定anonymous upload的email通知地址
  virtual incmail--指定虛擬主機anonymous upload的email通知地址
  defaultserver incmail--指定預設主機anonymous upload的email通知地址
  mailfrom--通知的寄信人upload
  virtual mailfrom--虛擬主機upload通知的寄信人
  defaultserver mailfrom--預設主機upload通知的寄信人
  chmod--設定是否可以改變文件權(quán)限
  delete--設定是否可以刪除文件
  overwrite--覆蓋文件
  rename--重命名文件
  umask--允許設定umask
  passwd-check--設定anonymous FTP的密碼檢查程度,用法如下:
  passwd-check<none/trivial/rfc822>(<enforce/warn>)
  設定對anonymous ftp用戶的密碼是否檢查,none表示不檢查,trivial為包含@的任意密碼,rfc822則表示密碼要遵循RFC822格式,enforce表示密碼檢查不過不允許進入,warn表示密碼檢查不過只出現(xiàn)警告信息。
  deny=email--拒絕特定的email當密碼
  path-filer--攝定哪些文件名不可使用
  path-filer<class 名稱><錯誤信息文件><允許字符><不允許字符>
  upload--設定upload權(quán)限
  upload[absloute/relative][class=<class 名稱>]…[-]<root-dir><設定的目錄><yes/no><owner><group
><mode>[dirs/nodirs][d_mode]
  用來對我們要設定的目錄做權(quán)限設定:
  absoulte/relative使用絕對路徑或是相對路徑
  class=指定某個class
  root-dir指的是對哪些root-dir的人,也就是chroot后的登入目錄,應用這個規(guī)則
  設定的目錄指的就是我們要限制的目錄
  yes/no指得是能否在此目錄下開新文件
  owner,group指出是開出來的文件擁有者及群組
  Mode指的是文件權(quán)限
  dirs/nodirs指的是能否開新目錄
  d_mode設定建立新目錄時目錄的權(quán)限,如果不設定會根據(jù)mode來設定
  thoughput--控制下載速度
  thoughput<root-dir><子目錄列表><文件><bytes/sec><bytes/sec* 比例><遠端地址列表>
  對遠端的地址,控制他抓某個子目錄下的某些文件時的速度,例如:
  thoughput /e/ftp * * oo - *
  thoughput /e/ftp /sw* * 1024 0.5 *
  thoughput /e/ftp sw* readme oo - *
  thoughput /e/ftp sw* * oo - *.foo.com
  以上的設定你是否能夠看出來呢?“oo”表示不限制bytes/sec,“-”或是“1.0”都是代表一倍。第一行的意思是說,在/e/ftp下面的文件不限制下載速度;第二行說,在/sw*下面的任何文件限速為1024bytes/sec*
0.5=512bytes/sec;第三行又把readme文件的限速取消;最后一行則對*.foo.com開放全速。
  anonymous-root--對某class設定匿名用戶的根目錄
  anonymous-root<root-dir>[<class 名稱>]
  guest-root--預設一個guest用戶根目錄
  guest-root<root-dir>[<uid-range>]
  其中<uid-range>用于指定uid的范圍
  deny-uid,deny-gid--拒絕某段UID(GID)范圍
  allow-uid,allow-gid--允許某段UID(GID)范圍
  restricted-uid,restricted-gid--限制用戶不能離開他的登錄目錄
  unrestricted-uid,unrestricted-gid--用戶可以離開他的登錄目錄
  dns refuse_mismatch--設定DNS查到名稱與用戶設定不符的動作
  dns refuse_mismatch<信息文件>[override]
  當用戶使用未注冊IP時,拒絕他的連線,override則是不理會錯誤而讓他連線,信息文件則是我們要給用戶看的。
  dns refuse_no_reverse--設定無反查記錄拒絕連線
dns refuse_no_reverse<信息文件>[override]
  當用戶的IP反查無記錄時,拒絕他的連線
  dns resolveoptions--設定DNS解析選項
  dns resolveoptions[options]
  這里可以設定DNS解析選項
  ⒉/etc/ftphosts
   ftphosts文件其實跟ftpaccess里面的access,deny很像,它是特別用來設定某些ID的連線,它沒有class定義,所以必須是真實用戶。
  allow|deny<用戶><地址>[<地址>……]
  以下是一些例子:
  allow rose 140.0.0/8
  deny jack 140.123.0.0:255.255.0.0
  允許rose從140.*.*.*進來,拒絕jack從140.123.*.*上來
  ⒊/etc/ftpservers
  這個文件控制了當你有不同的IP/hostname的時候,進來的連線使用哪一個配置文件。例如:
  10.196.145.10 /etc/ftpd/ftpaccess.somedomain/
  10.196.145.200 /etc/ftpd/ftpaccess.someotherdomain/
  some.domain internal
  10.196.145.20 /etc/ftpd/config/faqs.org/
  ftp.some.domain /etc/ftpd/config/faqs.org/
  ⒋/etc/ftpusers
  在這個文件里記錄的用戶禁止使用FTP
  ⒌/etc/ftpgroups
  給SITE GROUP指令使用,線上切換group。SITE EXEC容易造成安全漏洞,一般我們都不開放。
  ⒍/etc/ftpconversions
  用來做tar、compress、gzip等動作指令配置文件,只要用預設即可,如果你不開放即時壓縮打包,也可以把內(nèi)容清除。

【本文版權(quán)歸作者與奧索網(wǎng)共同擁有,如需轉(zhuǎn)載,請注明作者及出處】    



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 靖江市| 浪卡子县| 洞口县| 崇州市| 乐安县| 甘肃省| 澳门| 吉木乃县| 云和县| 遵义县| 武陟县| 无为县| 宣恩县| 凤冈县| 西昌市| 彭州市| 松江区| 洞口县| 治县。| 保亭| 钟山县| 兴山县| 临潭县| 清丰县| 榆林市| 扶余县| 桑植县| 万山特区| 平阳县| 通许县| 梧州市| 拉萨市| 庆阳市| 青海省| 广南县| 舞阳县| 玉树县| 常山县| 阳信县| 双柏县| 吐鲁番市|