天天看點

ftpaccess - ftpd的配置檔

描述 DESCRIPTION

這個ftpaccess檔案是用來配置下述功能的運作

存取功能(AccessCapabilities)

autogroup<群組名稱><類别>[<類别>...]
如果一個匿名的(ANONYMOUS)使用者是任何<類别>的成員,那麽ftp伺服器将會實行一次setegid()到該<群組名稱>。這允許特殊類别的匿名使用者存取group-and-owner-read-only的檔案以及目錄。<群組名稱>是/etc/group裡的一個有效群組(或是你的getgrent()呼叫所查閱的地方)。
class<類别><類型清單><全球位址>[<全球位址>...]

定義使用者的<類别>,使用<全球位址>格式的來源位址。可以定義<類别>多個成員。可以有多個"class"指令列出該類别額外的成員。如果多個"calss"指令可以應用到該次的連線期間,會使用在access檔案中第一個列出的。嘗試為一台主機定義一個有效的類别失敗的話将會引起存取被拒絕。<類型清單>是一個以任何"anonymous","guest"及"real"關鍵字所組成使用逗點隔開的清單。如果包含"real"關鍵字,該類别可以符合使用FTP存取真實的帳号的使用者,而如果包含"anonymous"關鍵字該類别可以符合使用匿名FTP的使用者。而"guest"關鍵字元合訪客存取帳号(參閱"guestgroup"以取得更多資訊)

 <全球位址>可以是一個全球的領域名稱或是一個全球的數字位址。

 deny<全球位址><訊息檔案>
永遠拒絕符合<全球位址>主機的存取。顯示<訊息檔案>。<全球位址>可以是"!nameserved"用來拒絕沒有名稱伺服器服務中的節點的存取。
guestgroup<群組名稱>[<群組名稱>...]

如果一個真實的(REAL)使用者是任何<群組名稱>的成員,該次連線期間的設立完全如同匿名的FTP一般。換句話說,會執行一次chroot(),而且該使用者不再被允許發出USER及PASS指令。<群組名稱>是/etc/group裡的一個有效群組(或是你的getgrent()呼叫所查閱的地方)。

該使用者的home目錄必須适當地加以設定,跟匿名FTP所要做的完全一樣。在passwd項目裡的home目錄欄位被分成兩個目錄。第一個欄位将是chroot()呼叫的根目錄參數。第二個部份是相對於該根目錄的使用者home目錄。這兩半是以"/./"分隔開的。

在/etc/passwd裡,該真實的項目:

guest1::100:92:Guest Account:/ftp/./incoming:/etc/ftponly

當guest1成功地簽入的時候,此ftp伺服器将會執行一次chroot("/ftp")然後接著chdir("/incoming")。該guest使用者将隻能夠存取/ftp下的目錄結構(此目錄對guest1而言看起來跟用起來就像是/目錄),就如同一個匿名FTP使用者所見到的。

 limit<類别><時間><訊息檔案>
在某<時間>将某<類别>限制為個使用者,若使用者的存取被拒絕則顯示<訊息檔案>内容。限制的檢查隻在簽入時期實行。如果多個"limit"指令可以應用到該次連線期間的話,會使用第一個适合的。嘗試定義一個有效的限制失敗,或是值為-1的限制,等於不設限。<時間>使用UUCPL.sys檔案相同的格式。
loginfails<數字>
在<數字>簽入失敗後,記錄一個″重複簽入失敗(repeated loginfailures)訊息″并且終止該FTP連線。預設值是5。
private

使用者簽入之後,SITEGROUP及SITEGPASS指令可以用來指定一增強存取的群組以及與之有關的密碼。如果該群組名稱以及密碼是有效的,該使用者變成(經由setegid())一個在群組存取檔案/etc/ftpgroups中所指定群組的成員。

該群組存取檔案的格式是:

存取群組名稱:經編碼的密碼:真實群組名稱

其中的存取群組是一個随意的(文數字+标點)字串。經編碼的密碼是經由crypt(3)編碼過的密碼,與/etc/passwd裡的完全一樣。真實群組名稱是/etc/group裡所列出有效群組其中的一個名稱。

