Mac OS X - Symlink / home to / Benutzer


14

Für diejenigen von uns, die sich mit Pinguinen und Äpfeln beschäftigen, scheint es sehr lohnenswert zu sein, / home-Pfade entweder außerhalb des Habbits zu verwenden, oder für die seltsamen Fälle, in denen der Wert möglicherweise in einer Datei, die Sie erstellt haben, irgendwo entlang der Linie synchronisiert wurde auf beiden maschinen verwenden.


6
~usernameWird unabhängig von Mac OSX oder Linux in Ihr Basisverzeichnis verschoben.
Nohillside

1
Ich bin mir dessen bewusst, aber einige plattformübergreifende Anwendungen sparen absolute Pfade. Ein Beispiel dafür ist Sublime Text 2.
anthonyryan1

1
In der Tat wird nur ~in Ihr Home-Verzeichnis erweitert. Können Sie bitte in Ihrer Frage klarstellen, ob Sie einen Link zu Ihrem Benutzer -Ausgangsverzeichnis (dh. /Users/[username]) Oder zu dem Benutzerverzeichnis selbst ( /Users/) erstellen möchten, das separate Verzeichnisse für alle Benutzer auf dem Computer enthält?
Cleverbit

Antworten:


19

sudo ln -s /Users /homewird mit zusätzlicher Konfiguration funktionieren, aber ich halte das nicht für eine gute Idee, da Sie über ~in Shell oder nach Hause zugreifen sollten $HOME. Auch /homekönnte ein Linux Standard und häufig in Unix verwendet werden , aber nicht immer so besser auf Informationen verlassen, die Arbeit nicht etwas garantiert , dass nur die meiste Zeit funktioniert , wenn jeder zu einem Kongress gehalten hat.

sudo ln -s /Users /homeBefolgen Sie diese Schritte (aus den Kommentaren), um Arbeit zu machen :

EDITOR=nano sudo -e /etc/auto_master
# add a "#" at the start of the line beginning with /home
# save changes
sudo automount -cv
sudo ln -s /Users /home

7
Bearbeiten Sie zuerst die Startzeile /etc/auto_masterund kommentieren Sie sie aus. Starten Sie dann neu, um die vorhandene / home-Ressource freizugeben. Anschließend können Sie das Verzeichnis wie folgt verknüpfen. ln -s /Users /home. Bis dahin können Sie den Symlink einfach nicht erstellen, da die Ressource ausgelastet ist.
Anthonyryan1

@AR. Gibt es mögliche negative Konsequenzen (oder warum ist es überhaupt vorhanden?). Und ich darf es nicht einmal als root bearbeiten oder nach chmod a + w / etc / auto_master gibt es einen anderen Weg?
Abe

2
-1. Dies führt zu einer operation not supportedNachricht
Abe

2
@Abe Befolgen Sie nicht die Anweisungen von @ AR. Beachten Sie, dass Sie nicht neu starten müssen. Sie können sudo automount -cvstattdessen laufen .
Zigg

@zigg danke. Aber das macht die Antwort immer noch nicht vollständig. Ich werde eine Änderung vorschlagen - ich konnte sowieso nicht abstimmen!
Abe

5

Ich bedaure, dass diese Antwort nicht gerade maßgeblich ist, da ich dies selbst nie getan habe - obwohl ich auf anderen Unix-Systemen einen ähnlichen Automounter verwendet habe -, aber hier ist mein Verständnis darüber, wofür /homeOS X verwendet wird.

Folgen wir also der Spur:

Wenn Sie mountTerminal zum ersten Mal eingeben, um aktive Reittiere anzuzeigen, wird folgende Zeile angezeigt:

map auto_home on /home (autofs, automounted, nobrowse)

autofsKarten sind in definiert /etc/auto_masterund /homesind wiederum spezifisch in definiert /etc/auto_home. Wenn Sie sich das ansehen /etc/auto_home, sehen Sie folgende Zeile:

+/usr/libexec/od_user_homes

Folgen Sie der Spur einen weiteren Schritt auf der od_user_homesman - Seite , und Sie werden ein Programm , dessen Zweck zu finden , ist einen Benutzernamen zu nehmen, schauen Sie in Open Directory auf und geben eine URL an das Heimatverzeichnis des Benutzers. Wenn Sie lesen, auf auto_masteran seiner Seite Mann , werden Sie feststellen , dass ein ausführbares Programm für eine Karte Ergebnisse in diesem Programm über eine URL aufgerufen wird nachschlagen zu montieren, der wiederum an Ort und Stelle montiert.

Die beabsichtigte Anwendung scheint zu sein, dass, wenn Ihr Mac mit einem Verzeichnisdienst verbunden ist, /home/jdoeder Automounter das Basisverzeichnis des Mac dort anhängen wird jdoe.

Auf dieser Grundlage scheint es logisch, zu folgern, dass Sie die /homein diesem Kommentar beschriebene automatische Bereitstellung entfernen können, wenn Sie nicht beabsichtigen, Ihren Mac mit einem Verzeichnisdienst zu verbinden . Ich weiß jedoch nicht, wie zukünftige Betriebssystem-Updates damit umgehen werden.


