Frage Erstellen Sie das Standard-Home-Verzeichnis für den vorhandenen Benutzer im Terminal


Wie mache ich das? Ich habe einen Benutzer ohne ein Home-Verzeichnis erstellt und möchte jetzt eines erstellen. Nicht nur ein Ordner namens new_user, ich möchte das Standard-Home-Verzeichnis mit all seinen Ordnern und versteckten Dateien usw.


118
2017-08-22 18:54


Ursprung


Wenn sich der Benutzer anmeldet, werden diese Unterverzeichnisse (Dokumente, Downloads usw.) automatisch erstellt. Ich suche zwar nach Möglichkeiten, seinen Login über das Terminal zu "simulieren". - Alaa Ali
@Alaa su new_user : D - Radu Rădeanu
@ RaduRădeanu ja ich habe das schon versucht, auch versucht sudo -i -u new_user aber es funktioniert nicht. Ich denke, wir müssen "ein X-Login simulieren" ... ich weiß nicht, wie ich das machen soll. - Alaa Ali
Beim Anmelden werden keine Unterverzeichnisse im Home erstellt. - Jo Rijo


Antworten:


Verwenden Sie Folgendes (als root oder mit sudo, falls nicht root):

mkhomedir_helper username

Damit dies funktioniert, Ordner /home/username muss nicht existieren.

Bei X-bezogenen Ordnern (Desktop, Downloads usw.) müssen Sie sich in einer Grafikumgebung anmelden. Sie werden bei der ersten Anmeldung automatisch generiert.


177
2017-11-05 19:48



Einfach und nützlich. Auf diese Weise können Sie auch sicher sein, dass das neu erstellte Home-Verzeichnis mit Ihren Systemrichtlinien übereinstimmt, ohne dass Sie sie jemals kennen oder manuell basteln. - gerlos
Das ist die richtige Antwort, zumindest funktionierte es bei Ubuntu 14.04.2 LTS. - Christian Wilkie
Ich musste zuerst meinen Benutzernamen in / etc / passwd haben, bevor dies für mich funktionierte. - user79878
Einfach .. funktioniert einfach (tm). Sollte die akzeptierte Antwort sein - Newtopian


Die Unterverzeichnisse (Dokumente, Downloads usw.) werden automatisch erstellt, wenn sich der Benutzer zum ersten Mal über GNOME anmeldet, vorausgesetzt, das Basisverzeichnis wird mit den richtigen Berechtigungen erstellt. Hier ist eine Demonstration:

Alaa @ aa-lu: ~ $ sudo useradd testuser
Alaa @ aa-lu: ~ $ sudo passwd testuser
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
passwd: Passwort wurde erfolgreich aktualisiert
Alaa @ aa-lu: ~ $ sudo ls -l / home
insgesamt 20
drwxr-xr-x 55 alaa alaa 4096 22. August 22:00 alaa
drwx ------ 2 Wurzel root 16384 Jun 5 09:46 lost + found
Alaa @ aa-lu: ~ $ sudo mkdir / home / testuser
Alaa @ aa-lu: ~ $ sudo chown testinguser: testbenutzer / home / testbenutzer
Alaa @ aa-lu: ~ $ ls -l / Zuhause
insgesamt 24
drwxr-xr-x 55 alaa alaa 4096 22. August 22:00 alaa
drwx ------ 2 Wurzel root 16384 Jun 5 09:46 lost + found
drwxr-xr-x 2 testinguser testbenutzer 4096 23. August 10:03 testuser
Alaa @ aa-lu: ~ $ ls -l / home / testbenutzer /
insgesamt 0
Alaa @ aa-lu: ~ $

Sie können überprüfen, ob das Home-Verzeichnis des Benutzers korrekt eingestellt ist, indem Sie den Eintrag in überprüfen /etc/passwd. Sie sollten standardmäßig das Home-Verzeichnis auf gesetzt sehen /home/testinguser:

Alaa @ aa-lu: ~ $ grep testuser / etc / passwd
Testbenutzer: x: 1001: 1001 ::/ home / Testbenutzer: / bin / sh

Wenn Sie das Home-Verzeichnis nicht sehen /home/testinguser Dort müssen Sie den Befehl ausführen sudo usermod -d /home/testinguser testinguser um es zu aktualisieren, obwohl Sie diesen Befehl nicht benötigen sollten, weil er standardmäßig eingestellt sein sollte (gemäß useraddManpages).

Ich habe mich dann von meinem Konto ausgeloggt und wieder eingeloggt testinguser, und hier sind die Unterverzeichnisse automatisch erstellt:

