找到具有数字名称的 Linux 用户,但找不到它是谁

找到具有数字名称的 Linux 用户,但找不到它是谁

简单而快速的问题:

kevin@pc:/usr/lib/jvm$ ls -l
total 8
lrwxrwxrwx 1 root root   25 Feb 20 17:31 default-java -> java-1.11.0-openjdk-amd64
lrwxrwxrwx 1 root root   21 Apr 23 20:34 java-1.11.0-openjdk-amd64 -> java-11-openjdk-amd64
drwxr-xr-x 7 root root 4096 Jun 12 15:25 java-11-openjdk-amd64
drwxr-xr-x 8  668  668 4096 Jun 12 12:12 jdk-11.0.3

这个 668 用户是谁/什么?我是唯一一个使用这台机器的人。

cat /etc/passwd | grep 668

不显示任何数字 668

附加信息:我通过 GUI 安装了 jdk-11.0.3_linux-x64_bin.deb

答案1

我相信您看到的是属于不存在的用户的文件/目录。 Linux 主要使用数字来表示用户而不是名称,用户名实际上是对数字的查找。如果 UID(数字)不存在于/etc/passwd(或其他 nsswitch 机制)中,这不会阻止文件属于该数字用户 ID。

原因的示例包括:

  • 在某个阶段,可能存在一个具有 uid 的用户668,但该用户已被删除。
  • 提取使用 UID 而非名称的存档(例如 tar 文件)。
  • 只需设置所有权即可chown
  • 从另一台计算机插入硬盘

答案2

我通过 GUI 安装了 jdk-11.0.3_linux-x64_bin.deb

“tar”实用程序和其他从主组合文件(在 tar 的情况下称为存档)中提取文件的程序通常有两种用户 ID 模式: 1) 让所有提取的文件属于执行提取的用户。 2) 恢复创建主文件时存在的用户ID。模式 2 需要 root 访问权限。问题首先是用户 ID 存储为 user数字,而不是文本。当制作这个存档时,jdk 目录属于用户号 668。但其次,即使主文件包含文本名称(例如“bob”)也没有多大帮助,因为您的计算机上可能没有“bob” ,如果有那个人可能不会与jdk有任何关系,并且不应该自动访问删除和修改jdk。

(虽然存档包含用户 ID 号听起来毫无用处,但请记住,您还可以使用 tar 来快照、存储和移动本地系统上的文件,其中创建存档文件时给定的用户 ID 号可能仍然相同用户稍后从存档中提取文件时。)

所以最终我会说你的安装 GUI 在恢复用户 ID 时犯了一个错误,而它不应该这样做。相反,它应该将所有文件的用户 ID 设置为其他 ID。

相关内容