Ausgangsverzeichnis wird nicht erstellt

80

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

sudo useradd -d /home/linda linda

und passwdum das Passwort zu erstellen. Ich überprüfe, ob ein Eintrag mit vorgenommen wurdecat /etc/passwd

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

Wenn su - lindaich jedoch bekomme, bekomme ich

No directory, logging in with HOME=/

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

Vielen Dank.

tchakravarty
quelle

Antworten:

87

man useradd Zustände:

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

Beachten Sie das low level utility

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


Im Übrigen bietet sich folgende -dOption an:

   -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 fernhalten useradd, adduserstattdessen verwenden.

gniourf_gniourf
quelle
2
Als ich in der Verteidigung des OP "Über Debian" las, dachte ich, dass dies für Debian im Gegensatz zu Ubuntu-Distributionen bedeutete. Ich bin mir bewusst, dass Ubuntu auf Debian basiert, dachte aber, dass eine Unterscheidung getroffen wurde.
Keith Bennett
1
Ich habe adduseraber trotzdem das erstellte Homeverzeichnis verwendet , das nur eine Datei enthält examples.desktopund sonst nichts. Wie kann ich Ubuntu dazu bringen, die Standardordner Desktop, Downloads usw. zu erstellen? (Ich bin über ssh angemeldet)
mcExchange
Hallo, sorry, verspätete Antwort und nur Vermutung, aber ich denke, diese Ordner werden automatisch beim ersten GUI-Login erstellt.
Ich
addusererstellt das Verzeichnis auch nicht, wenn jemand CREATE_HOME in /etc/login.defs auf "no" geändert hat. Sie können dies mit der -mFlagge überschreiben .
Noumenon
31

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.

OmPS
quelle
13

Gemäß mit man useradd, -d /home/lindaOption wird das Verzeichnis nicht erstellen /home/linda, wenn diese 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: So legen Sie den Benutzer-Basisordner nach der Kontoerstellung an

Radu Rădeanu
quelle
7

Überprüfen /etc/defaults/useraddSie, ob Sie die Standardeinstellungen ändern möchten. Verwenden:

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

Bohnenkopf
quelle
"Laut man useradd wird mit der Option -d / home / linda das Verzeichnis / home / linda nicht erstellt", also nein, dies ist keine Lösung.
Astrojuanlu
Laut der useradd-Manpage ist dies das Ziel der -m- -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. useradd will create the home directory unless CREATE_HOME in /etc/login.defs is set to no.Markierung : @astrojuanlu
Myles
5

Sie können es auch so ändern /etc/pam.d/common-session, 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.

KevinC
quelle
5

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

sudo useradd -m linda

Wenn Sie lindaein normaler Benutzer sind, möchten Sie ihn möglicherweise auch /bin/bashals Standardbenutzer verwenden shell:

sudo useradd -m linda -s /bin/bash

p1100i
quelle
3

Fügen Sie den folgenden Eintrag hinzu /etc/login.defsund speichern Sie:

CREATE_HOME yes

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

kavin
quelle
Es hat bei mir funktioniert. Ich brauchte ein grundlegendes Skript, mit dem Benutzer auf verschiedenen Linux-Versionen remote hinzugefügt / verwaltet werden können. Nach dieser Änderung führt mein Code auf allen Servern zu denselben Ergebnissen. Vielen Dank.
SDKKS
1

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:

useraddSie müssen alle Optionen selbst hinzufügen. Einschließlich Berechtigungen und einige andere Dinge. adduserTut dies basierend auf vernünftigen Standardeinstellungen (und fügt auch das Heimatverzeichnis von selbst hinzu).

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

Rinzwind
quelle
1

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

sudo useradd --create-home linda
Abel Tom
quelle
1

Der wahrscheinlichste Grund , warum Sie nicht das Home - Verzeichnis erstellt haben, weil man nicht das hat CREATE_HOME yesin /etc/login.defs.

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 ausgewählt, /etc/adduser.confwenn die --homeOption nicht angegeben ist. Beachten Sie, dass auch der /etc/skelInhalt kopiert wird .

  • Verwenden Sie adduser mit --home

    sudo adduser --home /home/linda

Entspricht der vorherigen Option, mit der Ausnahme, dass Sie dies wünschen, wenn sich das Ausgangsverzeichnis des Benutzers von dem von Ihnen zugewiesenen Benutzernamen unterscheidet.

  • Geben Sie das zu useraddbefehlende Basisverzeichnis an :

    sudo useradd -b /home
  • Verwenden Sie login.defs: Ändern /etc/login.defsund fügen Sie die folgende Zeile hinzu, bevor Sie dies tun sudo useradd:

    CREATE_HOME   yes

Hinweis: Wenn Sie dies tun man login.defs, wird derzeit angezeigt

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

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

    session  required  pam_mkhomedir.so skel=/etc/skel
randominstanceOfLivingThing
quelle