Qualitaetsoffensive

Home-Verzeichnis eines Nutzers verschieben

Was wird gemacht?: Das Stamm- (Wurzel- oder Home-)Verzeichnis eines Nutzers wird verschoben.
Zielgruppe: (ambitionierte) Anfänger bis Fortgeschrittene
Dauer: ca. 15 Minuten


1.  Beschreibung

Unter Umständen ist es auch unter Mac OS X sinnvoll die Nutzerdaten von den Systemdaten getrennt auf einer anderen Partition zu halten. Das erleichtert Neuinstallationen und ist insbesondere für echte Mehrbenutzersysteme sehr zu empfehlen. Sowohl in der Windows-Welt ist dies nicht unüblich und unter Unix Standard.

Hier soll der nachträgliche Umzug eines Benutzers auf eine andere Partition beschrieben werden, da das der komplizierteste Fall ist. Sollen viele Benutzer umziehen, so ist es sinnvoller, den Gesamtordner /Users aller Benutzer statt den Einzelordner /Users/Benutzer umzuziehen.

Im Wesentlichen gibt es folgende Zugänge um die Rechte zu erhalten, die man benötigt, um einen Benutzer überhaupt umziehen lassen zu können. Da dieses teilweise zu regelrechten Glaubenskriegen führen, sollen hier beide angesprochen werden:

  1. Die alte Unix-Methode mittels eines allmächtigen root-Benutzers. Dieser Super-Systemverwalter kann mittels NetInfo Manager aktiviert werden. Man kann mit dem root-Account allerdings ein System auch richtig unsicher machen; insbesondere wenn man noch wenig Ahnung hat. Wer wirklich meint einen root zu brauchen kann diesen auch mittels sudo su oder sudo -s im Terminal eines Administrator bekommen.
  2. Die vom root-Account abstrahierte Methode. Ein Systemverwalter erhält für die benötigten Aktionen zeitlich begrenzt die Rechte eines root-Benutzers; genauer werden diese meist über die sogenannte sudoers Liste gesteuert. Der root-Account wird hierfür aber nicht aktiviert, kann also insbesondere auch nicht durch Unachtsamkeit offen gelassen werden. Ausserdem werden Aktionen, die mittels sudo ausgeführt werden, protokolliert.

Im Allgemeinen ist der Root-Account auch unter modernen Unix-Systemen gesperrt, das heißt, root hat ein ungültiges Passwort und häufig nicht einmal eine gültige Shell. Man nimmt statt dessen die Systemverwalter-Accounts. Im Gegensatz zum Home-Verzeichnis von root (/private/var/root), liegen die Home-Verzeichnisse der Systemverwalter aber ebenfalls im Sammelordner /Users. Man sollte daher nicht den Benutzerordner eines Benutzers verschieben wollen, der in diesem Moment angemeldet ist, da das zu Datenverlust und Inkonsistenzen führen kann. Will man seinen eigenen Ordner verschieben, so ist es daher sinnvoll, einen weiteren Systemverwalter anzulegen, als dieser sich anzumelden und nach Umzug diesen wieder zu löschen.

2.  Der Umzug

2.1  1. Am besten nach einem Neustart als neutraler Administrator anmelden

Das hat den Zweck, dass wirklich keine Programme eines Benutzers mehr laufen, die vielleicht die Daten im Benutzerordner zeitgleich ändern. Wer aus irgendwelchen Gründen seinen eigenen Ordner umziehen will, kann dieses auch über die Konsole machen (User >console im Login-Dialog), um eine konsistente /Library .

2.2  2. Den Benutzerordner auf eine andere Partition kopieren

Im Terminal (Dienstprogramm) mittels

sudo ditto -rsrcFork /Users/NutzerName /Volumes/AnderePartition/NutzerName

wird eine Kopie des Ordners /Users/NutzerName erzeugt, die ebenfalls die Resource-Forks des klassischen Mac OS erhält. So wird gewährleistet, dass auch alte Mac OS Classic die Dateien noch richtig zuordnen kann.

Die Verwendung von ditto stellt außerdem sicher, dass die Metadaten der kopierten Dateien erhalten bleiben (also Berechtigungen, letzte Änderung, erzeugt am usw.). Würde man einfach als Admin den Finder benutzen und die Daten kopieren, so würden ja dabei z.B. die Rechte an den Admin übergehen und der Benutzer selbst könnte nicht mehr darauf zugreifen.

3.  Dem System den Umzug mitteilen

