【问题标题】:what is UID in linux?linux中的UID是什么?
【发布时间】:2015-05-29 06:34:48
【问题描述】:

什么是 linux 中的 UID? Wiki 和其他在线资源说它是用户 ID。但究竟什么是用户 ID? “user id”这个名字让我感觉是使用操作系统的用户。比如如果我只有一个用户,我的用户 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 keep 的进程,UID 是 10078。那么,有超过 10000 个用户吗?如果是,那么究竟谁是用户?

【问题讨论】:

    标签: android linux unix process uid


    【解决方案1】:

    UID 是 Linux 用户 ID。

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

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

    这在Android System Permissions中有更详细的解释

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

    【讨论】:

    • 太棒了! “在 Android 上,每个应用程序都有自己的 Linux 用户。” - 这像宝石一样回答了我的查询。那么我可以假设完成了超过 10000 个应用程序安装吗?只是为了澄清我的理解,在ubuntu中,uid是指使用操作系统的实际用户吗?
    • 没有。也许它从 10000 开始计数。也许数字 10078 意味着您安装了 79 个应用程序。在 Ubuntu 中,每个实际用户确实有一个 Linux 用户,也有多个 Linux 用户用于其他目的。
    • 谢谢杰斯珀。这个博客linfo.org/uid.html 说,uid 可以在 /etc/passwd 中看到。虽然我在 android 中找不到此路径,但在 ubuntu 中,它包含诸如“pulse:x:110:119:PulseAudio daemon,,,:/var/run/pulse:/bin/false”之类的数据,其中 110 是 UID。但我期待我的名字(用户)而不是应用程序“脉冲”。很抱歉给您添麻烦了。您能对此发表评论吗?
    • PulseAudio 有一个单独的用户。正如我所说,Linux 用户不仅适用于实际的人类用户。也有针对特定进程的Linux用户,例如PulseAudio等。见man /etc/passwd
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-17
      • 2013-01-13
      • 2018-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-22
      • 2016-02-25
      相关资源
      最近更新 更多