linux 中的 UID 是什么?

what is UID in linux?

linux 中的 UID 是什么? Wiki 和其他在线资源说它是用户 ID。但用户 ID 到底是什么? "user id" 这个名字让我感觉是使用 OS 的用户。像如果我只有一个用户,我的用户id应该是1。对于root,我理解是0。

但我看到用户 ID 已提供给每个进程(应用程序?)。那么,每个进程都有不同的uid吗?既然已经有了pid,为什么还需要它来区分呢

Ex :
root:/ # ps 8533
USER     PID   PPID  VSIZE  RSS     WCHAN    PC        NAME
u0_a78    8533  363   1526628 52668 ffffffff b6f80d04 S com.google.android.keep

root:/ # cat /proc/8533/status
Name:   le.android.keep
State:  S (sleeping)
Tgid:   8533
Pid:    8533
PPid:   363
TracerPid:  0
Uid:    10078   10078   10078   10078
....

所以这里为进程google保留,UID为10078。那么,是否有超过10000个用户?如果是,那么用户到底是谁?

UID 是 Linux 用户 ID。

用户 ID 不必从 0 或 1 开始计数。没有任何内容表明用户 ID 从 0、1、2 等开始上升,所以这并不奇怪UID 为 10078.

在 Android,每个应用都有自己的 Linux 用户。这样做是出于安全管理原因;每个用户的权限 = 每个应用程序都可以通过这种方式在 OS 级别进行管理。每次安装新应用时,都会为该应用创建一个新 Linux 用户。

这在以下内容中有更详细的解释:Android System Permissions

Linux用户是操作系统级别的用户,与使用Android设备的人没有任何直接关系。

我注意到在Android中(至少5和6)任何大于10000的uid都对应于非系统用户,即非系统应用。