3.1  Mac-OS intern

Der hier vorgeschlagene Weg basiert auf dem NetInfo-Dienst, der bis inklusive Mac OS X 10.4 eine zentrale Rolle der Systemverwaltung trägt. Ab Mac OS X 10.5 scheint vieles auf den allgemeinen Directory Service überzugehen. Der folgende Weg mittels NetInfo Manager bzw. nicl (NetInfo Control) ist erprobt unter 10.3 und 10.4, funktioniert aber nicht mehr unter 10.5.

  • Anfänger sollten mittels Netinfo Manager aus den Dienstprogrammen als Home-Ordner des Benutzers NutzerName den Pfad /Volumes/AnderePartition/NutzerName eintragen und die geänderte Version aktivieren.
  • Wer accounts mittels ssh verwaltet und sich mit Unix auskennt, wird vielleicht die Kommandozeilenversion
    • sudo nicl / -delete /users/nutzername home
    • sudo nicl / -create /users/nutzername home '/Volumes/AnderePartition/NutzerName'

bevorzugen.

Anmerkung: unter Snow Leopard 10.6 ist der Befehl nicl nicht mehr aktiv. Es sollte nun dscl genutzt werden.

Mit nicl / -read /users/nutzername kann man sich alle Daten anzeigen lassen. Dieser Zugang birgt jedoch die Gefahr, dass man schnell den Account unbrauchbar macht! So löscht sudo nicl / -delete /users/nutzername alle Verwaltungsinformationen. Ohne den – meist nachts laufenden – Cron-Job periodic daily, der die NetInfo Datenbank sichert, hat man sich dann schnell etwas mehr Arbeit gemacht.

Unter Mac OS X 10.5 wird weder der NetInfo Manager noch nicl oder niutil mit ausgeliefert, stattdessen wird der Gebrauch des Kommandozeilentools dscl empfohlen. Näheres dazu in der Apple knowledge base. Es gibt hier jedoch einen einfacheren Weg, der den unter 10.4 verwendeten NetInfo Manager ersetzt: In der Benutzerverwaltung den umzuziehenden Benutzer mit Sekundär-Klick (vulgo rechte Maustaste) anklicken - im Kontextmenü "Erweiterte Optionen…" wählen und unter Benutzerordner den neuen Pfad eintragen.

3.2  Für den Rest der Welt (z.B. LINUX-Programme)

Für den Überbau von Mac OS X ist damit der Umzug erledigt. Für einige Unix-Werkzeuge, die von einer festen Ort des Home-Verzeichnisses ausgehen, und zum Aufräumen sind allerdings noch weitere Schritte notwendig.

Dazu muss im Wesentlichen der alte Benutzerordner umbenannt und einen Link angelegt werden, der vom Platz des alten auf den neuen Benutzerordner zeigt.

Im Terminal benennt

sudo mv /Users/NutzerName /Users/NutzerNameALT

den alten Ordner NutzerName in NutzerNameALT um. Dann wird mittels

sudo ln -s /Volumes/AnderePartition/NutzerName /Users/NutzerName

ein Verweis (hier: SymLink) an der Stelle des alten Ordners angelegt. Mittels

ls -l /Users

kann man sich die Verweise im Ordner /Users anzeigen lassen. So sollte nun in einer Zeile der eben angelegte Verweis an einem Eintrag der Form

NutzerName -> /Volumes/AnderePartition/NutzerName

zu erkennen sein.

3.3  Fertig - Neustart und testen nicht vegessen

Spätestens nach einem Neustart sollte im Terminal

finger NutzerName

etwas der Form

Login: nutzernameName: Nutzer Name
Directory: /Volumes/AnderePartition/NutzerNameShell: /bin/bash

liefern. Damit ist der Benutzer umgezogen.

Man kann die Ordner zum Beispiel anhand der Größe sicherheitshalber noch vergleichen:

sudo du -ks /Users/NutzerNameALT

liefert die Größe des alten Ordners in KB, wohingegen

sudo du -ks /Volumes/AnderePartition/NutzerName

schon die Größe des neuen Ordners liefern sollte.

Sind die Partitionen verschieden formatiert, so kann es durchaus Unterschiede geben obwohl alles kopiert wurde. Dann kann man zum Beispiel mittels

sudo diff /Users/NutzerNameALT /Volumes/AnderePartition/NutzerName

sich die Unterschiede der beiden Ordner anzeigen lassen.

3.4  Zu guter Letzt: Den alten Benutzerordner löschen.

