getid()
函數(shù)在 Linux 中用于獲取當(dāng)前進(jìn)程的有效用戶 ID(EUID)和有效組 ID(EGID)。這個(gè)函數(shù)返回的是當(dāng)前進(jìn)程所擁有的實(shí)際身份,而不是它嘗試或聲稱的身份。
關(guān)于你的問(wèn)題,“Linux Getid能識(shí)別所有ID嗎”,這取決于你如何定義“識(shí)別所有ID”。
getid()
返回的是當(dāng)前進(jìn)程的有效ID。有效ID是進(jìn)程在文件系統(tǒng)中以特定用戶或組身份執(zhí)行時(shí)使用的ID。然而,一個(gè)進(jìn)程可能擁有多個(gè)實(shí)際的ID(例如,通過(guò) setuid()
、setgid()
等函數(shù)更改),但只有一個(gè)有效的ID。getid()
返回的ID可以是用戶ID或組ID。在Linux中,每個(gè)進(jìn)程都有一個(gè)與之關(guān)聯(lián)的用戶ID和一個(gè)與之關(guān)聯(lián)的組ID。這些ID用于確定進(jìn)程可以訪問(wèn)哪些文件和目錄。getid()
函數(shù)并不能識(shí)別所有這些ID。getid()
只返回當(dāng)前進(jìn)程的有效ID。要獲取進(jìn)程的所有ID,你可能需要查閱 /proc/[pid]/uid_map
和 /proc/[pid]/gid_map
文件,這些文件包含了進(jìn)程的ID映射信息。總之,getid()
函數(shù)返回的是當(dāng)前進(jìn)程的有效用戶ID和有效組ID,而不是它可能擁有的所有ID。要獲取更全面的ID信息,你可能需要查看 /proc
文件系統(tǒng)中的其他文件。