Question Créer un répertoire personnel par défaut pour l'utilisateur existant dans le terminal


Comment puis-je faire cela? J'ai créé un utilisateur sans répertoire personnel et maintenant je veux en créer un. Pas seulement un dossier nommé new_user, je veux le répertoire personnel par défaut avec tous ses dossiers et fichiers cachés, etc.


118
2017-08-22 18:54


origine


Lorsque l'utilisateur se connecte, ces sous-répertoires (Documents, Téléchargements, etc.) seront automatiquement créés. Bien que je cherche des moyens de "simuler" sa connexion via le terminal. - Alaa Ali
@Alaa su new_user :RÉ - Radu Rădeanu
@ RaduRădeanu ouais j'ai déjà essayé ça, aussi essayé sudo -i -u new_user mais ça ne marche pas. Je pense que nous devons "simuler un login X" ... ne sais pas comment faire. - Alaa Ali
la connexion ne crée pas les sous-répertoires à la maison. - Jo Rijo


Réponses:


Utilisez les éléments suivants (en tant que root ou avec sudo si pas root):

mkhomedir_helper username

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

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


177
2017-11-05 19:48



Simple et utile. De cette façon, vous pouvez également être sûr que le répertoire personnel nouvellement créé est conforme aux règles de votre système, sans jamais les connaître ou modifier manuellement. - gerlos
C'est la bonne réponse, du moins cela a fonctionné pour moi sur Ubuntu 14.04.2 LTS. - Christian Wilkie
J'ai dû d'abord avoir mon nom d'utilisateur dans / etc / passwd avant que cela fonctionne pour moi. - user79878
Simple .. juste fonctionne (tm). Devrait être la réponse acceptée - Newtopian


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 de base soit créé avec les autorisations appropriées. Voici une démonstration:

alaa @ aa-lu: ~ $ sudo useradd testinguser
alaa @ aa-lu: ~ $ sudo passwd testinguser
Entrez le nouveau mot de passe UNIX:
Retapez le nouveau mot de passe UNIX:
passwd: mot de passe mis à jour avec succès
alaa @ aa-lu: ~ $ sudo ls -l / home
total 20
drwxr-xr-x 55 alaa alaa 4096 aoû 22 22:00 alaa
drwx ------ 2 racine racine 16384 juin 5 09:46 perdu + trouvé
alaa @ aa-lu: ~ $ sudo mkdir / home / testeruser
alaa @ aa-lu: ~ $ sudo chown testinguser: testinguser / home / testinguser
alaa @ aa-lu: ~ $ ls -l / home
total 24
drwxr-xr-x 55 alaa alaa 4096 aoû 22 22:00 alaa
drwx ------ 2 racine racine 16384 juin 5 09:46 perdu + trouvé
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 de base de l'utilisateur est correctement défini en cochant l'entrée dans /etc/passwd. Vous devriez, par défaut, voir le répertoire home défini sur /home/testinguser:

alaa @ aa-lu: ~ $ grep testinguser / etc / passwd
testinguser: x: 1001: 1001 ::/ home / testeruser: / 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 deviez pas utiliser cette commande car elle devrait être définie par défaut (selon useraddpages de manuel).

Je me suis alors déconnecté de mon compte et 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 Bureau
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Documents
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Téléchargements
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Musique
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:07 Photos
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Public
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Modèles
drwxr-xr-x 2 testinguser testinguser 4096 Aug 23 10:05 Vidéos

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

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

Si tout cela ne marchait pas avec vous, alors je suppose que c'est un bogue.


31
2017-08-23 06:22