Endgültig löscht man den alten Ordner mittels

sudo rm -dr /Users/NutzerNameALT

4.  Anmerkung für Web-Sharing

Wer "Personal Web Sharing" benutzt, muss noch den Pfad zum Benutzer-Ordner anpassen, sonst hat der Benutzer u. U. keinen Zugriff mehr auf seine Webseiten unter http://localhost/~nutzername. Zum Ändern des Pfades

sudo pico /etc/httpd/users/nutzername.conf

aufrufen. In der 1. Zeile den Pfad anpassen, mit der Tastenkombination ctrl-w speichen und mit ctrl-x den Editor verlassen. Danach Personal Web Sharing aus- und wieder einschalten.

Falls es die Datei nicht geben sollte (Leopard), hier ist eine Beispiel-Datei ("username" und der Pfad müssen entsprechend andgepasst werden):

 Alias /~username /Volumes/Userdata/username/Sites
 <Directory /Volumes/Userdata/username/Sites>
 Order allow,deny
 Allow from all 
 Options All 
 </Directory>

5.  Schlussbemerkung

Dieser Umzug von Benutzern ist gerade auf Mehrbenutzersystemen an der Tagesordnung, da häufig eine einzige Partition nicht für alle ausreichend ist. Man sollte sich aber bewußt sein, dass dieser Umzug zwar für Unix-erfahrene Benutzer, mal abgesehen von NetInfo und ditto, offensichtlich ist; für reine Mac OS Classic Benutzer aber einige Untiefen bereithält.

6.  Alternatives Verfahren: Die fstab-Datei benutzen

Alternativ kann man auch eine ganze Partition als neues /users-Verzeichnis mounten. Das hat den Vorteil, dass man nicht mit NetInfo rumhantieren muß. Außerdem werden neue Benutzer automatisch auf der neuen Partition bzw. im neuen /users-Verzeichnis angelegt. Das Anlegen von Aliases und Anpassen von Verzeichnispfaden sollte bei diesem Vorgehen nicht notwendig sein.

Zunächst einmal besorgt man sich die UUID der zukünftigen Benutzer-Partition, beispielsweise mit Hilfe des Festplatten-Dienstprogramms. Partition anklicken, Info anklicken, die "Univ. eindeutige Identifizierung" abschreiben (z. B. A11D11FF-11AA-11CC-AADD-C0C0C09A9A9A). Programm beenden und alle Benutzer abmelden (Vorbereitungen).

Zu Begin wird das /Users-Verzeichnis wie folgt kopiert:

  • als Benutzer >console anmelden, kein Passwort
  • als Administrator einloggen, diesmal mit Passwort ;-)
  • sudo ditto -rsrcFork /Users /Volumes/AnderePartition

AnderePartition steht auch hier für den Namen der Partition, die Sie für den neuen Gebrauch als /Users-Verzeichnis vorgesehen haben.

Als nächstes wird die Datei /etc/fstab angelegt. /etc/fstab existiert unter MAC OS X eigentlich nicht. Wenn sie aber angelegt wird, besinnt sich der Mac auf seine Unix-Wurzeln und verhält sich wie ein "echter" UNIX-Rechner. Der Dummy-Datei fstab.hd ist bedauerlicherweise zu entnehmen, dass unter zukünftigen OS X-Versionen /etc/fstab möglicherweise keine Bedachtung mehr geschenkt werden wird. Das ist unter Leopard zum Glück noch nicht der Fall.

  • sudo touch /etc/fstab
  • sudo chown 0:0 /etc/fstab
  • sudo chmod 666 /etc/fstab
  • sudo nano /etc/fstab
  • der Texteditor sollte eine leere Datei anzeigen, falls nicht, hat schon jemand dran rumgefummelt und man sollte Extra-Vorsicht walten lassen. Eine Zeile mit folgendem Inhalt einfügen, die Datei speichern und den Texteditor schließen: UUID=A11D11FF-11AA-11CC-AADD-C0C0C09A9A9A /users hfs rw,auto Bitte beachten, dass die hier verwendete UUID nur ein Beispiel darstellt (siehe oben).
  • sudo chmod 644 /etc/fstab

Das alte /users-Verzeichnis sollte noch nicht gelöscht, sondern vorsichtshalber erst einmal umbenannt werden:

  • sudo mv /users /users.backup
  • sudo mkdir /Users
  • exit

