可以使用通配符集中保護(hù)未包含在層次結(jié)構(gòu)中的資源,例如,可以保護(hù)所有以 .log 結(jié)尾的文件或者所有以 www 開頭的主機(jī)名稱。表 1 中描述了組成通配符模式的基本元素。
表 1. 通配符元素 通配符元素 描述 * 匹配任意長(zhǎng)度的字符串,包括斜杠(/) 字符。 ? 匹配任意單字符。 + 匹配一次或多次出現(xiàn)的前一元素。 [字符集合] 匹配作為字符集合中的一份子的單個(gè)字符。字符集合是根據(jù) POSIX 通配符擴(kuò)展規(guī)則而指定的。例如,[a-z] 與 a-z 范圍中的任何 ASCII 字符相匹配。 一個(gè)字符 精確匹配指定的字符。
使用反斜杠(\)可禁用它后面字符的特殊意義。當(dāng)需要與單個(gè)反斜杠相匹配時(shí),可以使用兩個(gè)反斜杠(\\)。表 2 顯示了一些匹配和不匹配的通配符模式。
表 2. 通配符匹配示例 模式 匹配字符串 非匹配字符串 a* a aa a quick brown fox ba q a over the dog
a\* a* ab a? aa al a aaa
/usr/local/*.log /usr/local/x.log /usr/local/app/x.log /usr/local/x.log.1 *.charity.org www.charity.org ftp.charity.org www.charity.org.com [[:alpha:]]+ abcd ABCD /abcd tty0
* * (星號(hào)之間有空格) a b abcde ghijk lmnop abcd 空字符串
通配符優(yōu)先級(jí) 對(duì)于使用通配符模式的各種資源,Tivoli Access Manager for Operating Systems 必須確定將應(yīng)用何種通配符模式。例如,假設(shè)有兩種模式:
/usr/local/*.log
和
/usr/local/user1/*.log
字符串 /usr/local/user1/x.log 與這兩種模式都匹配。
為了解決這種模棱兩可的情況,應(yīng)用了優(yōu)先級(jí)規(guī)則。模式越具體,其優(yōu)先級(jí)也越高。根據(jù)這種原則,/usr/local/user1/x.log 在與 /usr/local/*.log 模式相匹配之前先與 /usr/local/user1/*.log 模式相匹配。由于找到一個(gè)匹配項(xiàng),任何可應(yīng)用于匹配此模式的對(duì)象的策略都將適用。
表 3 顯示了通配符元素的優(yōu)先級(jí)。表中較高位置的元素優(yōu)先于表中較低位置的元素。
表 3. 通配符元素優(yōu)先級(jí)規(guī)則 優(yōu)先級(jí) 元素 示例 1 精確字符 a, \*, \\ 2 字符范圍 [Aa], [[:digit:]] 3 任意字符 ? 4 重復(fù)的精確字符 a+ 5 重復(fù)的字符范圍 [Aa]+, [[:digit:]]+ 6 重復(fù)的任意字符 ?+ 7 任意字符串 *
根據(jù)資源的種類,將通過從開始到結(jié)束(或者相反方向)逐個(gè)元素比較模式來確定優(yōu)先級(jí)。匹配文件名稱的模式是從開始比較到結(jié)束。匹配主機(jī)名稱的模式是從結(jié)束比較到開始。
除了認(rèn)為相同的兩種模式之外,將認(rèn)為較長(zhǎng)的模式比較短的模式更具體,除非較長(zhǎng)的字符串是由于星號(hào)(*)而較長(zhǎng)。
通配符優(yōu)先級(jí)的示例 表 4 顯示了按優(yōu)先級(jí)從最高到最低排列的文件名和主機(jī)名通配符模式。
表 4. 通配符模式優(yōu)先級(jí)示例 優(yōu)先級(jí) 文件名稱模式 主機(jī)名稱模式 1 log/0[0-9]/error www.[a-z]tv.com 2 log/0?/error www.?tv.com 3 log/0*/error www.*tv.com 4 log/[0-9]+/error.1 www-help.[a-z]+v.com 5 log/*/error.1 www-help.*v.com 6 log*/error.1 www-help.*.com 7 log*/error www.*.com 8 log*/error* *www.*.com 9 log* *.com 10 * *
當(dāng)兩個(gè)模式之間的唯一差別是字符集合中指定的字符時(shí),將通過逐字比較包含模式的兩個(gè)字符串來確定優(yōu)先級(jí)。僅在要匹配的字符集包含一些相同字符時(shí)才必須考慮這一點(diǎn)。如果在兩個(gè)集合中沒有公共字符,則任一給定的字符串最多只能匹配這兩個(gè)模式中的一個(gè)。
|