Alaa @ aa-lu: ~ $ ls -l / home / testbenutzer /
insgesamt 36
drwxr-xr-x 2 testinguser testbenutzer 4096 Aug 23 10:05 Desktop
drwxr-xr-x 2 testuser testuser 4096 23. August 10:05 Dokumente
drwxr-xr-x 2 testinguser testuser 4096 23. August 10:05 Downloads
drwxr-xr-x 2 testuser testuser 4096 23. August 10:05 Musik
drwxr-xr-x 2 testuser testuser 4096 23. August 10:07 Bilder
drwxr-xr-x 2 testuser testuser 4096 Aug 23 10:05 Öffentlich
drwxr-xr-x 2 testuser testuser 4096 23. August 10:05 Vorlagen
drwxr-xr-x 2 testinguser testuser 4096 23. August 10:05 Videos

Ich musste den Inhalt nicht kopieren /etc/skel.

Wenn möglich, können Sie diese Schritte ausführen und einen neuen Benutzer erstellen? Sobald Sie fertig sind, können Sie diesen neuen Benutzer durch entfernen sudo deluser testinguser && sudo rm -r /home/testinguser.

Wenn all das bei dir nicht funktioniert hat, dann vermute ich, dass es ein Fehler ist.


31
2017-08-23 06:22



In einigen Situationen, wenn Sie verwenden useradd, das Standard-Home-Verzeichnis für den neuen Benutzer wird nicht automatisch auf festgelegt /home/username. Also, das erste muss man sicher sein. - Radu Rădeanu
Kannst du mir ein Beispiel für diese Situationen geben =)? Von den Manpages von useradd: "useradd wird das Basisverzeichnis verwenden, das in der HOME-Variablen angegeben ist /etc/default/useradd, oder /home Standardmäßig ". Die Variable HOME in /etc/default/useradd ist nicht standardmäßig definiert, daher wird useradd immer verwenden /home. Wie auch immer, ich werde meine Antwort bearbeiten und den Teil verschieben, um zu überprüfen /etc/passwd oben. - Alaa Ali
Ein Beispiel Hier. Ein anderes Beispiel: Sie löschen einen Benutzer, aber Sie haben seine Verzeichnisse und Dateien nicht gelöscht; und dann fügen Sie erneut einen Benutzer mit demselben Namen hinzu. Und es gibt viele, und es gibt keine Bugs :) - Radu Rădeanu
Wenn Sie nicht haben /bin/sh in der Benutzerzeile /etc/passwd Sie müssen eine Shell für diesen Benutzer hinzufügen, zum Beispiel die Standard-Shell mit usermod -s /bin/sh testuser - rubo77


UPDATE: Die Lösung ist kaputt und funktioniert auch nicht für mich.

Wenn Sie das Home-Verzeichnis des Benutzers erstellen möchten, wenn es nicht existiert, führen Sie das useradd Befehl mit dem -m Flagge. Dies kopiert alle Dateien von der /etc/skel Verzeichnis.

useradd -m username

Möglicherweise müssen Sie Einstellungen für Ihr System konfigurieren. Laut der man-Seite:

  -m, --create-home
    Create the user's home directory if it does not exist. The files and directories
    contained in the skeleton directory (which can be defined with the -k option)
    will be copied to the home directory.

    By default, if this option is not specified and CREATE_HOME is not enabled, no
    home directories are created.

und zeigt weiter an:

CONFIGURATION

   The following configuration variables in /etc/login.defs change the behavior
   of this tool:

   CREATE_HOME (boolean)
       Indicate if a home directory should be created by default for new users.

12
2017-08-22 19:54



Dies scheint zu versuchen, einen neuen Benutzer zu erstellen, weil es mir sagt, dass "Benutzer" neuer Benutzer "bereits existiert". - Jo Rijo
Ich habe auch das getestet -m Wenn Sie einen neuen Benutzer erstellen, melden Sie dies, und es hat nicht funktioniert. Es kopiert nur die Skelettdateien. - Alaa Ali
@Jo: Und wie ist das inkorrekt, da laut dem ursprünglichen Post der Benutzer schon existiert. - crafter
Diese Antwort löst das Problem nicht. Kopieren /etc/skel erstellt die Unterverzeichnisse im Home-Verzeichnis nicht. Ebenfalls, useradd -m wird beim Erstellen eines neuen Benutzers verwendet, nicht wenn der Benutzer bereits hinzugefügt wurde. - Alaa Ali
Ich habe den Post aktualisiert, also setze CREATE_HOME in der Konfigurationsdatei login.defs auf yes. - crafter


