/homeist nicht einmal eine universelle Konvention.

/homeist nicht einmal eine universelle Konvention.

Ist es möglich, die Funktionalität des Verzeichnisses, das normalerweise /home(in Distributionen wie Debian und Ubuntu) zugewiesen ist, stattdessen (vollständig) einem anderen Verzeichnis zuzuweisen? Wenn Sie dies beispielsweise tun könnten und es in ändern würden, /xyzwürden alle Ihre neuen Benutzerverzeichnisse im Besitz von Menschen unter installiert /xyz(so dass beispielsweise Sallys Desktop-Pfad /xyz/Sally/Desktopanstelle von wäre /home/Sally/Desktopund /homenicht vorhanden sein müsste).

Ich arbeite an einem portablen Programm, das Pfade speichert und lädt. Wenn es auf einem anderen Computer mit einem Home-Verzeichnis verwendet wird, das sich nicht unter befindet /home(und es daher kein gibt /home, sondern einen anderen Pfad mit seiner Funktionalität), dann möchte ich, dass es den Pfad so anpasst, dass er beim Laden des Pfads den richtigen Speicherort des Home-Verzeichnisses für den neuen Computer enthält.

Antwort1

Es müssen keine Home-Verzeichnisse in platziert werden /homeund Ihr Programm ist fehlerhaft, wenn es Annahmen fest verdrahtet wie, dass alle Home-Verzeichnisse ein gemeinsames übergeordnetes Verzeichnis haben oder dass dieses übergeordnete Verzeichnis den Namen hat /home.

/homeist nicht einmal eine universelle Konvention.

/homewar eine Idee, die ziemlich lange nach der Erfindung von Unix entstand. In frühen Unix-Versionen wurden andere Verzeichnisse verwendet. Dies ist heute noch bei Betriebssystemen wie FreeBSD (und seinen Derivaten) zu sehen, wo /homeein symbolischer Link ist und Benutzerverzeichnisse tatsächlich unter liegen /usr/home.

Solaris platziert ebenfalls „echte“ Home-Verzeichnisse, /export/homesodass diese /homemit automatischen NFS-Mounts und dergleichen gefüllt werden können.

/homeist nicht das übergeordnete Verzeichnis vieler gängiger Home-Verzeichnisse.

Es gibt viele Home-Verzeichnisse, die nicht in liegen /home.

  • Das offensichtlichste ist /root, das Home-Verzeichnis für den Superuser, das von seinem alten Speicherort unter verschoben wurde, /damit die persönlichen und „dot“-Dateien von Root das Root-Verzeichnis nicht überladen, sondern auf dem Root-Volume verbleibt, damit sich der Superuser auch dann anmelden kann, wenn das Mounten anderer Datenträger fehlschlägt.
  • Verschiedene Daemon-Softwares haben an anderen Orten Home-Verzeichnisse für die dedizierten Konten, unter denen diese Daemons ausgeführt werden.
    • Die verschiedenen Dæmon-Konten von qmail verwenden /var/qmailbeispielsweise oder /var/qmail/alias. Letzteres wird sogar häufig als angesprochen ~aliasund istentworfen~alias/.qmailein Home-Verzeichnis mit Dateien wie in den Home-Verzeichnissen anderer (echter) Benutzer sein .
    • Verschiedene HTTP(S)- und FTP(s)-Serversoftwares haben (offizielle oder inoffizielle) Konventionen. Beispiel: Home-Verzeichnisse für virtuelle Hosts mit dedizierten Systemkonten können /var/wwwoder sein /var/www/$VHOST.
    • Auf verschiedenen Betriebssystemen finden sich weitere Softwareprogramme, die Home-Verzeichnisse für nicht-persönliche Benutzerkonten verwenden, wie beispielsweise /var/unbound, /var/db/mysql, und /var/db/tor.
    • Verschiedene herkömmliche nicht-persönliche Benutzerkonten haben Home-Verzeichnisse wie /sbin, /var/adm, /var/spool/lpd, /var/spool/mail, /var/spool/news, /var/spool/uucp, usw.
  • Unter OpenBSD verfügt das Systemoperator-Konto über das Home-Verzeichnis /operatorund verschiedene nicht-persönliche Benutzerkonten haben /var/emptyihre Home-Verzeichnisse.

