模式
訪問控制語言實現以下模式:
- 以“。”開頭的字符串。字符。如果主機名的最後一部分與指定的模式匹配,則匹配該主機名。例如,模式“ .tue.nl”與主機名“ wzv.win.tue.nl”匹配。
- 以“。”結尾的字符串。字符。如果主機地址的第一個數字字段與給定的字符串匹配,則匹配該主機地址。例如,模式“ 131.155”。與(幾乎)埃因霍溫大學網絡(131.155.xx)上每個主機的地址匹配。
- 以'@'字符開頭的字符串被視為NIS(以前稱為YP)網絡組名稱。如果主機名是指定網絡組的主機成員,則匹配該主機名。守護進程名稱或客戶端用戶名稱不支持Netgroup匹配。
- “ nnnn / mmmm”形式的表達式被解釋為“ net/mask”對。如果“ net”等於地址和“掩碼”的按位與,則匹配IPv4主機地址。例如,網絡/掩碼模式“ 131.155.72.0/255.255.254.0”與“ 131.155.72.0”至“ 131.155.73.255”範圍內的每個地址匹配。
- “ [n:n:n:n:n:n:n:n] / m”形式的表達式被解釋為“ [net]/prefixlen”對。如果“ net”的“ prefixlen”位等於該地址的“ prefixlen”位,則匹配IPv6主機地址。例如,[net] /前綴模式“ [3ffe:505:2:1 ::]/64”會匹配“ 3ffe:505:2:1:”範圍內的每個地址?到'3ffe:505:2:1:ffff:ffff:ffff:ffff'。
- 以'/'字符開頭的字符串被視為文件名。如果主機名或地址與命名文件中列出的任何主機名或地址模式匹配,則匹配該主機名或地址。文件格式為零或更多行,零或多個主機名或地址模式用空格分隔。文件名模式可以在任何可以使用主機名或地址模式的地方使用。
- 通配符“ *”和“?”可以用來匹配主機名或IP地址。這種匹配方法不能與“ net/mask”匹配,以“。”開頭的主機名匹配一起使用。或以“。”結尾的IP地址匹配。
通配符
訪問控制語言支持顯式通配符:
所有 |
通用通配符始終匹配。 |
本地 |
匹配名稱不包含點字符的任何主機。 |
未知 |
匹配名稱未知的任何用戶,並匹配名稱或地址未知的任何主機。請謹慎使用此模式:由於臨時名稱服務器問題,主機名可能不可用。當軟件無法確定正在與之通信的網絡類型時,網絡地址將不可用。 |
知道的 |
匹配名稱已知的任何用戶,以及名稱和地址已知的任何主機。請謹慎使用此模式:由於臨時名稱服務器問題,主機名可能不可用。當軟件無法確定正在與之通信的網絡類型時,網絡地址將不可用。 |
泛醇 |
匹配名稱不匹配其地址的任何主機。使用-DPARANOID(默認模式)構建tcpd時,即使在查看訪問控製表之前,它也會丟棄來自此類客戶端的請求。當您想要對此類請求進行更多控制時,不使用-DPARANOID進行構建。 |
經營者
EXCEPT預期用途的格式為:“ list_1 EXCEPT list_2”;除非與list_2匹配,否則此構造匹配與list_1匹配的任何內容。可以在daemon_lists和client_lists中使用EXCEPT運算符。 EXCEPT運算符可以嵌套:如果控制語言允許使用括號,則'a EXCEPT b EXCEPT c'將解析為'(a EXCEPT(b EXCEPT c))'。 Shell命令
如果第一個匹配的訪問控制規則包含shell命令,則該命令將受% 替換(請參閱下一節)。結果由/bin/sh子進程執行,其標準輸入,輸出和錯誤連接到/dev/null。如果您不想等到命令結束,請在命令末尾指定“&”。 Shell命令不應依賴inetd的PATH設置。相反,它們應使用絕對路徑名,或者應以顯式PATH = whatever語句開頭。
% 擴展
Shell命令中提供以下擴展:
%a(%A) |
客戶端(服務器)主機地址。 |
%c |
客戶信息:user@host,user@address,主機名或僅是地址,具體取決於可用的信息量。 |
%d |
守護進程名稱(argv[0]值)。 |
%h(%H) |
客戶端(服務器)的主機名或地址(如果主機名不可用)。 |
%n(%N) |
客戶端(服務器)主機名(或“未知”或“偏執狂”)。 |
%p |
守護進程ID。 |
%s |
服務器信息:daemon@host,daemon@address或僅是守護程序名稱,具體取決於可用的信息量。 |
%u |
客戶端用戶名(或“未知”)。 |
%% |
擴展為單個'%?字符。 |
下劃線會替換%擴展名中可能會引起外殼混亂的字符。