Arch manual pages

ftpaccess(5) File Formats Manual ftpaccess(5)

ftpaccess - ftpd的配置檔

這個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的權限。

選擇性的"dir"以及"nodir"關鍵字可以指定允許或不允許使用mkdir指令建立新的子目錄。

該upload關鍵字只應用於匿名的使用者。

FTPLIB/ftpaccess

<asdchen@pc2.hinet.net>

1995/12/26

http://cmpp.linuxforum.net

本頁面中文版由中文 man 手冊頁計劃提供。
中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh