眾所周知,s60自第三版開始,有了大家所不屑的權限問題,也就是很多人迷茫的簽名問題、證書問題,隨之而來也產生了相當多的誤會,例如A4的破解問題,是否大家對權限問題有了清晰地認識呢?此文來帶大家一起進入權限的世界,共同探討什么是symbian的權限。
首先引用官方的內容(由于symbian 9.x實在太長,直接用s60簡寫,uiq的其實也一樣)。
官方是這樣說權限的,一共分了19級:
1、NetworkServices:用于使用移動網絡,例如:撥打電話或發送文本消息。
2、LocalServices:用于通過USB、紅外和藍牙發送或接收消息。
3、ReadUserData:準許讀取用戶數據。系統服務器和應用引擎可以自由地對他們的數據施加這一限制。
4、WriteUserData:準許寫入用戶數據。系統服務器和應用引擎可以自由地對他們的數據施加這一限制。
5、Location:準許訪問手機的位置信息。
6、UserEnvironment:準許訪問用戶及其附近環境的實時保密信息。
7、PowerMgmt:準許在系統中中斷任何進程或者轉換機器狀態(關掉設備)。
8、SwEvent:準許生成或者捕獲鍵盤以及筆輸入事件。
9、ReadDeviceData:準許讀取系統設備驅動數據。
10、WriteDeviceData:準許寫入系統設備驅動數據。
11、SurroundingsDD:準許訪問提供外圍設備輸入信息的邏輯設備驅動。
12、TustedUI:區分"normal"應用和"trusted"應用的UI。當一個"trusted"應用在屏幕上顯示內容時,一個"normal"的應用不能偽造它。
13、rotServ:準許服務器應用可以用一個受保護的名字進行注冊。受保護的名字以"!"開頭。 NetworkControl:準許修改或者訪問網絡協議控制。
14、MultimediaDD:準許對所有多媒體設備驅動(聲音、攝像頭等)的訪問。
15、DRM:準許訪問DRM保護的內容。
16、TCB:準許在終端中訪問/sys以及/resource目錄。
17、CommDD:準許訪問通信設備驅動。
18、DiskAdmin:準許進行硬盤管理操作,例如格式化驅動器。
19、AllFiles:準許系統中的所有文件可見,而且還可對在/private下的文件進行寫操作。
看下來,頭大了吧,一樣,我也頭大,但是為了把權限說清楚,我還要把頭縮小回來,辦法就是不看這19條了……
不看這19條,我們怎么了解權限呢?
跳過權限的具體內容,我們直接看權限的級別。官方把權限分成了19類,有人會發現,越往后的權限,能力越高,可以實現對底層硬件的訪問,直至對系統核心文件的訪問;當然看不出這些,對我們了解權限也沒大問題,畢竟此文只是科普,不做深層研究。
現在我們知道s60的權限分19層,從1到19,一層比一層高。這個高怎么理解呢,用官階來作比方吧,例如權限1是普通士兵,只能做小兵才能做的事,并且絕無越權之說,士兵不可能有司令的權力,否則豈不亂套了,小兵指揮司令;而權限2呢,就是班長了,能做更多的事,依次類推,權限19就該是司令啦。
知道了權限的級別,對我們實際應用有什么幫助呢?
這就是實際應用的重點了!
權限對應的就是證書,證書是有分類的,分為通用證書、開發者證書、官方高權限證書、PID證書等(關于證書的稱呼,可能會有誤差,大的方向是沒問題的)。我們也沒必要詳細記住證書有多少種,只要知道證書按照權力大小分了幾種就成。
證書和權限是對照的,開發者證書有前13項權限,官方證書有前17項權限,PID證書有前19項權限,通用證書權限肯定少于13項,但是具體記不清了。
知道權限了,知道證書了,后面裝軟件的問題就好說了。
裝軟件的時候經常遇到證書錯誤,這是有說法的。
s60第三版開始,安裝軟件的時候,手機會對軟件做檢查,檢查軟件的能力和所具有的權力是否相等。等價于手機系統每個權限都有個檢查站,有人站崗檢查。你沒這個級別,證書錯誤,靠邊站。這里要擴展一下,說說能力和權力問題。
前面說了,士兵不能越級,不能做司令才能做得事,但是如果士兵能力具備了做司令的條件,手機系統會允許士兵當司令嗎?答案是否定的,除非……對,除非有了證書!有的軟件要求比較高的權力,例如司令權力,但是他的級別只是班長級別(說的比較極端,但是便于理解)。我們前面說過手機系統肯定不允許班長越級,所以裝此軟件的時候,手機會提示證書錯誤。
想讓士兵當司令,除非你拿出證明來!有請證書!證書就是士兵的委任狀!班長手持司令委任狀,那不就是一司令嘛!
手機系統一看,有司令委任狀,”司令首長好“,”恩,同志們辛苦了“!于是軟件就能順利通過權限檢查,通過檢查站,然后在本權限范圍內想干嘛干嘛。
這種賦予委任狀就是給軟件進行簽名,至于軟件怎么被簽名的,過程不究,我們只了解大概。只要你有證書,想裝什么軟件,只管給軟件簽名。簽名了,就等于給軟件發了一份委任狀,軟件就可以走馬上任了。當然,要是軟件本身就已經是司令級別了,你發個委任狀也是沒用的。
說到這里,還沒完。(你怎么還沒完啊……)
既然是委任狀,人上任當官了,總會有退休那一天吧。所以這個委任狀,也就是證書還涉及一個時間問題,就是證書有時效,在這個時間內有效,一旦超過這個期限,抱歉,司令委任狀也沒用了!
最早的開發者證書的時效可以用一句歌詞來表示——“我等你,半年為期”;通用證書一般是20年……20年,夠我換多少手機了……;后來的開發者證書是3年有效。至于PID證書,也就是司令委任狀的時間……我也不知道,反正現在、短暫的將來能用就成。
人是會退休的,但軟件不是人,所以過期也能用!
一旦證書超過時效,也不是徹底不能用,可以用簡單的辦法繞過時效問題,那就是改系統時間,直接調到證書有效期內,裝好軟件,讓軟件進入對應的檢查站,進入軟件工作崗位,再關門放狗把系統時間改回來,還不影響軟件工作!
能耐心看到最后,說明對證書權限簽名還不是特了解,再告訴你點比較無趣的吧。
那就是證書和手機必須是一一對應的,一個手機,準確說是一個imei和一個證書是對應的,不能混用。委任狀上肯定有名字,任命誰誰誰當什么什么,沒名字豈不是空頭票了,亂開空頭司令可不是鬧著玩的!
有了委任狀,有了軟件,想裝什么裝什么吧!當然沒有委任狀,也不是辦不成事,具體該怎么操作,以后再說