web-dev-qa-db-fra.com

Répertoire de base non créé

J'essaie de comprendre l'administration système sur Ubuntu. Donc, à 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 que je rate?

Merci.

78
tchakravarty

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 addusername__. 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.

En règle générale, éloignez-vous de useraddname__, utilisez plutôt addusername__.

84
gniourf_gniourf

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 connecter à nouveau et cela devrait fonctionner.

30
OmPS

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 un dossier personnel après la création du compte?

13
Radu Rădeanu

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

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

6
beanhead

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 comme valeur par défaut Shell:

Sudo useradd -m linda -s /bin/bash

5
p1100i

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.

5
KevinC

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

CREATE_HOME yes

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

3
kavin

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

Vous pouvez résoudre ce problème en suivant les suggestions de @OmPS ou de @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 le répertoire de base de l'utilisateur est différent du nom d'utilisateur que vous avez attribué.

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

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

    CREATE_HOME   yes
    

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

ne grande partie des fonctionnalités auparavant fournies par la suite de mots de passe shadow 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 référer aux fichiers de configuration PAM correspondants.

  • Utilisez pam_mkhomedir module 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
    

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 les valeurs par défaut sane (et ajoute également le répertoire home par lui-même).

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

1
Rinzwind

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
0
Abel Tom