80 votes

Comment créer le dossier personnel de l'utilisateur après la création du compte ?

J'ai créé un nouvel utilisateur avec useradd name et a oublié d'utiliser -d -m pour créer leur répertoire personnel. J'ai essayé d'en créer un, de copier le contenu de /etc/skel, et chown de tout transmettre au nouvel utilisateur.

Les alias ne fonctionnent pas, comme ll et j'ai juste un $ à l'invite de commande, au lieu de name@server ~$ . De plus, l'utilisation de la molette de défilement fait apparaître des déchets sur la ligne de commande :(

Comment puis-je résoudre ce problème, ou est-il plus facile de supprimer l'utilisateur et de recommencer ?

77voto

Seb K Points 71

Vous avez $ à l'invite de commande car vous utilisez l'option sh Shell.

Le Shell avec name@server est basé sur le bash Shell.

Vous devez changer le Shell par défaut pour l'utilisateur nouvellement créé via : usermod -s /bin/bash .

Utilisation de usermod à nouveau pour ajouter le répertoire personnel de l'utilisateur s'il n'était pas présent. usermod -d /home/username

Si l'utilisateur n'a pas de répertoire de base spécifié dans /etc/passwd :

Exécuter mkhomedir_helper <username> pour créer le répertoire personnel. mkhomedir_helper créera le répertoire personnel de l'utilisateur et copiera le contenu dans /etc/skel également.

Si l'utilisateur a déjà un répertoire personnel spécifié dans /etc/passwd :

Par exemple, via usermod -d /some/directory , mkhomedir_helper ne fonctionnera pas. Le seul moyen est de créer manuellement le répertoire personnel de l'utilisateur concerné.

24voto

David Points 431

Si vous avez oublié d'utiliser -d -m la meilleure et la plus rapide des options est d'exécuter

sudo mkhomedir_helper username

avec crée le répertoire personnel comme si vous aviez fourni les options manquantes.

6voto

xap4o Points 585

Voici un rapide bash script. Exécutez-le en tant que root avec sudo . Il prend un nombre quelconque d'arguments, chacun étant un nom d'utilisateur ayant besoin d'un répertoire personnel. Cette commande suppose que vos répertoires personnels sont dans le répertoire /home et que votre répertoire squelette est /etc/skel . Ce sont les valeurs par défaut sur Ubuntu. Vous pouvez télécharger ou wget / curl ce script de Gist .

#!/bin/bash
if [ $# -lt 1 ]; then
    echo "Syntax: $_ USER[ USER[ ...]]" >&2
    exit 1
fi

exit_code=0

for user in "$@"; do
    home="/home/$user"
    cp -R /etc/skel "$home" && echo $'\e[32m'"Copied skeleton to: $home"$'\e[m' || ( exit_code=$?; echo $'\e[31m'"Failed to create: $home"$'\e[m' ) >&2
    chown -R "$user:$user" "$home" && echo $'\e[32m'"Set owner on: $home"$'\e[m' || ( exit_code=$?; echo $'\e[31m'"Failed to set owner on: $home"$'\e[m' ) >&2
done

exit $exit_code

5voto

flq Points 11937

Pour modifier la valeur par défaut du répertoire d'origine du nouvel utilisateur, vous pouvez donner les instructions suivantes

sudo useradd -D --base-dir /home/new_user

commandement. Voir useradd -D [options] de

man useradd

5voto

user483623 Points 51

Jetez un coup d'œil à la xdg-user-dirs-update commande. Elle va créer les répertoires par défaut de X Windows : Bureau, Téléchargement, etc...

Un utilisateur sans les répertoires par défaut peut exécuter xdg-user-dirs-update --force pour créer les répertoires. J'ai dû faire cela pour l'un de mes comptes utilisateurs.

Je recommande de lire la page de manuel avant d'exécuter la commande xdg-user-dirs-update commande. La page de manuel de xdg-user-dir ajoute quelques détails supplémentaires.

La "spécification du répertoire de base XDG" fait partie des spécifications de freedesktop.org.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X