注意:要使這個選項能運作於匿名的FTP使用者,該FTP伺服器必須保持使/etc/group永久開啟而且将群組存取檔案載入記憶體。這意指(1)該ftp伺服器現在使一個額外的檔案描述子(filedescriptor)開啟,以及(2)經由SITEGROUP使用者必須的密碼以及存取權利的承認在一次FTP連線期間以内将會是靜态的。如果你有緊急的需求要*現在*改變存取群組以及/或是密碼,那麽你隻要砍掉(kill)所有正在執行中的FTP伺服器。

資訊功能(InformationalCapabilities)

banner<路徑>

作用與message指令類似,除了此banner是在使用者鍵入使用者名稱/密碼之前顯示以外。該<路徑>系相對於真實的系統根目錄,不是匿名FTP所使用的根目錄。

警告:這個指令的使用可以完全地防止不相容的FTP用戶端程式使用該FTP伺服器。并非所有的用戶端都能夠處理多行回應(multi-lineresponses)(這正是banner顯示的方式)

email<名稱>
定義ftp檔案處(archive)維護者的電子郵遞位址。這個字串将會在每一次使用%E代換變數(magiccookie)的時候印出。
message<路徑>{<時機>{<類别>...}}

定義一個配合<路徑>的檔案名稱在使用者簽入時或是在使用切換工作目錄指令的時候ftpd将會顯示該檔案的内容。該項<時機>參數可以是"LOGIN"或"CWD=<目錄>"。如果<時機>是"CWD=<目錄>"的話,<目錄>指定将會引發該通知的新預設目錄。

該選擇性的<類别>指定允許該訊息隻對特殊類别的成員顯示。可以指定超過一個類别。

在說明檔中可以有″代換變數(magiccookies)″這會使ftp伺服器以指定的文字字串取代該變數:

%T
本地時間(form ThuNov1517:12:42 1990)
%F
CWD所在分割區的剩馀空間(kbytes)[并非所有系統都有支援]
%C
目前的工作目錄
%E
定義在ftpaccess中維護者的電子郵遞位址
%R
遠端主機名稱
%L
本地主機名稱
%U
簽入時所給的使用者名稱
%M
這個類别所允許的最大使用者數目
%N
這個類别目前的使用者數目
此項message将隻顯示一次以避免惹使用者讨厭。要記得當MESSAGEs被一匿名的FTP使用者引發時,該<路徑>必須是相對於匿名FTP目錄樹的根目錄。
readme<路徑>{<時機>{<類别>}}
定義一個配合<路徑>的檔案名稱在使用者簽入時或是在使用切換工作目錄指令的時候ftpd将會告知使用者該檔案存在及修改的日期。<時機>參數可以是"LOGIN"或"CWD=<目錄>"。若<時機>是"CWD=<目錄>"的話,<目錄>指定将會引發該通知的新預設目錄。此項訊息将隻顯示一次以避免打擾使用者。要記得當README訊息被一匿名的FTP使用者引發時,該<路徑>必須是相對於匿名FTP目錄樹的根目錄。

記錄功能(LoggingCapabilities)

logcommands<類型清單>
以使用者啟動個别的記錄指令。<類型清單>是一個以任何的"anonymous","guest"及"real"關鍵字所組成使用逗點隔開的清單。如果包含"real"關鍵字,将會為使用FTP存取真實帳号的使用者做記錄,而如果包含"anonymous"關鍵字則将會為使用匿名FTP的使用者做記錄。"guest"關鍵字元合訪客存取帳号(參閱"guestgroup"以取得更多資訊)
logtransfers<類型清單><目錄>
啟動對真實的或匿名的FTP使用者的檔案傳輸記錄。對傳輸到伺服器(進來)的記錄可以跟從伺服器傳輸(出去)分開來啟動。<類型清單>是一個以任何的"anonymous","guest"及"real"關鍵字所組成使用逗點隔開的清單。如果其中包含有"real"關鍵字,将會為使用FTP存取真實帳号的使用者做記錄,而如果包含"anonymous"關鍵字則将會為使用匿名FTP的使用者做記錄。而"guest"關鍵字元合訪客存取帳号(參閱"guestgroup"以取得更多資訊)。<目錄>是一個以任何的"inbound"以及"outbound"兩個關鍵字所組成以逗點隔開的清單,而且将會分别引發對送往該伺服器以及從該伺服器送出的傳輸記錄。

其它功能(MiscellaneousCapabilities)

alias<字串><目錄>

為一個目錄定義一個别名,<字串>。可以用來加入邏輯目錄的其它概念。