Home-Verzeichnisse müssen nicht in verbleiben /home.

Home-Verzeichnisse können nach der Kontoerstellung mithilfe der Optionen -d( --home) und -m( --move-home) des usermodBefehls auf Linux-Betriebssystemen verschoben werden.

OpenBSD usermodhat die gleichen Optionen. (Machen Sie nicht dasselbe mit dem pw usermodBefehl unter FreeBSD, TrueOS/PC-BSD usw.. Die -m -dKombination hat dort eine leicht andere Bedeutung.)

Home-Verzeichnisse müssen nicht in erstellt werden /home.

Sogar das herkömmliche übergeordnete Verzeichnis, das beim Erstellen von Konten verwendet wird, kann geändert werden und muss nicht geändert werden /home.

Unter Linux-Betriebssystemen und OpenBSD gibt die Option ( ) useradddes Befehls das übergeordnete Verzeichnis an, in dem Home-Verzeichnisse erstellt werden, wenn sie nicht explizit mit ( ) benannt sind. Die-b--base-dir-d--homeStandardDas Basisverzeichnis ist die base_dirVariable in /etc/usermgmt.confbei OpenBSD und die HOMEVariable in /etc/default/useraddbei vielen Linux-Versionen. Ein Systemadministrator kann dies nach Lust und Laune ändern.

Unter FreeBSD, TrueOS/PC-BSD usw. gibt es eine ähnliche -bOption zum pw useraddBefehl und einen Standardwert dafür, der über die homeVariable in geändert werden kann /etc/pw.conf.

Damit fertig werden

Ihr Programm sollte keinerlei Erwartungen hinsichtlich der Speicherorte von Home-Verzeichnissen oder deren übergeordneten Verzeichnissen fest verdrahten.

  • Wenn Sie das Home-Verzeichnis des aktuell angemeldeten Benutzers wissen möchten, verwenden Sie die HOMEUmgebungsvariable. Sie wird von Programmen wie eingerichtet oder wenn das angemeldete Konto auf umgeschaltet wird. Wenn keine Umgebungsvariable vorhanden ist login, ist es eine gültige Designentscheidung, einfach abzubrechen, da die Umgebungsvariablen der Anmeldesitzung vorhanden sein müssen, damit Ihr Programm ausgeführt werden kann. Andernfalls können Sie darauf zurückgreifen, die effektive/reale (je nach Bedarf) UID des Prozesses abzurufen und die Kennwortdatenbank abzufragen.userenvsystemdHOME
  • Wenn Sie das Home-Verzeichnis eines bestimmten Benutzers wissen möchten, fragen Sie die Passwortdatenbank mit den Bibliotheksfunktionen getpwnam()/ getpwnam_r()oder getpwuid()/ ab und ziehen Sie das Feld heraus. (Beachten Sie, dassgetpwiud_r()pw_dirDieses Feld kann NULL sein oder auf eine Zeichenfolge mit der Länge Null zeigen..)
  • Wenn Sie das Home-Verzeichnis eines Benutzers symbolisch kennzeichnen möchten, und zwar unabhängig von seinem tatsächlichen Standort, können Sie die Konvention einer Shell-ähnlichen Tilde-Erweiterung übernehmen: ~JdeBP. Viele Programme tun dies, von vimbis mailx.

Weiterführende Literatur

Antwort2

Wenn Sie den Speicherort des Benutzer-Home-Verzeichnisses an einen anderen Ort ändern möchten, lesen Sie diese Antwort

https://stackoverflow.com/questions/20797819/Befehl zum Ändern des Standard-Home-Verzeichnisses eines Benutzers

verwandte Informationen