Répertoire de base non créé


80

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 passwdcréer le mot de passe. Je vérifie qu’une entrée a été faite en utilisantcat /etc/passwd

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

Cependant, quand su - lindaje 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.

Réponses:


87

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 adduserplutôt. C'est un utilitaire de plus haut niveau.


De plus, en regardant l' -doption:

   -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 garder loin de useradd, utilisez à la adduserplace.


2
Dans la défense du PO, quand j'ai lu "Sur Debian", j'ai pensé que cela voulait dire sur Debian par opposition aux distributions Ubuntu. Je suis conscient qu'Ubuntu est basé sur Debian mais je pensais qu'une distinction était faite.
Keith Bennett

1
J'ai utilisé addusermais le répertoire personnel créé ne contient toujours qu'un fichier examples.desktopet rien d'autre. Comment puis-je obliger Ubuntu à créer les dossiers par défaut Bureau, Téléchargements, etc.? (Je suis connecté via ssh)
mcExchange

Bonjour, désolé, réponse tardive et devinettes mais je pense que ces dossiers sont créés automatiquement lors de la première connexion à l’interface graphique. Je pensais que les gens pourraient encore atterrir ici;)
derHugo

adduserne créera pas le répertoire non plus si quelqu'un a changé CREATE_HOME dans /etc/login.defs en "non". Vous pouvez remplacer ceci avec le -mdrapeau.
Noumenon

31

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.


13

Selon man useradd, l' -d /home/lindaoption ne créera pas le répertoire /home/lindas'il 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 aussi: Comment créer un dossier de départ pour l'utilisateur après la création du compte?


7

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

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


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

Selon la page de manuel useradd, c'est le but de l'option -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.@astrojuanlu
Myles

5

Vous pouvez également modifier /etc/pam.d/common-sessionpour faire en sorte 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

Utilisez à la -mplace de -d, donc le répertoire sera créé pour vous:

sudo useradd -m linda

De plus, si lindac'est un utilisateur normal, vous voudrez peut-être qu'elle utilise /bin/bashpar défaut shell:

sudo useradd -m linda -s /bin/bash


3

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

CREATE_HOME yes

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


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

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:

useraddvous devez ajouter toutes les options vous-même. Y compris les autorisations et quelques autres choses. adduserEst-ce que cela est basé sur des 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

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

sudo useradd --create-home linda

1

La raison la plus probable pour laquelle vous n'avez pas créé le répertoire de base est parce que vous n'aviez pas le fichier CREATE_HOME yesin /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 à partir de /etc/adduser.confsi l' --homeoption n'est pas spécifiée. Notez qu'il copie également le /etc/skelcontenu.

  • Utilisez adduser avec --home

    sudo adduser --home /home/linda

Identique à l'option précédente, sauf que vous souhaiterez peut-être utiliser cette option si le répertoire de base des utilisateurs est différent du nom d'utilisateur que vous avez attribué.

  • Spécifiez le répertoire de base à useraddcommander:

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

    CREATE_HOME   yes

Remarque: si vous le faites man login.defs, il est actuellement indiqué

Une 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 plutôt vous reporter aux fichiers de configuration PAM correspondants.

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

    session  required  pam_mkhomedir.so skel=/etc/skel
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.