Comment créer un dossier personnel d'utilisateur après la création du compte? [dupliquer]

55

J'ai créé un nouvel utilisateur avec useradd name et j'ai 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 de tout mettre en cohérence avec le nouvel utilisateur.

Les alias ne fonctionnent pas, tels que chown , et je viens d'avoir un ll à l'invite de commande, au lieu de $ . De plus, l’utilisation de la molette de défilement élimine des ordures sur la ligne de commande: (

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

    
posée mortona42 18.06.2012 - 21:12
la source

6 réponses

55

Vous avez $ à l'invite de commande car vous utilisez le shell sh .

Le shell avec [email protected] est basé sur le bash shell.

Vous devez changer le shell par défaut pour le nouvel utilisateur créé via: usermod -s /bin/bash .

Utilisez à nouveau usermod pour ajouter le répertoire de base 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écutez mkhomedir_helper <username> pour créer le répertoire de base. mkhomedir_helper va créer le répertoire de base de l'utilisateur et copier le contenu dans /etc/skel également.

Si l'utilisateur dispose déjà d'un répertoire de base spécifié dans /etc/passwd :

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

    
réponse donnée iridescent 17.12.2013 - 17:05
la source
6

Voici un script rapide bash. Exécuter en tant que root avec sudo . Cela prend n'importe quel nombre d'arguments, chacun étant un nom d'utilisateur ayant besoin d'un répertoire personnel. Cela suppose quelques hypothèses: que vos répertoires de base sont dans /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 à partir de gist .

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

exit_code=0

for user in "[email protected]"; 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
    
réponse donnée Zenexer 20.06.2013 - 09:33
la source
4

Pour modifier la valeur par défaut du répertoire de base du nouvel utilisateur, vous pouvez donner

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

commande. Voir useradd -D [options] dans

.
man useradd 
    
réponse donnée numand 18.06.2012 - 21:31
la source
4

Examinez la commande xdg-user-dirs-update . Il créera les répertoires X Windows par défaut: 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. Je devais le faire pour l'un de mes comptes d'utilisateur.

Je vous recommande de lire la page de manuel avant d'exécuter la commande xdg-user-dirs-update . 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.

    
réponse donnée user483623 26.12.2015 - 20:29
la source
4

Si vous avez oublié d'utiliser -d -m , la meilleure et rapide option consiste à exécuter

sudo mkhomedir_helper username

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

    
réponse donnée David 13.10.2016 - 14:46
la source
1

Je viens de rencontrer ceci (Ubuntu 12.04) et je l'ai résolu en créant un utilisateur temporaire, en copiant le répertoire des utilisateurs, en le chowns et en supprimant finalement l'utilisateur temporaire.

sudo adduser temp
sudo cp -r /home/temp /home/name
sudo chown -R name.name /home/name
sudo deluser temp
    
réponse donnée rancidfishbreath 08.05.2013 - 21:02
la source

Lire d'autres questions sur les étiquettes