Neustart. Die Partition wird als /Users-Verzeichnis gemounten. Jetzt sollte man sich unter den verschiedenen Benutzernamen anmelden und kontrollieren, ob auch alle Daten an Ihrem Platz sind. Anschließend kann man (auch vom Finder aus) das Verzeichnis /Users.backup löschen (Nachbereitungen).

VORSICHT: Fehler in /etc/fstab können das System unbrauchbar machen. Machen Sie vorher Sicherheitskopien von Ihren Daten. Es wird empfohlen sich diese Anleitung auszudrucken. Achten Sie darauf, dass die UUID korrekt ist.

7.  Q&A

Wie kann man den ganzen /Users-Ordner auf eine andere Partition verschieben, ohne jeden Benutzer einzeln zu verschieben?

Meldet man sich mittels Konsole (>console) oder remote mittels ssh an, so kann man alle, auch den eigenen Account, analog zum oben beschrieben Weg verschieben indem man die Ordner-Verschiebung etwas höher ansetzt: Mittels

sudo ditto -rsrcFork /Users /Volumes/AnderePartition/Users

erhält man auch die alten Resource-Forks. Verwendet man nur neue Programme, so reicht bei Dokumenten neuer Programme auch

sudo cp -rp /Users /Volumes/AnderePartition/.

Der Verweis

sudo ln -s /Volumes/AnderePartition/Users /Users

verknüpft den alten mit dem neuen Ort.

Worauf man allerdings achten sollte sind die Rechte bzw. Eigentümerverhältnisse. Diese werden mittels chown bzw. chmod angepasst. Die Option "-p" des Kopierbefehl cp kümmert sich bei üblichen Installationen darum, eben diese Rechte und Eigentümerverhältnisse zu erhalten; für File-Systeme ohne Rechte- bzw. Eigentümerverwaltung oder zu Apples aktuellem File System inkompatiblem Systemen kann einiges durcheinander gewirbelt werden.

Danach läuft das System schon wieder im Normalbetrieb, man sollte aber noch NetInfo den Umzug mitteilen. Dieses geht entweder per nicl im Batch-Betrieb oder einem Shell-Skript, oder dem NetInfo Manager. Ein Skript kann sich ein erfahrener Systemverwalter leicht selbst schreiben; eine Einführung in die Bash bzw. Tcsh würde den Rahmen hier aber sprengen.

Ist es möglich auch andere Standard-Ordner von Mac OS X zu verschieben, wie z.B. der /Applications-Ordner?

Die Idee ist immer die gleiche: Verschieben und Link setzen. Problematisch an Mac OS X ist nur, dass einige von Apple mitgelieferte Programme immer noch von festen Orten ausgehen: Software-Aktualisierung und Installationsprogramm sind die unrühmlichsten Beispiele. Daher sollten von Apple gelieferte Programme nicht verschoben werden. Für andere Programme gilt das aber nicht. Alles was auch unter einem anderen Unix läuft, z. B. OpenOffice, Gimp, WWW-Root von Apache, usw. kann man immer auch verschieben.

So spricht nichts dagegen, zum Beispiel mittels

sudo mkdir -p /Volumes/AnderePartition/Applications/Textprogramme

sich einen neuen Programme-Ordner mit einem Unterordner Textprogramme anzulegen. In diesen kann man dann OpenOffice, Microsoft-Office, AbiWord, etc. installieren oder verschieben (sudo ditto -rsrc). Den Ordner Textprogramme verknüpft man dann mittels

sudo ln -s /Volumes/AnderePartition/Applications/Textprogramme /Applications/Textprogramme

mit einem Ort im Programme/Applications-Ordner.

Gerade für Programme mit Aqua-Oberfläche kann die richtige Formatierung wichtig werden. Daher sollte das Ziel-Volume mit einer der HFS-Varianten formatiert sein.

Ist es möglich mit FileVault-verschlüsselten Homeverzeichnissen umzuziehen?

In dem entsprechenden Homeverzeichnis befindet sich ein verschlüsseltes Sparseimage. Damit sollte man auch umziehen können. Bei einem Versuch trat aber das Problem auf, daß das Sparseimage anschließend nicht mehr korrekt gemountet wird. Weitere Versuche stehen noch aus. Das Problem umgeht man, indem man die oben beschriebene Alternative via /etc/fstab verwendet.

Kategorien
Betriebssystem, Tutorials

Zuletzt geändert am 07.02.2015 20:44 Uhr von AM (70.051 Besuche)

© 2004 – 2016 ApfelWiki

Impressum - Datenschutz

cb