Question Répertoire de base non créé


J'essaie de comprendre l'administration du système sur Ubuntu. Ainsi, par 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.


72
2017-11-10 10:48


origine




Réponses:


man useradd États:

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

Noter la low level utility

Pour ajouter un utilisateur, utilisez adduser au lieu. C'est un utilitaire de plus haut niveau.


De plus, en regardant le -d option:

   -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 rester loin de useradd, utilisation adduser au lieu.


79
2017-11-10 11:03



Dans la défense du PO, quand j'ai lu "Sur Debian", je pensais que cela signifiait sur Debian par opposition aux distributions Ubuntu. Je suis conscient que Ubuntu est construit sur Debian mais pensait qu'une distinction était faite. - Keith Bennett
j'ai utilisé adduser mais toujours le répertoire de base créé ne contient qu'un fichier examples.desktop et rien d'autre. Comment puis-je obtenir Ubuntu pour créer les dossiers par défaut Desktop, Downloads, etc.? (Je suis connecté via ssh) - mcExchange
Salut, désolé réponse tardive et seulement deviner, mais je pense que ces dossiers sont créés automatiquement lors de la première connexion GUI. Juste pensé que les gens pourraient encore atterrir ici;) - derHugo
adduser ne créera pas le répertoire non plus si quelqu'un a changé CREATE_HOME dans /etc/login.defs en "non". Vous pouvez remplacer cela par le -m drapeau. - Noumenon


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

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

Essayez de vous reconnecter et cela devrait fonctionner.


28
2017-11-10 11:10





Selon man useradd, -d /home/linda l'option ne créera pas le répertoire /home/linda, si cela manque 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 également: Comment créer le dossier personnel de l'utilisateur après la création du compte?


12
2017-11-10 12:44





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

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


6
2018-01-10 16:32



"Selon man useradd, l'option -d / home / linda ne créera pas le répertoire / home / linda" alors non, ce n'est pas une solution. - astrojuanlu


Vous pouvez également modifier /etc/pam.d/common-session pour que le répertoire personnel 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 par votre machine, par exemple par LDAP.


4
2017-11-13 20:10



Bon conseil, merci - tchakravarty


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

sudo useradd -m linda

Également si linda est un utilisateur normal, vous voudrez peut-être l'utiliser /bin/bash par défaut shell:

sudo useradd -m linda -s /bin/bash


4
2017-12-21 11:13





Ajouter l'entrée ci-dessous dans /etc/login.defs Et enregistrer:

CREATE_HOME yes

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


3
2018-06-08 06:43



Cela a fonctionné pour moi. J'avais besoin d'un script de base pour ajouter / gérer à distance des utilisateurs de différentes versions de Linux. Après ce changement, mon code produit les mêmes résultats sur tous les serveurs. Merci. - sdkks


Utilisation 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 d'autres choses.adduser fait cela sur la base de valeurs par défaut sane (et ajoute également le répertoire personnel par lui-même).

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


1
2017-11-10 11:05





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
2017-09-17 06:21





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

Vous pouvez résoudre ce problème en suivant ce que @OmPS ou @Radu Rădeanu ont suggéré.

Mais plusieurs façons de résoudre 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 --home l'option n'est pas spécifiée. Notez qu'il copie également le /etc/skel Contenu.

  • Utilisez adduser avec --home

    sudo adduser --home /home/linda
    

Identique à l'option précédente, sauf que vous pouvez le vouloir 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 commander:

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

    CREATE_HOME   yes
    

Note: si vous le faites man login.defs, il dit actuellement

Une grande partie des fonctionnalités fournies par la suite de mots de passe shadow est désormais gérée par PAM. Ainsi, /etc/login.defs n'est plus utilisé par passwd (1), ou moins utilisé par login (1) et su (1). Veuillez vous reporter aux fichiers de configuration PAM correspondants.

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

    session  required  pam_mkhomedir.so skel=/etc/skel
    

0
2017-12-17 18:51