it-swarm.com.de

Basisverzeichnis wird nicht erstellt

Ich versuche die Systemadministration unter Ubuntu zu verstehen. Als Beispiel erstelle ich einen Dummy-Benutzer mit

_Sudo useradd -d /home/linda linda
_

und passwd, um das Passwort zu erstellen. Ich überprüfe, ob eine Eingabe gemacht wurde mit _cat /etc/passwd_

_linda:x:1004:1004::/home/linda:/bin/sh
_

Wenn ich jedoch _su - linda_, bekomme ich

_No directory, logging in with HOME=/
_

in der Tat wurde kein Basisverzeichnis erstellt. Was vermisse ich?

Vielen Dank.

79
tchakravarty

man useradd besagt:

useradd is a low level utility for adding users. On Debian,
administrators should usually use adduser(8) instead.

Beachte den low level utility

Verwenden Sie stattdessen adduser, um einen Benutzer hinzuzufügen. Es ist ein höheres Dienstprogramm.


Betrachten Sie außerdem die Option -d:

   -d, --home HOME_DIR
       The new user will be created using HOME_DIR as the value for the
       user's login directory. The default is to append the LOGIN name to
       BASE_DIR and use that as the login directory name. The directory
       HOME_DIR does not have to exist but will not be created if it is
       missing.

The directory will not be created if it is missing.

Im Allgemeinen von useradd fernhalten, stattdessen adduser verwenden.

87
gniourf_gniourf

sie können dies einfach beheben, indem Sie das Ausgangsverzeichnis erstellen.

mkdir /home/linda
chown linda:linda /home/linda

versuchen Sie erneut, sich anzumelden. Dies sollte funktionieren.

30
OmPS

Gemäß man useradd erstellt die Option -d /home/linda nicht das Verzeichnis /home/linda, wenn dies fehlt. Sie müssen es also manuell erstellen. Führen Sie dazu die folgenden Befehle im Terminal aus:

Sudo -i                            #to get root privileges
mkdir /home/linda                  #to create the directory /home/linda
cp -rT /etc/skel /home/linda         #to populate /home/linda with default files and folders
chown -R linda:linda /home/linda   #to change the owner of /home/linda to user linda

Siehe auch: Wie erstelle ich einen Benutzer-Home-Ordner nach der Kontoerstellung?

13
Radu Rădeanu

Schauen Sie sich /etc/defaults/useradd an, wenn Sie die Standardeinstellungen ändern möchten. Verwenden:

useradd -m -d /home/joe -s /bin/bash.

7
beanhead

Verwenden Sie -m anstelle von -d, damit das Verzeichnis für Sie erstellt wird:

Sudo useradd -m linda

Wenn linda ein normaler Benutzer ist, möchten Sie möglicherweise, dass sie /bin/bash als Standard Shell verwendet:

Sudo useradd -m linda -s /bin/bash

5
p1100i

Sie können /etc/pam.d/common-session auch so ändern, dass das Basisverzeichnis eines Benutzers beim ersten Anmelden erstellt wird. Fügen Sie der Datei die folgende Zeile hinzu.

...
session required pam_mkhomedir.so

Dies ist besonders nützlich, wenn sich Ihr System in einem Netzwerk befindet, in dem die Benutzer außerhalb Ihres Computers verwaltet werden, beispielsweise über LDAP.

5
KevinC

Fügen Sie den folgenden Eintrag in /etc/login.defs ein und speichern Sie:

CREATE_HOME yes

Versuchen Sie nun, Benutzerkonten zu erstellen. Es wird das Home-Verzeichnis erstellt.

3
kavin

Der wahrscheinlichste Grund, warum Sie das Basisverzeichnis nicht erstellt haben, ist, dass Sie den CREATE_HOME yes nicht in /etc/login.defs hatten.

Sie können dies beheben, indem Sie den Vorschlägen von @OmPS oder @Radu Rădeanu folgen.

Aber so viele Möglichkeiten, dieses Problem in Zukunft mit einem der folgenden Befehle zu lösen:

  • Ergebnis von Sudo adduser linda

    Adding user 'linda'
    Adding new group 'linda' (1001) ...
    Adding new user 'linda' (1001) with group 'linda' ...
    Creating home directory '/home/linda' ...
    Copying files from '/etc/skel' ...
    ****Password confirmation****
    ****Name Prompt****
    

    Die Standardeinstellungen für adduser werden aus /etc/adduser.conf ausgewählt, wenn die Option --home nicht angegeben ist. Beachten Sie, dass auch der Inhalt von /etc/skel kopiert wird.

  • Benutze adduser mit --home

    Sudo adduser --home /home/linda
    

Wie die vorherige Option, außer dass Sie dies wünschen, wenn sich das Ausgangsverzeichnis des Benutzers von dem von Ihnen zugewiesenen Benutzernamen unterscheidet.

  • Geben Sie das Basisverzeichnis für den Befehl useradd an:

    Sudo useradd -b /home
    
  • Verwenden Sie login.defs: Ändern Sie /etc/login.defs und fügen Sie die folgende Zeile hinzu, bevor Sie Sudo useradd ausführen:

    CREATE_HOME   yes
    

Hinweis: Wenn Sie man login.defs ausführen, wird derzeit angezeigt

Ein Großteil der Funktionen, die früher von der Shadow Password Suite bereitgestellt wurden, werden jetzt von PAM verwaltet. Daher wird /etc/login.defs nicht mehr von passwd (1) oder weniger von login (1) verwendet.) , und su (1). Bitte lesen Sie stattdessen die entsprechenden PAM-Konfigurationsdateien.

  • Verwenden Sie das PAM-Modul pam_mkhomedir: Fügen Sie auf der Seite man pam_mkhomedir die folgende Zeile zu /etc/pam.d/login hinzu:

    session  required  pam_mkhomedir.so skel=/etc/skel
    

Verwenden Sie adduser.

DESCRIPTION

 adduser  and  addgroup  add users and groups to the system according to
   command    line    options    and    configuration    information    in
   /etc/adduser.conf.   They  are  friendlier  front ends to the low level
   tools like useradd, groupadd and usermod programs, by default  choosing
   Debian  policy conformant UID and GID values, creating a home directory
   with skeletal configuration, running a custom script,  and  other  fea‐
   tures.  adduser and addgroup can be run in one of five modes:

useradd Sie müssen alle Optionen selbst hinzufügen. Einschließlich Berechtigungen und einiger anderer Dinge .adduser erledigt dies basierend auf vernünftigen Standardeinstellungen (und fügt auch das Ausgangsverzeichnis selbst hinzu).

Wenn Sie adduser verwenden müssen, benötigen Sie wahrscheinlich die Option -b zusammen mit der Option -d!

1
Rinzwind

Wenn /home/linda nicht vorhanden ist, bevor Sie Linda als Benutzer hinzufügen, müssen Sie auch --create-home hinzufügen.

Sudo useradd --create-home linda
0
Abel Tom