鴻蒙OS FilePermission

2022-10-19 16:55 更新

FilePermission

java.lang.Object

|---java.security.Permission

|---|---java.io.FilePermission

public final class FilePermission
extends Permission
implements Serializable

此類表示對(duì)文件或目錄的訪問(wèn)。 FilePermission 由一個(gè)路徑名和一組對(duì)該路徑名有效的操作組成。

路徑名是授予指定操作的文件或目錄的路徑名。以“/*”結(jié)尾的路徑名(其中“/”是文件分隔符,F(xiàn)ile.separatorChar)表示該目錄中包含的所有文件和目錄。以“/-”結(jié)尾的路徑名表示(遞歸地)該目錄中包含的所有文件和子目錄。這樣的路徑名稱為通配符路徑名。否則,它是一個(gè)簡(jiǎn)單的路徑名。

由特殊標(biāo)記“<<ALL FILES>>”組成的路徑名匹配任何文件。

注意:由單個(gè)“*”組成的路徑名表示當(dāng)前目錄中的所有文件,而由單個(gè)“-”組成的路徑名表示當(dāng)前目錄中的所有文件以及(遞歸)當(dāng)前目錄中包含的所有文件和子目錄目錄。

要授予的操作在包含一個(gè)或多個(gè)逗號(hào)分隔關(guān)鍵字列表的字符串中傳遞給構(gòu)造函數(shù)??赡艿年P(guān)鍵字是“read”、“write”、“execute”、“delete”和“readlink”。它們的含義定義如下:

read

讀取權(quán)限

write

寫權(quán)限

execute

執(zhí)行權(quán)限。 允許調(diào)用 Runtime.exec。 對(duì)應(yīng)于 SecurityManager.checkExec。

delete

刪除權(quán)限。 允許調(diào)用 File.delete。 對(duì)應(yīng)于 SecurityManager.checkDelete。

readlink

讀取鏈接權(quán)限。 允許通過(guò)調(diào)用 readSymbolicLink 方法來(lái)讀取符號(hào)鏈接的目標(biāo)。

在處理之前將操作字符串轉(zhuǎn)換為小寫。

授予 FilePermissions 時(shí)要小心。 考慮授予對(duì)各種文件和目錄的讀取權(quán)限,尤其是寫入權(quán)限的含義。 帶有寫操作的“<<ALL FILES>>”權(quán)限特別危險(xiǎn)。 這授予寫入整個(gè)文件系統(tǒng)的權(quán)限。 這有效地允許的一件事是替換系統(tǒng)二進(jìn)制文件,包括 JVM 運(yùn)行時(shí)環(huán)境。

請(qǐng)注意:代碼總是可以從它所在的同一目錄(或該目錄的子目錄)中讀取文件; 這樣做不需要明確的許可。

Since:

1.2

構(gòu)造函數(shù)摘要

構(gòu)造函數(shù) 描述
FilePermission(String path, String actions) 使用指定的操作創(chuàng)建一個(gè)新的 FilePermission 對(duì)象。

方法總結(jié)

修飾符和類型 方法 描述
String getActions() 返回操作的“規(guī)范字符串表示”。
boolean implies(Permission p) 檢查此 FilePermission 對(duì)象是否“暗示”指定的權(quán)限。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
從類 java.security.Permission 繼承的方法
checkGuard, getName, newPermissionCollection

構(gòu)造函數(shù)詳細(xì)信息

FilePermission

public FilePermission(String path, String actions)

使用指定的操作創(chuàng)建一個(gè)新的 FilePermission 對(duì)象。 path 是文件或目錄的路徑名,actions 包含對(duì)文件或目錄授予的所需操作的逗號(hào)分隔列表。 可能的操作是“讀取”、“寫入”、“執(zhí)行”、“刪除”和“讀取鏈接”。

以“/*”結(jié)尾的路徑名(其中“/”是文件分隔符,F(xiàn)ile.separatorChar)表示該目錄中包含的所有文件和目錄。 以“/-”結(jié)尾的路徑名表示(遞歸地)該目錄中包含的所有文件和子目錄。 特殊路徑名“<<ALL FILES>>”匹配任何文件。

由單個(gè)“*”組成的路徑名表示當(dāng)前目錄中的所有文件,而由單個(gè)“-”組成的路徑名表示當(dāng)前目錄中的所有文件以及(遞歸)當(dāng)前目錄中包含的所有文件和子目錄。

包含空字符串的路徑名表示空路徑。

參數(shù):

參數(shù)名稱 參數(shù)描述
path 文件/目錄的路徑名。
actions action 字符串。

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果操作為空、為空或包含指定可能操作之外的操作。

方法詳情

implies

public boolean implies(Permission p)

檢查此 FilePermission 對(duì)象是否“暗示”指定的權(quán)限。

更具體地說(shuō),此方法在以下情況下返回 true:

  • p 是 FilePermission 的一個(gè)實(shí)例,
  • p 的 actions 是該對(duì)象 actions 的真子集,并且
  • p 的路徑名隱含在此對(duì)象的路徑名中。 例如,“/tmp/”意味著“/tmp/foo”,因?yàn)椤?tmp/”包含“/tmp”目錄中的所有文件,包括名為“foo”的文件。

準(zhǔn)確地說(shuō),一個(gè)簡(jiǎn)單的路徑名意味著另一個(gè)簡(jiǎn)單的路徑名當(dāng)且僅當(dāng)它們相等時(shí)。 簡(jiǎn)單的路徑名從不暗示通配符路徑名。 通配符路徑名隱含另一個(gè)通配符路徑名當(dāng)且僅當(dāng)后者隱含的所有簡(jiǎn)單路徑名都被前者隱含。 通配符路徑名意味著一個(gè)簡(jiǎn)單的路徑名當(dāng)且僅當(dāng)

  • 如果通配符標(biāo)志是“*”,則簡(jiǎn)單路徑名的路徑必須在通配符路徑名的路徑內(nèi)。
  • 如果通配符標(biāo)志是“-”,則簡(jiǎn)單路徑名的路徑必須遞歸地在通配符路徑名的路徑內(nèi)。

"<<ALL FILES>>" 暗示所有其他路徑名。 沒(méi)有路徑名,除了“<<ALL FILES>>”本身,意味著“<<ALL FILES>>”。

指定者:

暗示在類 Permission

參數(shù):

參數(shù)名稱 參數(shù)描述
p 檢查的權(quán)限。

返回:

如果指定的權(quán)限不為 null 并且由此對(duì)象隱含,則為 true,否則為 false。

getActions

public String getActions()

返回操作的“規(guī)范字符串表示”。 也就是說(shuō),此方法始終按以下順序返回當(dāng)前操作:讀取、寫入、執(zhí)行、刪除、讀取鏈接。 例如,如果此 FilePermission 對(duì)象允許寫入和讀取操作,則調(diào)用 getActions 將返回字符串“read,write”。

指定者:

權(quán)限類中的 getActions

返回:

actions 的規(guī)范字符串表示。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)