Wenn Sie den neuen Benutzer mit erstellt haben adduser Befehl müssen Sie kein Ausgangsverzeichnis für den neuen Benutzer erstellen. Ein Home-Verzeichnis mit dem Namen des Benutzers in /home Verzeichnis mit den folgenden Unterverzeichnissen: Desktop, Downloads, Dokumente, Musik, Bilder, Videos (und andere) für den neuen Benutzer werden automatisch erstellt.

Wenn Sie den neuen Benutzer mit erstellt haben useradd Führen Sie dann die folgenden Befehle im Terminal aus:

sudo -i     #enter your user password when you are asked
gedit /etc/passwd

bearbeiten /etc/passwd Datei als root (dies ist der wichtigste Schritt). Finde die Zeile mit dem Namen des neuen Benutzers und setze das Standard-Home-Verzeichnis für ihn so:

new_username:x:1001:1001::/home/new_username:/bin/sh

In dieser Zeile können Sie auch einen echten Namen für den neuen Benutzer hinzufügen oder die Standard-Shell festlegen. Etwas wie das:

new_username:x:1001:1001:Real New Username,,,:/home/new_username:/bin/bash

Sei vorsichtig, mache keine weiteren Änderungen.

Nachdem Sie die Datei gespeichert haben, führen Sie die folgenden Befehle aus, bevor Sie das root-Konto verlassen:

mkdir /home/new_username                                      #to create the directory /home/new_username
cp /etc/skel/* /home/new_username                             #to copy copy files from the /home/new_username
chown -R new_username:new_username /home/new_username   #to change the owner of /home/new_username to the new user

Nach diesen Schritten wird der Benutzerordner für den neuen Benutzer automatisch nach der ersten Anmeldung ausgefüllt.

Siehe auch: Wie mache ich den Benutzer-Home-Ordner nach der Erstellung des Accounts?


4
2017-08-22 19:18



Soweit ich mich erinnere, wird der Home-Ordner nicht automatisch erstellt, Sie müssen ihn manuell erstellen und den Benutzereintrag in aktualisieren /etc/passwd (wenn es nicht schon da ist). Sobald sich der Benutzer anmeldet, wird der Basisordner automatisch mit diesen Unterverzeichnissen gefüllt. All dies wird jedoch berücksichtigt, wenn jemand einen Benutzer hinzufügt adduser, Anstatt von useradd. - Alaa Ali
@Alaa habe ich gerade vor ein paar Tagen getestet und ich habe es benutzt adduser: der private Ordner ist automatisch erstellt. Tatsächlich wird der Benutzerordner nach der ersten Anmeldung automatisch ausgefüllt. - Radu Rădeanu
Das scheint nichts zu tun. Vielleicht probiere ich das Bash-Skript aus der anderen Frage, aber konnte ich nicht einfach einen Ordner in / home / new_user erstellen und dann den Inhalt von / etc / skel dorthin kopieren? ist das was das Bash-Skript tut? - Jo Rijo
@JoRijo Ich habe meine Antwort bearbeitet. - Radu Rădeanu
@ RaduRădeanu meinst du nicht cp /etc/skel/* /home/new_username? Gibt es auch einen Grund, warum Sie zwei aufeinanderfolgende verwenden chown Befehle? - Alaa Ali


Alles, was Sie wirklich brauchen, ist der Home-Ordner, damit es funktioniert. Als Wurzel

cd /home
cd mkdir username
chown username username
chgrp username username

Wenn Sie sich das erste Mal anmelden, sollten Sie alle notwendigen Dateien erstellen, die wie folgt aussehen:

drwxr-xr-x 16 fotanus fotanus 4096 Jun  4 17:46 .
drwxr-xr-x  9 root    root    4096 Jun  4 17:43 ..
drwx------ 11 fotanus fotanus 4096 Jun  4 17:46 .cache
drwx------ 13 fotanus fotanus 4096 Jun  4 17:46 .config
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Desktop
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Documents
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Downloads
drwx------  3 fotanus fotanus 4096 Jun  4 17:46 .gconf
drwxrwxr-x  2 fotanus fotanus 4096 Jun  4 17:46 .gstreamer-0.10
-rw-------  1 fotanus fotanus  334 Jun  4 17:45 .ICEauthority
drwxr-xr-x  3 fotanus fotanus 4096 Jun  4 17:45 .local
drwx------  4 fotanus fotanus 4096 Jun  4 17:45 .mozilla
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Music
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Pictures
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Public
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Templates
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Videos
-rw-------  1 fotanus fotanus   55 Jun  4 17:45 .Xauthority
-rw-------  1 fotanus fotanus  711 Jun  4 17:45 .xsession-errors

3
2018-06-04 20:49