- Qualitaetsoffensive
Home-Verzeichnis eines Nutzers verschieben
<div id='tutorialrahmen'>
Was wird gemacht?: Das Stamm- (Wurzel- oder Home-)Verzeichnis eines Nutzers wird verschoben.
Zielgruppe: (ambitionierte) Anfänger bis Fortgeschrittene
Dauer: ca. 15 Minuten
</div>
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:
- 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
odersudo -s
im Terminal eines Administrator bekommen. - 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.
Der Umzug
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. 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.
Dem System den Umzug mitteilen
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.
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.
Fertig - Neustart und testen nicht vegessen
Spätestens nach einem Neustart sollte im Terminal
finger NutzerName
etwas der Form
Login: nutzername | Name: Nutzer Name |
Directory: /Volumes/AnderePartition/NutzerName | Shell: /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.
Zu guter Letzt: Den alten Benutzerordner löschen.
Endgültig löscht man den alten Ordner mittels
sudo rm -dr /Users/NutzerNameALT
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>
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.
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.
Q&A
F: 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.
F: 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.
F: 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