У меня есть снимок 900-го идентификатора пользователя из миллиона файлов старого файлового сервера Unix. В Linux я могу просмотреть его и сделать так, чтобы ls -l показывал имена пользователей из /etc/passwd снимка, просто выполняя chroot'ing в верхнем каталоге снимка.

Я скопировал этот снимок на USB-диск в формате exFAT, чтобы отправить его пользователю Mac. Но в macOS мой трюк с chroot может не отображать имена пользователей, потому что они приходят из DirectoryService вместо /etc /passwd. (Он не будет добавлять 900 пользователей на свой Mac и не будет устанавливать на него Linux.)

Как он может просматривать эти имена пользователей в списках файлов?

Или ему придется ls -ln через собственный скрипт, который заменяет uid/gid на имена в этом файле паролей?

1 ответ1

1

Я думаю, что вы можете найти tar полезной. Я тестировал GNU tar на Debian и Ubuntu. У меня нет доступа к 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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .