android APP 許可權基礎

來源:互聯網
上載者:User

標籤:mis   prot   tac   let   解析   副本   系統資源   許可權   script   

  1   許可權(permission)的定義。
   系統本身定義了很多permission,例如

  •         "android.permission.WAKE_LOCK",     
  •         "android.permission.ACCESS_WIFI_STATE",
  •         "android.permission.ACCESS_FINE_LOCATION" ,
  •         "android.permission.ACCESS_FINE_LOCATION" 

     應用也可以定義一個自己的許可權,例如
    <permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER"
        android:label="@string/permlab_downloadManager"
        android:description="@string/permdesc_downloadManager"
        android:protectionLevel="signatureOrSystem" />

      使用這些permission,第一步需要在AndroidManifest裡面定義。例如

        <uses-permission       android:name="android.permission.ACCESS_FINE_LOCATION" />  
        當然了系統不會對任何應用開放任何許可權的。否則就等於沒有許可權,許可權還是有層級的

 

2   android許可權定義的層級。許可權的層級是許可權使用的一個維度
就拿上面定義的android.permission.ACCESS_DOWNLOAD_MANAGER許可權來說。它的使用層級(定義:  android:protectionLevel="signatureOrSystem")是系統簽名或者系統應用才可以使用。
        系統定義一下層級: normal , dangerous , signature , signatureorsystem
         normal 一般定義就可以使用到
         dangerous 在安裝時會給使用者提醒,如果使用者關閉了這些許可權,使用時一般的應用程式會提示使用者開啟這些許可權。這種層級的許可權是有限的

  •      GROUP  PERMISSIONS
  •      CALENDAR(日曆): READ_CLENDER, WRITE_CLENDAR
  •      CAMERA(相機): CAMEAR
  •      CONTACTS(連絡人):READ_CONTACTS , WRITE_CONTACTS, GET_ACCOUNTS
  •      LOCATION(定位): ACCESS_FINE_LOCATION, ACCESS_CORASE_LOCATION
  •      MICROPHONE(麥克風):RECORD_AUDIO
  •      PHONE(電話):READ_PHONE_STATE, CALL_PHONE, READ_CALL_LOG, WRITE_CALL_LOG, ADD_VOICEMAIL, USE_SIP,         PROCESS_OUTGOING_CALLS
  •                 SMS(簡訊):SEND_SMS, RECEIVE_SMS, READ_SMS, RECEIVE_WAP_PUSH,RECEIVE_MMS
  •      SENSORS(感應器):BODY_SENSORS
  •      STORAGE(儲存)


   signature 需要系統簽名才可以使用。例如一下的許可權
   <permission android:name="android.permission.SEND_DOWNLOAD_COMPLETED_INTENTS"
          android:label="@string/permlab_downloadCompletedIntent"
          android:description="@string/permdesc_downloadCompletedIntent"
          android:protectionLevel="signature" />
   當然了回報相關許可權的API會生效。
   signatureorsystem  表示需要系統簽名,或者屬於系統應用,(一般內建在system/app或者system/priv-app或者system/priv-app下面的應用)可   以使用系統的API。例如"android.permission.ACCESS_DOWNLOAD_MANAGER",

 

3   android 許可權使用的使用者維度 
   app安裝的時候,android會為每一個引用程式分配一個UID(使用者ID)和GID(使用者組ID)。
   此外安裝過程中還會產生一個GIDS。通過解析AndroidManifest,可以解析到應用運行時使用到的許可權(<uses-permission>),如果安裝過程中app  被賦予了permission的許可權,而且它有自己的GID,那麼這些許可權的GID會被添加到這個應用的GID裡面。從這個角度來說,app的GIDS會包含它使用  的許可權的集合(前提是已經被賦予)。進一步就是說app能使用到那些許可權或者資源都被定義在他的GUIDS裡面。
   綜合上述,一個應用程式會有一個UID。而且會有個一個GIDS。這個GIDS包含了運行時可以使用到的系統資源。
   Android利用沙箱來隔離每個應用程式,是之使用到獨立的資源。每個應用程式都有獨立的沙箱,這樣就阻礙了應用程式之間的共用。但是如果需要做到兩個應用程式之間的資源共用,則需要兩個前提:1 是這兩個應用程式有相同的簽名。2 是兩個應用程式定義相同的android:sharedUserId 這樣兩個應用程式就會運行同一進程裡面,彼此共用許可權。

 

4   其他,linux進程運行中的使用者

  •  uid(guid).真實使用者(組),進程的真是所有者。
  •  euid(geuid).有效使用者(組),進程啟動並執行時候需要的各種許可權,依賴於suid。
  •  suid(gsuid).儲存設定使用者(組),是有效使用者的副本。當超級使用者修改有效用使用者時,會先產生一個有效使用者的副本,即suid。這樣就會有主於有效使用者的恢複。
  •  fuid(fuid). 檔案使用者(組)

android APP 許可權基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.