Siehe Unix-Benutzer-IDs in macOS

360
Camille Goudeseune

Ich habe eine Millionendatei-Momentaufnahme eines alten Unix-Dateiservers mit 900 Benutzernamen. Unter Linux kann ich es durchsuchen und ls -lBenutzernamen des Schnappschusses /etc/passwdanzeigen lassen, indem ich einfach in das oberste Verzeichnis des Schnappschusses chroot'ing bin.

Ich habe diesen Schnappschuss auf ein exFAT-formatiertes USB-Laufwerk kopiert, um ihn an einen Mac-Benutzer zu senden. In MacOS zeigt mein Chroot-Trick jedoch möglicherweise keine Benutzernamen an, da diese von DirectoryService statt von / etc / passwd stammen. (Er fügt seinem Mac weder 900 Benutzer hinzu, noch installiert er Linux darauf.)

Wie kann er diese Benutzernamen in Dateilisten anzeigen?

Oder muss er ls -lnein benutzerdefiniertes Skript durchspielen, das uid / gid durch die Namen in dieser Kennwortdatei ersetzt?

0

1 Antwort auf die Frage

1
Kamil Maciorowski

Ich denke, Sie können tarnützlich sein. Ich habe GNU tarunter Debian und Ubuntu getestet . Ich habe keinen Zugriff auf Mac, es tarkann mit Optionen also nicht erreichbar sein. Trotzdem denke ich, dass Sie aus meiner Antwort einige Ideen bekommen können.

tar -xf archive.tar mountpoint/speichert Dateieigentümer / -gruppen hauptsächlich als Zeichenketten, sofern Sie nicht verwenden --numeric-owner. Es gibt wenige andere Optionen, die Sie sicherlich nicht verwenden möchten, z --owner=.

Durch das Entpacken des Archivs auf dem Zielsystem können die Besitzinformationen verfälscht werden, und dies wird in Ihrem Fall der Fall sein. Aber Sie können die ursprünglichen Benutzer / Gruppen anzeigen mit

tar -tvf archive.tar 

oder z

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

Wenn der große Snapshot bereits gesendet wurde und Sie nicht wollen, eine andere große Datei senden, können die anderen Benutzer versuchen, zu bauen archive.tarmit --owner-map=numerischen UIDs aus dem Snapshot zu beliebigen Namen, die von Ihnen (oder durch die zur Verfügung gestellt, um eine Verbindung /etc/passwddes Snapshot). Das Erstellen einer Map-Datei erfordert einige Anstrengungen. Ich habe auch Angst, dass dies nicht mit Gruppen funktioniert.

Kopieren Sie in diesem Fall nur die Metadaten (auf Ihrem System):

cp -a --attributes-only mountpoint/ whatever 

und tardie resultierenden leeren Dateien:

tar -xf metadata.tar whatever/ 

Senden Sie metadata.taran den anderen Benutzer ( gzipum die Größe zu reduzieren). Um die Besitzinformationen anzuzeigen, sollten sie ausgeführt werden tar -tvf metadata.tar.

`--owner-map` benötigt GNU tar 1.3+, https://www.gnu.org/software/tar/manual/html_section/tar_33.html#SEC69. Verwenden Sie unter macOS auf 10.6+ "gnutar", sonst "brew install gnu-tar". Camille Goudeseune vor 6 Jahren 0