Dans certaines situations lorsque vous utilisez useradd, le répertoire de base par défaut du nouvel utilisateur n'est pas automatiquement défini sur /home/username. Donc, il faut d'abord en être sûr. - Radu Rădeanu
Pouvez-vous me donner un exemple de ces situations =)? Des pages de manuel de useradd: "useradd utilisera le répertoire de base spécifié par la variable HOME dans /etc/default/useradd, ou /home par défaut ". La variable HOME dans /etc/default/useradd n'est pas défini par défaut, donc useradd utilisera toujours /home. En tout cas, je vais modifier ma réponse et déplacer la pièce à vérifier /etc/passwd en haut - Alaa Ali
Un exemple ici. Autre exemple: vous supprimez un utilisateur, mais vous n'avez pas supprimé ses répertoires et fichiers; et puis vous ajoutez à nouveau un utilisateur avec le même nom. Et il y en a beaucoup, et il n'y a pas de bugs :) - Radu Rădeanu
Si vous n'avez pas /bin/sh dans la ligne d'utilisateur /etc/passwd vous devez ajouter un shell pour cet utilisateur, par exemple le shell par défaut avec usermod -s /bin/sh testuser - rubo77


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 le useradd commande avec le -m drapeau. Cela copiera tous les fichiers du /etc/skel annuaire.

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.

12
2017-08-22 19:54



cela semble essayer de créer un nouvel utilisateur, car il me dit que "l'utilisateur" nouvel utilisateur "existe déjà". - Jo Rijo
J'ai aussi testé le -m flag lors de la création d'un nouvel utilisateur de toute façon, et cela n'a pas fonctionné; il ne fait que copier les fichiers squelette. - Alaa Ali
@Jo: Et comment est-ce incorrect, car selon le post initial, l'utilisateur existe déjà. - crafter
Cette réponse ne résout pas le problème. Copier /etc/skel ne crée pas les sous-répertoires dans le répertoire de base. Aussi, useradd -m est utilisé lors de la création d'un nouvel utilisateur, pas lorsque l'utilisateur est déjà ajouté. - Alaa Ali
J'ai mis à jour la publication, définissez donc CREATE_HOME sur yes dans le fichier de configuration login.defs. - crafter


Si vous créez le nouvel utilisateur avec adduser commande, vous n'avez pas besoin de créer un répertoire personnel pour le nouvel utilisateur. Un répertoire personnel nommé avec le nom de l'utilisateur dans /home répertoire, 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 créez le nouvel utilisateur avec useradd commande, puis exécutez les commandes suivantes dans le terminal:

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

éditer /etc/passwd fichier 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 suit:

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

Sur cette ligne, vous pouvez également ajouter un vrai nom pour le nouvel utilisateur ou définir le shell par défaut. Quelque chose comme ça:

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

Faites attention, ne faites aucun autre changement.

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 /etc/skel/* /home/new_username                             #to copy copy files from the /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 tout, le dossier personnel du nouvel utilisateur sera automatiquement rempli après la première connexion.

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


4
2017-08-22 19:18



Si je me souviens bien, le dossier de base n'est pas créé automatiquement, vous devez le créer manuellement et mettre à jour l'entrée de l'utilisateur dans /etc/passwd (si ce n'est pas déjà là). Une fois que l'utilisateur se connecte, le dossier de base sera automatiquement rempli avec ces sous-répertoires. Cependant, tout cela est pris en charge si quelqu'un ajoute un utilisateur en utilisant adduser, au lieu de useradd. - Alaa Ali
@Alaa je viens de tester il y a quelques jours et j'ai utilisé adduser: le dossier d'accueil est automatiquement créé. Et en effet, le dossier personnel sera automatiquement rempli après la première connexion. - Radu Rădeanu
Cela semble ne rien faire. Je vais essayer le script bash de l'autre question, mais ne pourrais-je pas simplement créer un dossier dans / home / appelé new_user, puis y copier le contenu de / etc / skel? est ce que fait ce script bash? - Jo Rijo
@JoRijo J'ai édité ma réponse. - Radu Rădeanu
@ RaduRădeanu tu ne veux pas dire cp /etc/skel/* /home/new_username? En outre, existe-t-il une raison pour laquelle vous utilisez deux chown des commandes? - Alaa Ali


Tout ce dont vous avez besoin est vraiment le dossier personnel pour le faire fonctionner. Comme racine,

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

La première connexion devrait créer tous les fichiers nécessaires, ce qui semble être:

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

3
2018-06-04 20:49