J'essaie de créer un nouvel utilisateur dans Ubuntu 14.04 LTS à partir de la ligne de commande bash. J'utilise les commandes suivantes:
Sudo useradd -c "Samwise the Brave" sam
Sudo passwd sam
Enter new UNIX password: hello-1234
Retype new UNIX password: hello-1234
passwd: password updated successfully
Après avoir créé ce nouvel utilisateur, j'ai rencontré 3 problèmes:
Je ne parviens pas à me connecter à Ubuntu avec l'utilisateur sam. Chaque fois que je me connecte, je suis renvoyé à l'écran de connexion.
Lorsque j'examine le fichier /etc/passwd
, je constate qu'il n'y a pas de shells par défaut définis pour l'utilisateur sam:
cat /etc/passwd | grep sam
sam:x:1003:1003:Samwise the Brave:/home/sam:
Le dossier personnel de Sam n'a pas été créé, c.-à-d. /home/sam
n'existe pas.
Des indices sur ce qui pourrait causer tous ces problèmes?
Il convient de noter ici que lorsque je crée un utilisateur à l'aide du Unity Control Center, ces problèmes ne se produisent pas. Mais j'aimerais pouvoir utiliser la ligne de commande car j'ai des dizaines d'utilisateurs à créer.
Tout d'abord, notez qu'il vaut mieux utiliser adduser et non useradd.
Revenons maintenant à votre commande:
Vous devez exécuter la commande de la manière suivante:
Sudo useradd -m -c "Samwise the Brave" sam -s /bin/bash
man useradd
-s, --Shell SHELL
The name of the user's login Shell. The default is to leave this
field blank, which causes the system to select the default login
Shell specified by the Shell variable in /etc/default/useradd, or
an empty string by default.
-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.
By default, if this option is not specified and CREATE_HOME is not
enabled, no home directories are created.
Donc, vous manquez d'utiliser -s
pour ajouter votre login Shell et le -m
pour créer votre maison.
newusers
name__. Cela simplifiera votre tâche.man newusers
DESCRIPTION
The newusers command reads a file of user name and clear-text password
pairs and uses this information to update a group of existing users or
to create new users. Each line is in the same format as the standard
password file (see passwd(5)) with the exceptions explained below:
pw_name:pw_passwd:pw_uid:pw_gid:pw_gecos:pw_dir:pw_Shell
Voici quelques tutoriels sur la commande newusers
name__:
Créer un utilisateur
Créer le répertoire de base de l'utilisateur
Définir le shell de connexion
useradd -m -d /home/username username -s /bin/bash
Supprimer l'utilisateur
Répertoire de base de l'utilisateur Deleter
userdel -r username
Bien qu'il vous manque des drapeaux et que les autres réponses ne soient pas nécessairement fausses, envisagez de lancer adduser si vous voulez qu'il soit plus complet à l'avenir. C'est une version plus jolie de useradd. Cela créera un répertoire personnel par défaut, contrairement à useradd. Notez également que lorsqu'il demande une tonne de choses, il les stocke en ligne sur le fichier/etc/passwd et vous n'avez pas à les remplir.
Merci tout le monde. Avec vos réponses, j'ai pu résoudre le problème en utilisant les lignes de commande suivantes.
Sudo useradd -c "Samwise the Brave" -m -s /bin/bash sam
echo -e "hello-1234\nhello-1234" | passwd sam
Le mot de passe est défini avec passwd
, de sorte qu'il est déjà chiffré (sinon, "hello-1234" apparaîtrait non chiffré dans/etc/passwd).
Il vous manque des indicateurs dans la commande useradd. '-m' pour créer un répertoire utilisateur, '-s/bin/bash' pour ajouter le shell bash. La valeur par défaut consiste à ne pas créer de répertoire utilisateur et à affecter le shell par défaut. Mon système a fait la même chose lorsque je l'ai testé, il semble donc qu'ubbuntu 14.04 utilise vierge comme shell par défaut. Vous ne pouvez pas vous connecter car vous n'avez pas de shell.
De la page de manuel Ubuntu pour useradd
-s, --Shell SHELL
The name of the user´s login Shell. The default is to leave this
field blank, which causes the system to select the default login
Shell.
Comment changez-vous le shell par défaut pour TOUS LES UTILISATEURS en bash? Question 335961