查看 macOS 中的 Unix 用户 ID

查看 macOS 中的 Unix 用户 ID

我有一个包含 900 个用户 ID 的旧 Unix 文件服务器快照,其中包含上百万个文件。在 Linux 上,我只需 chroot 到快照的顶级目录,就可以浏览它并ls -l显示快照中的用户名。/etc/passwd

我已将此快照复制到 exFAT 格式的 USB 驱动器,以便发送给 Mac 用户。但在 macOS 中,我的 chroot 技巧可能无法显示用户名,因为用户名来自 DirectoryService 而不是 /etc/passwd。(他不会在他的 Mac 上添加 900 个用户,也不会在上面安装 Linux。)

他如何在文件列表中查看这些用户名?

或者他是否必须ls -ln通过自定义脚本将 uid/gid 替换为该密码文件中的名称?

答案1

我认为你可能会觉得tar有用。我tar在 Debian 和 Ubuntu 上测试了 GNU。我无法使用 Mac,它的tar选项可能不那么丰富。不过,我认为你能从我的回答中得到一些想法。

tar -xf archive.tar mountpoint/将主要将文件所有者/组存储为字符串,除非您使用--numeric-owner。您当然还可以选择其他几个选项想要使用,例如--owner=

在目标系统上,提取档案可能会破坏所有权信息,并且就您而言确实如此。您可以使用以下方式查看原始用户/组

tar -tvf archive.tar

或者例如

tar -tvf archive.tar path/to/object1/within/archive path/to/object2

如果大型快照已发送,而您不想再发送大型文件,则其他用户可能会尝试使用archive.tar--owner-map=快照中的数字 UID 连接到您(或/etc/passwd快照的所有者)提供的任意名称来构建。构建映射文件需要一些努力。我担心这不适用于群组。

在这种情况下仅复制元数据(在您的系统上):

cp -a --attributes-only mountpoint/ whatever

以及tar生成的空文件:

tar -xf metadata.tar whatever/

发送metadata.tar给其他用户(gzip可能是为了减小尺寸)。要查看所有权信息,他们应该运行tar -tvf metadata.tar

相关内容