Le répertoire de base n'est pas créé

74

J'essaie de comprendre l'administration système sur Ubuntu. Ainsi, à titre d'exemple, je crée un utilisateur factice en utilisant

sudo useradd -d /home/linda linda

et passwd pour créer le mot de passe. Je vérifie qu'une entrée a été faite en utilisant cat /etc/passwd

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

Cependant, quand je su - linda , je reçois

No directory, logging in with HOME=/

et en effet, aucun répertoire personnel n'a été créé. Qu'est-ce qui me manque?

Merci.

    
posée tchakravarty 10.11.2013 - 11:48
la source

10 réponses

80

man useradd déclare:

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

Notez le low level utility

Pour ajouter un utilisateur, utilisez plutôt adduser . C'est un utilitaire de plus haut niveau.

De plus, en regardant l'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.

Généralement, éloignez vous de useradd , utilisez plutôt adduser .

    
réponse donnée gniourf_gniourf 10.11.2013 - 12:03
la source
29

vous pouvez résoudre ce problème simplement en créant le répertoire home.

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

essayez de vous reconnecter et cela devrait fonctionner.

    
réponse donnée OmPS 10.11.2013 - 12:10
la source
13

Selon man useradd , l'option -d /home/linda ne créera pas le répertoire /home/linda , s'il est manquant. Donc, vous devez le créer manuellement. Pour ce faire, exécutez les commandes suivantes dans le terminal:

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

Voir aussi: Comment créer le dossier de départ de l'utilisateur après le compte création?

    
réponse donnée Radu Rădeanu 10.11.2013 - 13:44
la source
6

Regardez /etc/defaults/useradd si vous voulez changer les valeurs par défaut. Utilisez:

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

    
réponse donnée beanhead 10.01.2015 - 17:32
la source
5

Vous pouvez également modifier /etc/pam.d/common-session pour que le répertoire de base d'un utilisateur soit créé lors de la première connexion. Ajoutez la ligne suivante à ce fichier.

...
session required pam_mkhomedir.so

Ceci est particulièrement utile si votre système est sur un réseau où les utilisateurs sont gérés en externe sur votre ordinateur, par exemple par LDAP.

    
réponse donnée KevinC 13.11.2013 - 21:10
la source
4

Utilisez -m au lieu de -d , le répertoire sera donc créé pour vous:

sudo useradd -m linda

De même, si linda est un utilisateur normal, vous voudrez peut-être qu'elle utilise /bin/bash par défaut shell :

sudo useradd -m linda -s /bin/bash

    
réponse donnée p1100i 21.12.2016 - 12:13
la source
3

Ajoutez l'entrée ci-dessous dans /etc/login.defs et enregistrez:

CREATE_HOME yes

Maintenant, essayez de créer des comptes d’utilisateur. Cela créera le répertoire personnel.

    
réponse donnée kavin 08.06.2015 - 08:43
la source
1

Utilisez 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 vous devez ajouter toutes les options vous-même. Y compris les autorisations et quelques autres choses. adduser le fait en se basant sur des valeurs par défaut sane (et ajoute également le répertoire personnel par lui-même).

Si vous devez utiliser adduser, vous avez probablement besoin de l'option -b avec l'option -d!

    
réponse donnée Rinzwind 10.11.2013 - 12:05
la source
0

Si /home/linda n'est pas présent avant d'ajouter linda en tant qu'utilisateur, vous devrez également ajouter --create-home .

sudo useradd --create-home linda
    
réponse donnée Abel Tom 17.09.2016 - 08:21
la source
0

La raison la plus probable pour laquelle vous n'avez pas créé le répertoire de base est que vous n'avez pas eu CREATE_HOME yes dans /etc/login.defs .

Vous pouvez résoudre ce problème en suivant les suggestions de @OmPS ou @Radu Rădeanu.

Mais autant de façons de surmonter ce problème à l'avenir en utilisant l'une des commandes ci-dessous:

  • Résultat de 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****
    

    Les valeurs par défaut pour adduser sont choisies parmi /etc/adduser.conf si L'option --home n'est pas spécifiée. Notez qu'il copie également le contenu de /etc/skel .

  • Utilisez adduser avec --home

    sudo adduser --home /home/linda
    

Identique à l'option précédente, sauf que vous souhaiterez peut-être cela si les utilisateurs Le répertoire personnel est différent du nom d'utilisateur que vous avez attribué.

  • Spécifiez le répertoire de base pour useradd commande:

    sudo useradd -b /home
    
  • Utilisez login.defs: Modifiez /etc/login.defs et ajoutez la ligne ci-dessous avant de commencer sudo useradd :

    CREATE_HOME   yes
    

Remarque: si vous faites man login.defs , cela indique actuellement

La plupart des fonctionnalités fournies auparavant par la suite de mots de passe fantômes sont désormais gérées par PAM. Ainsi, /etc/login.defs n'est plus utilisé par passwd (1), ou moins par login (1) et su (1). Veuillez vous reporter aux fichiers de configuration PAM correspondants.

  • Utilisez le module pam_mkhomedir PAM: à partir de la page man pam_mkhomedir , ajoutez la ligne ci-dessous à /etc/pam.d/login :

    session  required  pam_mkhomedir.so skel=/etc/skel
    
réponse donnée randominstanceOfLivingThing 17.12.2017 - 19:51
la source

Lire d'autres questions sur les étiquettes