224 votes

Comment puis-je créer rétrospectivement un répertoire de base par défaut pour un utilisateur existant dans le terminal ?

J'ai créé un utilisateur sans répertoire de base et je veux maintenant lui créer un répertoire de base. Pas seulement un dossier appelé /home/new-user mais un répertoire personnel par défaut complet avec tous les dossiers normaux et les fichiers cachés, etc.

Comment puis-je faire ça ?

321voto

kavadias Points 3329

Utilisez ce qui suit (en tant que root, ou avec sudo si vous n'êtes pas root) :

mkhomedir_helper username

Pour que cela fonctionne, le dossier /home/username ne doit pas exister.

Pour les dossiers liés à X (Bureau, Téléchargements, etc.), vous devrez vous connecter dans un environnement graphique ; ils seront automatiquement générés lors de votre première connexion.

35voto

Alaa Ali Points 29075

Les sous-répertoires (Documents, Téléchargements, etc...) sont automatiquement créés lorsque l'utilisateur se connecte pour la première fois via GNOME, à condition que le répertoire personnel soit créé avec les bonnes permissions. Voici une démonstration :

alaa@aa-lu:~$ sudo useradd testinguser alaa@aa-lu:~$ sudo passwd testinguser Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully alaa@aa-lu:~$ sudo ls -l /home total 20 drwxr-xr-x 55 alaa alaa 4096 Aug 22 22:00 alaa drwx------ 2 root root 16384 Jun 5 09:46 lost+found alaa@aa-lu:~$ sudo mkdir /home/testinguser alaa@aa-lu:~$ sudo chown testinguser:testinguser /home/testinguser alaa@aa-lu:~$ ls -l /home total 24 drwxr-xr-x 55 alaa alaa 4096 Aug 22 22:00 alaa drwx------ 2 root root 16384 Jun 5 09:46 lost+found drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:03 testinguser alaa@aa-lu:~$ ls -l /home/testinguser/ total 0 alaa@aa-lu:~$

Vous pouvez vérifier que le répertoire d'origine de l'utilisateur est correctement défini en vérifiant l'entrée dans le fichier /etc/passwd . Vous devriez, par défaut, voir le répertoire d'accueil défini comme suit /home/testinguser :

alaa@aa-lu:~$ grep testinguser /etc/passwd testinguser:x:1001:1001::/home/testinguser:/bin/sh

Si vous ne voyez pas le répertoire personnel /home/testinguser là, vous devrez exécuter la commande sudo usermod -d /home/testinguser testinguser pour le mettre à jour, bien que vous ne devriez pas avoir besoin d'utiliser cette commande parce qu'elle devrait être définie par défaut (selon la directive useradd ).

Je me suis ensuite déconnecté de mon compte, et je me suis reconnecté avec testinguser et voici les sous-répertoires créés automatiquement :

alaa@aa-lu:~$ ls -l /home/testinguser/ total 36 drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Desktop drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Documents drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Downloads drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Music drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:07 Pictures drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Public drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Templates drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Videos

Je n'ai pas eu besoin de copier le contenu de /etc/skel .

Si possible, pouvez-vous essayer de suivre ces étapes, en créant un autre nouvel utilisateur ? Une fois que vous avez terminé, vous pouvez supprimer ce nouvel utilisateur en sudo deluser testinguser && sudo rm -r /home/testinguser .

Si tout cela n'a pas fonctionné avec vous, alors je suppose qu'il s'agit d'un bug.

17voto

crafter Points 619

MISE À JOUR : la solution est cassée et ne fonctionne pas pour moi aussi.

Si vous voulez créer le répertoire personnel de l'utilisateur s'il n'existe pas, exécutez la commande useradd avec la commande -m drapeau. Ceci copiera tous les fichiers de la section /etc/skel répertoire.

useradd -m username

Vous devrez peut-être configurer les paramètres de votre système. Selon la page de manuel :

  -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.

et indique en outre :

CONFIGURATION

   The following configuration variables in /etc/login.defs change the behavior
   of this tool:

   CREATE_HOME (boolean)
       Indicate if a home directory should be created by default for new users.

7voto

Radu Rădeanu Points 156862

Si vous avez créé le nouvel utilisateur avec adduser vous n'avez pas besoin de créer un répertoire personnel pour le nouvel utilisateur. Un répertoire d'accueil nommé avec le nom de l'utilisateur dans la commande /home avec les sous-répertoires suivants : Bureau, Téléchargements, Documents, Musique, Images, Vidéos (et autres), pour le nouvel utilisateur sera créé automatiquement.

Si vous avez créé le nouvel utilisateur avec useradd puis exécutez les commandes suivantes dans le terminal :

sudo -i     #enter your user password when you are asked
gedit /etc/passwd

pour éditer /etc/passwd en tant que root (c'est l'étape la plus importante). Trouvez la ligne avec le nom du nouvel utilisateur et définissez le répertoire de base par défaut pour lui comme ceci :

new_username:x:1001:1001::/home/new_username:/bin/sh

À cette ligne, vous pouvez également ajouter un nom réel pour le nouvel utilisateur, ou définir le Shell par défaut. Quelque chose comme ceci :

new_username:x:1001:1001:Real New Username,,,:/home/new_username:/bin/bash

Faites attention, ne faites pas d'autres changements.

Après avoir enregistré le fichier, avant de sortir du compte root, exécutez les commandes suivantes :

mkdir /home/new_username                                #to create the directory /home/new_username
cp -r /etc/skel/. /home/new_username                    #to copy skeleton files to /home/new_username
chown -R new_username:new_username /home/new_username   #to change the owner of /home/new_username to the new user

Après toutes ces étapes, le dossier d'accueil du nouvel utilisateur sera automatiquement rempli après la première connexion.

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

4voto

fotanus Points 249

Tout ce dont vous avez besoin, c'est du dossier "home" pour le faire fonctionner. En tant que root,

cd /home
cd mkdir username
chown username username
chgrp username username

Se connecter avec la première fois devrait créer tous les fichiers nécessaires, cela semble être ceux :

drwxr-xr-x 16 fotanus fotanus 4096 Jun  4 17:46 .
drwxr-xr-x  9 root    root    4096 Jun  4 17:43 ..
drwx------ 11 fotanus fotanus 4096 Jun  4 17:46 .cache
drwx------ 13 fotanus fotanus 4096 Jun  4 17:46 .config
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Desktop
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Documents
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Downloads
drwx------  3 fotanus fotanus 4096 Jun  4 17:46 .gconf
drwxrwxr-x  2 fotanus fotanus 4096 Jun  4 17:46 .gstreamer-0.10
-rw-------  1 fotanus fotanus  334 Jun  4 17:45 .ICEauthority
drwxr-xr-x  3 fotanus fotanus 4096 Jun  4 17:45 .local
drwx------  4 fotanus fotanus 4096 Jun  4 17:45 .mozilla
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Music
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Pictures
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Public
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Templates
drwxr-xr-x  2 fotanus fotanus 4096 Jun  4 17:45 Videos
-rw-------  1 fotanus fotanus   55 Jun  4 17:45 .Xauthority
-rw-------  1 fotanus fotanus  711 Jun  4 17:45 .xsession-errors

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