1
Ich benutze den Automounter lieber, als ihn zu deaktivieren. Also würde ich den Automounter / Users / $ USER auf / home / $ USER mounten lassen. Ich frage mich, ob es so einfach ist, diese Zeile in / etc / auto_home durch etwas wie "+ / bin / echo / home / $ 1" zu ersetzen, oder ob Sie eine ordnungsgemäße Fehlerbehandlung wünschen, erstellen Sie ein Skript, das repliziert, was od_user_homes tut
Tim B

@ TimB Interessanter Gedanke. Nachdem ich ein wenig damit gespielt habe, bin ich mir nicht ganz sicher, ob Sie einen lokalen Pfad angeben können, der sich automountddamit befasst. Es scheint möglich zu sein, NFS, SMB und AFS auszuführen.
Zigg

Ich weiß nicht, ob das unter Linux funktioniert, aber ich habe es immer unter Solaris getan. Das reale Verzeichnis war / export / home / $ USER, und es gab eine Standardkonfiguration, um diese automatisch in / home / $ USER zu laden. In der Tat sieht es so aus, dass jetzt die Standardkonfiguration in Solaris 11.x nach ist blogs.oracle.com/observatory/entry/automounted_home_directory
Tim B

1
Ich habe nur schnell geschaut. Sie müssen nicht einmal die ausführbare Map od_user_homes imitieren. Das ist nur da, um OD zu unterstützen. Das normale automatische Einbinden von / Users / $ USER in / home / $ USER ist möglich. Es wird in der auto_master-Manpage gezeigt, obwohl das dortige Beispiel zeigt, dass entfernte NFS-Bereitstellungen und keine lokalen Verzeichnisse vorhanden sind, sollte es auch lokal funktionieren.
Tim B

Ich könnte etwas falsch zu machen habe, aber ich habe einen lokalen Pfad zu konfigurieren , wo ich eine NFS - Mount verwenden könnte und erhielt ein , Input/output errorwenn zu versuchen cd. Aus meiner Lektüre ging hervor, dass ich, wie gesagt, nur NFS, SMB oder AFS verwenden konnte. Aber vielleicht sollten wir anderswo experimentieren ...
Zick-Zack

2

Es hat keinen Sinn für /home. OS X hat wie verschiedene andere Unix-Versionen einen eindeutigen Speicherort für den Benutzer. In Linux ist es bei /home/userund in OS X ist es bei /Users. Aus diesem Grund empfiehlt es sich, die Abkürzung " ~" oder die Umgebungsvariable zu verwenden $HOME.

/Users/[username]Mit dem folgenden Befehl können Sie einen Symlink zum Basis- / Basisverzeichnis des Benutzers erstellen :

ln -s ~ /foo

Es funktioniert nicht, einen Link mit dem Namen zu erstellen, /homeda sich bereits ein (n nicht verwendetes) Verzeichnis mit diesem Namen im Stammverzeichnis des Systems befindet.


1
Genau. Ich habe auf anderen Unix-ähnlichen Systemen gearbeitet, die aus verschiedenen Gründen andere Konventionen für Home-Verzeichnisse verwendeten, z /export/home/username. B. unter Solaris. Es ist eine schlechte Praxis anzunehmen, dass /home/usernamees funktionieren wird. Programme, die nach Home-Verzeichnissen suchen, sollten getpwnamoder verwenden getpwuid.
Zigg

1
Ich stimme voll und ganz zu, dass es eine schlechte Praxis ist, wenn Programme von ihrer Existenz ausgehen, aber das behebt nicht, dass Software manchmal nicht kompetent entwickelt wird.
Anthonyryan1

Unter den Reittieren in meinem Fall und anderen: map auto_home on /home (autofs, automounted, nobrowse)… obwohl ich den Ursprung dieses Reittiers nicht kenne, sollte ich nicht zustimmen, dass "nichts für /home" ist.
Graham Perrin

Sorry hätte klarer sein sollen: nur gemeint /homeist anscheinend reserviert, aber unbenutzt in OSX, nicht, dass es keinen Sinn macht, es zu benutzen;)
Cleverbit

@richarddas Ich bekomme den gleichen operation not supportedFehler sudo ln -s /Users/username /home/usernamewie ich aus sudo ln -s /Users /home. Die von @AR bereitgestellte Lösung funktioniert ( /homeZeile auskommentieren/etc/auto_master und neu starten ).
Abe

1

Ich sehe überhaupt keinen Grund, das Verzeichnis / home nicht umzubenennen (falls ich mich irre) und eine symbolische Verknüpfung von / home zu / Users (oder, wie auf meinem Computer, / Volumes / Users seit meinem System) herzustellen Scheibe ist für System, verdammt!)

