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.
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
name__. 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 useradd
name__, utilisez plutôt adduser
name__.
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.
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?
Regardez /etc/defaults/useradd
si vous voulez changer les valeurs par défaut. Utilisation:
useradd -m -d /home/joe -s /bin/bash
.
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
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.
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.
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!
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