Android與Linux中從uid到使用者名稱的對映

2021-07-08 15:46:54 字數 1811 閱讀 9860

整理自

android 從uid到使用者名稱的對映分析

理解 /etc/passwd 檔案

/etc/passwd 檔案是系統的主要檔案之一。該檔案中包含了所有使用者登入名清單;為所有使用者指定了主目錄;在登入時使用的 shell 程式名稱等。該檔案還儲存了使用者口令;給每個使用者提供系統識別號。

/etc/passwd 檔案是乙個純文字檔案,每行採用了相同的格式:name:password:uid:gid:comment:home:shell

它們的含義如下: 域

說明 name

使用者登入名

password

使用者口令。此域中的口令是加密的。當使用者登入系統時,系統對輸入的口令採取相同的演算法,與此域中的內容進行比較。如果此域為空,表明該使用者登入時不需要口令。

uid指定使用者的

uid。使用者登入進系統後,系統通過該值,而不是使用者名稱來識別使用者。

gidgid

。如果系統要對相同的一群人賦予相同的權利,則使用該值。

comment

用來儲存使用者的真實姓名和個人細節。

home

指定使用者的主目錄的絕對路徑。

shell

如果使用者登入成功,則要執行的命令的絕對路徑放在這一區域中。它可以是任何命令。

熟悉linux的系統的人都知道uid,android使用linux kernel,也有uid,但是anroid uid的概念和常見的linux系統的uid 概念不太一樣。

linux檔案系統中,每個檔案都會儲存屬性資訊,包括檔案所有者uid,檔案所在組gid,檔案的可讀可寫可執行許可權。這些資訊稱之為stat資訊。

stat資訊裡只儲存了uid,被沒用使用者名稱。熟悉ubuntu的朋友都知道,uid和使用者名稱之間的對應關係儲存在/etc/passwd目錄下,有了uid,再去/etc/passwd檔案裡找,就能找到uid對應的使用者名稱了。

好,我們進入adb 進入android手機,去找找/etc/passwd檔案。waht the f**k! 坑爹啊, 根本沒有這個檔案。

這個問題困擾了我很久,於是有一天,我決定看android原始碼來解決這個問題。

我從android原生shell命令ps入手。android的shell為toolbox,那麼ps命令原始碼自然在toolbox專案下。原始碼路徑為system/core/toolbox/ps.c。

ps命令主要是遍歷/proc目錄,找到所有數字開頭的目錄,數字開頭的目錄是對應pid的資訊目錄,目錄的uid就是對應pid程序的建立者。ps中主要通過這些**拿到使用者名稱。

[html]

view plain

copy

pw= 

getpwuid

(stats.st_uid);  

if(pw

== 0)  else   

pw的結構如下

[html]

view plain

copy

struct passwd ;  

man 下getpwuid,了解到getpwuid返回uid對應的password database記錄的部分資訊,password database通常為/etc/passwd檔案。

貌似我們又回到了原點,oh god help me。我打算getpwuid看看實現**,看看它是如何從/etc/passwd檔案中找對應的record。

system/core/include/private/android_filesystem_config.h。

看完**後,有一種釋然的感覺,困擾我許久的問題總算是有了答案。今後在分析android的時候,不要用傳統的linux的角度去分析,盡量看android原始碼。

android從網頁中讀取資料

c 作業獲得網頁資料 首先在build.gradle的dependencies中新增依賴。如下 dependencies 然後就是去到總配置檔案那裡設定網路鏈結許可權了 ok,然後就可以開始使用了,是不是很簡單!他還有處理json的方法,如下 執行結果如下 手機助手解除安裝了,無法截手機,就截控制台...

關於android核心從linux核心分支上除名

最近不單只是看android開發與測試相關知識,也在了解這之外相關的資訊.畢竟,自己的眼界不能太狹窄.今天我在逛乙個android論壇上時候看到乙個很老的帖子,轉了個關於android被從linux分支樹上移除的新聞.以為是假新聞來著,後面上網找了找,還真是搜尋出一堆結果,發現有些比較大的it 上也...

關於android核心從linux核心分支上除名

最近不單只是看android開發與測試相關知識,也在了解這之外相關的資訊.畢竟,自己的眼界不能太狹窄.今天我在逛乙個android論壇上時候看到乙個很老的帖子,轉了個關於android被從linux分支樹上移除的新聞.以為是假新聞來著,後面上網找了找,還真是搜尋出一堆結果,發現有些比較大的it 上也...