Befehl zum Ändern des Standard-Ausgangsverzeichnisses eines Benutzers

201

Ich möchte wissen, ob es einen einfachen Shell-Befehl gibt, um das Home-Verzeichnis des Benutzers unter Linux / Unix zu ändern (ähnlich wie chsh, das die Standard-Login-Shell eines vorhandenen gültigen Benutzers ändert), ohne die /etc/passwdDatei zu berühren . Vielen Dank

Ibrahim Quraish
quelle
Warum möchten Sie die /etc/passwdDatei nicht berühren ? Du musst!
Basile Starynkevitch
10
stackoverflow.com/questions/20071714/… , sagt, dass usermod -d /home/userxx /home/useryyzum Ändern des Linux-Standard-Anmeldeverzeichnisses in / home / useryy
Ibrahim Quraish
2
Warum fragen Sie nach dem Standard -Ausgangsverzeichnis? Möchten Sie das Home-Verzeichnis eines bestimmten vorhandenen Benutzers oder aller zukünftig hinzugefügten Benutzer ändern? Beachten Sie, dass chshSie nicht die Standard- Login-Shell ändern , sondern nur die Login-Shell eines bestimmten Benutzers ... Um die HOMEeines bestimmten Benutzers zu ändern , bearbeiten Sie einfach/etc/passwd
Basile Starynkevitch

Antworten:

349

Ibrahims Kommentar zur anderen Antwort ist der richtige Weg, um das Home-Verzeichnis eines vorhandenen Benutzers zu ändern.

Ändern Sie das Home-Verzeichnis des Benutzers:

usermod -d /newhome/username username

usermodist der Befehl zum Bearbeiten eines vorhandenen Benutzers.
-d(Abkürzung für --home) ändert das Home-Verzeichnis des Benutzers.

Ändern Sie das Ausgangsverzeichnis des Benutzers. + Verschieben Sie den Inhalt des aktuellen Verzeichnisses des Benutzers:

usermod -m -d /newhome/username username

-m(Abkürzung für --move-home) verschiebt den Inhalt aus dem aktuellen Verzeichnis des Benutzers in das neue Verzeichnis.

STW
quelle
1
Verschieben Sie nicht nur den Inhalt, ich sehe es eher so, als würde der gesamte Ordner verschoben = der ursprüngliche Ordner ( /home/usernamenormalerweise) wird entfernt.
Betlista
2
@STW Ist das eine umkehrbare Aufgabe? Das heißt, wenn ich es nur einmal ausführe und dann die Parameter umlege, wird mein Home-Verzeichnis dann genau so sein, wie es vorher war?
DanGordon
1
@DanGordon Was auch immer Sie in das /newhome/usernameArgument eingeben, ist das Home-Verzeichnis des Benutzers. Sie können es auf das vorherige Ausgangsverzeichnis zurücksetzen, wenn Sie wissen, was es war, aber es gibt keine Option zum Rückgängigmachen.
STW
3
Die Reihenfolge der Optionen für den zweiten Befehl ist falsch. usermod -m -d /newhome/username usernamefunktioniert.
Snozzlebert
@ Dominik danke - es besteht die Möglichkeit, dass es je nach Betriebssystem unterschiedlich ist (Mac vs Linux vs BSD usw.), natürlich könnte es auch einfach falsch sein
STW
28

Ändern Sie unter Linux das Standardbenutzer-Home-Verzeichnis, während Sie einen neuen Benutzer hinzufügen :

Öffnen Sie diese Datei einfach mit einem Texteditor. Geben Sie Folgendes ein:

vi /etc/default/useradd

Das durch die HOME-Variable definierte Standard-Ausgangsverzeichnis lautet: Suchen Sie die folgende Zeile:

HOME=/home

Ersetzen mit:

HOME=/iscsi/user

Speichern und schließen Sie die Datei. Jetzt können Sie Benutzer mit dem regulären Befehl useradd hinzufügen:

# useradd vivek
# passwd vivek

Überprüfen Sie die Benutzerinformationen:

# finger vivek
Maximin
quelle
81
usermod -m -d /path/to/new/login/home/dir user Ändert das vorhandene Benutzer-Home-Verzeichnis in ein neues Login-Verzeichnis, das erstellt wird, falls es noch nicht vorhanden ist. Mit der Option -m wird der Inhalt des aktuellen Home-Verzeichnisses in das neue Home-Verzeichnis verschoben
Ibrahim Quraish
23

Die akzeptierte Antwort ist fehlerhaft, da der Inhalt aus dem ursprünglichen Benutzerordner nicht damit verschoben wird. Ich werde eine weitere Antwort hinzufügen, um dies zu korrigieren:

sudo usermod -d /newhome/username -m username

Sie müssen den Ordner nicht mit dem Benutzernamen erstellen. Dadurch werden Ihre Dateien auch aus dem ursprünglichen Benutzerordner in den Ordner / newhome / username verschoben.

Sukrit Gupta
quelle
4

Falls andere Leser nach Informationen zum adduserBefehl suchen .

Bearbeiten /etc/adduser.conf

einstellen DHOME Variable

rafaelvalle
quelle
0

Fand heraus, dass dies einige Anwendungen bricht, ist der bessere Weg, es zu tun

Zusätzlich zu symlink können Sie in neueren Distributionen und Dateisystemen als root auch bind-mount verwenden:

mkdir /home/username 
mount --bind --verbose /extra-home/username /home/username

Dies ist nützlich, um den Zugriff "über" das Verzeichnis / home auf Unterverzeichnisse über Dämonen zu ermöglichen, die ansonsten so konfiguriert sind, dass kein Pfad durch Symlinks (Apache, FTPD usw.) erstellt wird.

Sie müssen sich natürlich daran erinnern (oder das Init-Skript), um beim Neustart zu binden.

Ein Beispiel für ein Init-Skript in /etc/fstabist

/extra-home/username /home/username none defaults,bind 0 0
Wilken
quelle
-1

usermod -m -d / newhome Benutzername

Ahmed Kay
quelle
4
Bitte erläutern Sie Ihre Antwort ausführlicher.
T. Short