Ist es möglich, das Home-Verzeichnis neu zu definieren? ZB zu /ext1/username
anstatt /home/username
, dh ~
zu einem anderen Verzeichnis zu erweitern (im Gegensatz zum Ändern des tatsächlichen Ausgangsverzeichnisses, in dem sich die Ausgangsdateien der Benutzer befinden).
(Diese Frage ist größtenteils akademisch, da dies eine schlechte Praxis zu sein scheint. Ich habe auch keine andere Wahl in Bezug auf die Verwendung csh
, obwohl ich die Top 10 gelesen habe.)
~
auf etwas anderes als das eigentliche Basisverzeichnis erweitern ?~
auf ein anderes Verzeichnis erweitern (nicht, wenn ich Ihre Alternative richtig verstehe, ändern, wo sich die Home-Verzeichnisse aller Benutzer befinden sollen). Mir war nicht klar, dass dies~
als Kurzform von interpretiert wurde$HOME
, wie @michas in seiner Antwort beschrieben hat.Antworten:
Die Tilde
~
wird von Ihrer Shell interpretiert. Ihre Muschel wird~
als Kurzform von interpretiert$HOME
.Versuchen Sie es
(echo ~; HOME=foo; echo ~)
. Dies sollte zuerst Ihr echtes Home-Verzeichnis und danach "foo" ausgeben, wie Sie dies eingestellt haben$HOME
.Der Standardwert von
$HOME
stammt aus Ihrer Systemkonfiguration. Verwenden Siegetent passwd
diese Option, um alle bekannten Benutzer und ihre Home-Verzeichnisse aufzulisten. Abhängig von Ihrer Systemkonfiguration können diese Einträge von einem/etc/passwd
beliebigen Remote-Verzeichnisdienst stammen.Wenn Sie Ihr Home-Verzeichnis nur vorübergehend neu definieren möchten, legen Sie einfach ein anderes fest
$HOME
.Wenn Sie es dauerhaft ändern möchten, müssen Sie den passwd-Eintrag ändern, z
/etc/passwd
. B. durch manuelles Bearbeiten .quelle
csh
die relevante Variable$home
(Kleinbuchstaben) ist, und Sie können nichtsetenv HOME /ext1/acheong
- Sie können nurset home=/ext1/acheong
, und das hat bei mir funktioniert.)usermod -d
vipw
(oder eine andere GUI, die Ihr Betriebssystem bereitstellt), anstatt sie/etc/passwd
direkt zu bearbeiten . Bei der direkten Bearbeitung besteht das Risiko, dass die Datei beschädigt wird, und es kann schwierig sein, sie wiederherzustellen.Der Wert, für den verwendet
~
wird, wird aus dem Wert bestimmt, den Sie aus der Verwaltungsdatenbank (getent passwd
) (normalerweise in der/etc/passwd
Datei) für das dort definierte Basisverzeichnis jedes Benutzers erhalten.Die sechste Spalte in dieser Datei enthält den Wert, der verwendet wird, wenn jemand etwas eingibt
cd ~
.nsswitch
Mit dem folgenden Befehl können Sie sehen, was ein System für das Basisverzeichnis des Benutzers verwenden würde
getent passwd
:Die "Datenbank", die diese bereitstellt, wird über den in definierten System-Resolver gesteuert
/etc/nsswitch.conf
.Dateien oben bedeuten
/etc/passwd
, aber die "Datenbank" könnte zum Beispiel von LDAP, NIS oder anderen Standorten über das Netzwerk stammen.Umzug / Neudefinition?
Die Durchführung dieser Operation ist nach dem Erstellen der Konten etwas kompliziert. Wenn Sie Konten von Grund auf neu erstellen, ist es trivial, den Speicherort des Basisverzeichnisses eines Benutzers neu zu definieren. Wenn Sie den
useradd
Befehl ausführen, können Sie den Speicherort angeben, der für das Basisverzeichnis eines Benutzers verwendet werden soll.Beispiel
Auszug aus der Manpage
Für bestehende Konten?
Dies wird eher zu einem chirurgischen Eingriff, da der Pfad des Basisverzeichnisses eines Benutzers häufig statisch in Konfigurationsdateien eingeschlossen wird, was ihn schwieriger macht.
Beispiel
Diese müssen entweder repariert werden oder Sie müssen einen Link
/home/sam
zum neuen Speicherort angeben/ext1/sam
.Verschieben, wenn "Datenbank" nicht ist
/etc/passwd
Wenn das System die Basisverzeichnisse von LDAP, NIS usw. erhält, müssen Sie die Verlagerung in diesen Systemen durchführen und das Verschieben der Dateien von
/home/sam
nach koordinieren/ext1/sam
.Verweise
quelle
Wenn der Grund darin besteht, Benutzer auf mehrere Dateisysteme zu verteilen, können Sie auch die verwenden
automounter
. Und Sie können sogar ein anderes "Basis" -Verzeichnis für Ihre Benutzer einrichten.quelle