Ich habe als Sysadmin in einer Universitätsabteilung mit 11 Unix-Versionen gearbeitet. Wir hatten alle möglichen Symlinks im globalen Verzeichnisbaum, damit das Dateisystem das Richtige tat und Skripte so nah wie möglich an der Arbeit waren. Sie stoßen zwar auf ein paar Fallstricke, aber wenn Sie es gewohnt sind, mit den Fingern / home / foo zu tippen, und ein Symlink die Umschulung Ihrer Finger aufschiebt, gehen Sie auf die Strecke.

In ähnlicher Weise haben einige Linuxen bereits Home-Verzeichnisse wie / usr / home.

An einem Ort, an dem ich arbeitete, befanden sich die Home-Verzeichnisse von / Users / {group} / {username} als Teilschutz gegen das Herumstöbern von Studenten in Professorendateien, wenn der Professor mit seinen Berechtigungen nachlässig war. Das Benutzerverzeichnis wurde ausgeführt, es wurden jedoch keine Lesebits gesetzt, und die Gruppenverzeichnisse waren nur für die Gruppenmitglieder lesbar.

(All dies zur Veranschaulichung, da es viele Möglichkeiten gibt, diese bestimmte Katze seines Fells zu berauben.

Ein möglicher Fall - stellen Sie sicher, dass die Zeitmaschine nicht zwei Kopien von allem erstellt. Ich weiß nicht, wie TM Symlinks behandelt. Wenn dies der Fall ist, fügen Sie / home zur Ausschlussliste von TM hinzu.


1
Wenn etwas oder jemand einen unangemessenen Modus oder eine unangemessene Zugriffssteuerungsliste für Ihre Alternative festlegt, können /Usersdie bekannten Routinen zum Reparieren von Berechtigungen möglicherweise nicht die erforderlichen Korrekturen vornehmen. Deshalb empfehle ich, dass /Usersvon Apple so installiert werden sollte: ein Verzeichnis, kein symbolischer Link.
Graham Perrin

0

Ich habe es schon einmal versucht und es für ungefähr eine Woche zum Laufen gebracht, bis ich neu gestartet habe ...

Sie können nicht einfach einen Symlink /homezu erstellen /Users. In der Tat können Sie nicht einmal entfernen /home.

Wenn Sie es schaffen, zu entfernen /home, wird es nach dem Neustart wieder angezeigt.

Wenn Sie /homezu /home.oldund symlink wechseln , /homewird der symlink entfernt /home.

Sie können dies so lange ausführen, wie Ihr Mac nicht abstürzt oder neu startet.

Beim Neustart verschwindet alles!

Wenn Sie neu starten, scheint Mac OS X zu glauben, dass Sie einen neuen Benutzer erstellen, sodass alle Benutzereinstellungen in Ihrem alten /Users/usernameVerzeichnis überschrieben werden .

Da Sie alles in kopiert haben /home/username, erwarten Sie, dass ls /homenach dem Neustart Ihr neues Basisverzeichnis angezeigt wird. Stattdessen bekommst du NICHTS !!! Es ist, als ob es nie existiert hätte.

In meinem Fall flippte ich ungefähr 30 Minuten lang aus, dann startete ich in den Einzelbenutzermodus, um zu sehen, ob etwas getan werden konnte. Ich dachte, ich könnte eine Protokolldatei abrufen oder versuchen, ein Reparaturdienstprogramm zu starten.

Im Einzelbenutzermodus war mein Ausgangsverzeichnis dort. Apple versteckt/home im Mehrbenutzermodus absichtlich alle neu erstellten Verzeichnisse vor dem Benutzer. Dies ist ein absichtlich böses Designmerkmal.

Apple ist lahm und entmutigt jede Art von Hacking ihres Betriebssystems. Was für ein Designmerkmal ist das? Apple versteckt den Inhalt des neu erstellten /homeVerzeichnisses. Es gibt absolut keinen legitimen Grund für Apple, das /homeVerzeichnis oder von Benutzern erstellte Verzeichnisse automatisch zu entfernen !

In diesem Fall mounten sie ein Verzeichnis über Ihrem / home-Verzeichnis ... und verstecken es effektiv.

Wenn Sie wirklich fest entschlossen sind, /homestatt zu verwenden /Users, können Sie es möglicherweise umgehen, indem Sie ein Skript schreiben, um bei jedem Start alles einzurichten.

Außerdem sollte ich erwähnen, dass Sie in der Lage sein sollten, ein anderes Verzeichnis zu verwenden, das nicht /homeals Ersatz für dient, /Usersda nur /homegesperrt ist.

Wenn Sie bash verwenden, müssen Sie einige der Umgebungsvariablen setzen, nämlich: CD_HOMEund HOME.

Ich möchte hinzufügen, dass ... obwohl Sie das Abmelden nicht erzwingen oder abmelden können /home, können Sie einen Datenträger darüber mounten /home. All dies wurde auf "auto_home" montiert.

Ich konnte die Wiederherstellungsdiskette /homeerfolgreich einbinden ... vielleicht ist das so, wie es geht.


TL / DR; Eine Anpassung ohne Neustart ist unter Verwendung der bestbewerteten Antwort möglich
MarkHu,
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.