увидеть Unix-идентификаторы в macOS

260
Camille Goudeseune

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

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

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

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

0

1 ответ на вопрос

1
Kamil Maciorowski

Я думаю, что вы можете найти 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.

`--owner-map` требуется GNU tar 1.3+, https://www.gnu.org/software/tar/manual/html_section/tar_33.html#SEC69. В macOS на 10.6+ используйте `gnutar`, иначе` brew install gnu-tar`. Camille Goudeseune 5 лет назад 0