例如:

aliasrfc:/pub/doc/rfc

允許使用者從任何目錄以指令"cdrfc:"存取/pub/doc/rfc。别名隻應用於cd指令上。

cdpath<目錄>

定義cdpath裡的一個項目。這定義一個在改變目錄時使用的搜尋路徑。

cdpath/pub/packages cdpath/.aliases

允許使用者直接cd到任何/pub/packages或/.alias目錄以下的目錄。該搜尋路徑系以該行出現在ftpaccess檔案裡的順序定義。

如果使用者所下的指令是:

cdfoo

則會以下列的順序搜尋該目錄:

./foo 一個稱為"foo"的别名 /pub/packages/foo /.aliases/foo

該cdpath隻能夠配合cd指令使用。如果你有數量很大的别名那麽你可能想要設立一個目錄别名鍊結到所有你希望能讓使用者使用的區域。

compress[...] tar[...]

為任何符合任何的類别啟動壓縮(compress)或包裹(tar)功能。實際的轉換(conversions)定義在外部的檔案FTPLIB/ftpconversions之中。

shutdown<路徑>

如果<路徑>所指的檔案存在,伺服器将會規律地檢查該檔案以便得知該伺服器是否将要被停機。如果計畫一次停機,則會通告使用者,新的連線在停機之前的一段指定的時間之後會被拒絕且目前的連線在停機之前的一段指定的時間之後會被停止。<路徑>指到一個結構如下的檔案:

<年><月><日><時><分><拒絕_期間><抛棄_期間><本文>

<年>
任何>1970的年份
<月>
0-11<----注意!
<時>
0-23
<分>
0-59

<拒絕_期間>以及<抛棄_期間>是在停機之前新的連線将會被拒絕以及存在的連線将會被抛棄的一段格式為HHMM的期間。

<本文>跟從任何訊息(參閱"message")的一般規則,配合下列額外可用的代換變數:

%s
系統将要停機的時間
%r
新的連線将會被拒絕的時間
%d
目前的連線将會被抛棄的時間

所有時間的格式都是:dddMMMDDhh:mm:ssYYYY。在該配置檔中隻能有一個"shutdown"指令。

外部程式ftpshut(8)可以用來自動化産生這個檔案的程式。

許可功能(PermissionCapabilities)

chmod<類型清單> delete<類型清單> overwrite<類型清單> umask<類型清單>

允許或不允許執行指定功能的能力。依照預設值,允許所有的使用者執行。

<類型清單>是一個以任何"anonymous","guest"及"real"關鍵字所組成使用逗點隔開的清單。

passwd-check()
定義該伺服器對匿名ftp密碼檢查的層級與執行。
none
不執行密碼檢查。
trivial
密碼中必須包含一個'@'字元。
rfc822
密碼必須是一個rfc822相容的位址。
warn
警告該使用者,但是允許他們簽入。
enforce
警告該使用者,并且接著将之踢出。
path-filter<類型清單><訊息><允許的字元集>{<不允許的正規表示式>...}

對於屬於<類型清單>的使用者,path-filter定義控制何種檔案名稱允許或不允許的正規表示式(regularexpressions)。可以有多個不允許的正規表示式。如果一個檔案名稱因為不符合正規表示式的标準而無效的話,将會顯示<訊息>給該使用者。例如:

path-filteranonymous/etc/pathmsg^[-A-Za-z0-9._]*$^.^-

指定所有匿名使用者所上傳的檔案名稱隻能以A-Z,a-z,0-9以及"._-"組成而且不能以一個"."或是一個"-"開始。如果該檔案名稱是不合法的,則将會顯示/etc/pathmsg給該使用者。

upload<擁有者><群組>["dirs"|"nodirs"]

配合定義一個認可或拒絕上傳的目錄。

如果其認可上傳,所有檔案将會由<擁有者>以及<群組>所擁有而且将會具有根據設定的權限(permission)。

目錄系以最佳-符合(best-match)為基礎。

upload*no upload/incomingyesftpdaemon0666 upload/incoming/gifsyesjlcguest0600

nodirs

這将僅允許上傳到/incoming以及/incoming/gifs。上傳到/incoming的檔案将由ftp/daemon所擁有并且具有0666的權限。上傳到/incoming/gifs的檔案将由jlc/guest擁有并且具有0600的權限。