89 votes

créer des répertoires personnels après avoir créé des utilisateurs

J'ai créé des utilisateurs avec :

$ useradd john

et j'ai oublié de spécifier le paramètre -m pour créer le répertoire personnel et faire copier les fichiers du squelette à chaque utilisateur. maintenant, je veux faire cela, et je ne veux pas recréer tous les utilisateurs (il doit y avoir un moyen plus facile). donc, y a-t-il un moyen de créer les répertoires des utilisateurs et de copier les fichiers du squelette ?

J'ai pensé à créer les répertoires, les chowning à l'utilisateur correspondant, copier tous les fichiers du squelette et les chowning à l'utilisateur correspondant. Mais s'il y a une commande comme useradd -m qui ne crée pas l'utilisateur à nouveau, mais crée les répertoires, ce serait mieux.

4voto

Gary Lindsay Points 31

Dans mon cas, le volume d'accueil a été corrompu et j'ai décidé de le reconstruire à partir de zéro car il n'y a pas beaucoup de données impliquées mais je veux garder les informations de connexion des utilisateurs, donc j'ai recréé les répertoires d'accueil manuellement avec ce script :

#!/bin/bash
cat /etc/passwd | while IFS=: read n x i g c d r
do
  # my system has uid started at 1000, but has nfsnobody at 65534:
  if [[ "$i" -ge 1000 && "$i" -le 65000 && ! -x "$d" ]]
  then
    cp -av /etc/skel "$d"
    chown -R "$i:$g" "$d"
    # may needed in SELinux system:
    restorecon -R "$d"
    # add your chmod as your need:
    chmod -R o-rw "$d"
  fi
done

2voto

Jenny D Points 26978

Si vous modifiez /etc/login.defs pour contenir

CREATE_HOME yes

alors les répertoires personnels seront automatiquement créés pour tous les futurs utilisateurs, à moins que vous n'indiquiez au système no pour le faire.

Une autre option consiste à utiliser PAM pour les connexions, et à utiliser le module pam_mkhomedir pour créer automatiquement le répertoire d'origine lors de la première connexion.

2voto

Connectez-vous avec l'utilisateur john et écrivez depuis un Shell :

xdg-user-dirs-update

C'est ça ! N'utilisez pas sudo ou su, vous n'avez pas besoin d'un accès root pour créer certains répertoires. Depuis un compte root, vous pouvez utiliser :

sudo -u john xdg-user-dirs-update

De cette façon, vous exécuterez la commande en tant que john, ce qui peut être utile si vous avez fait l'erreur avec plus d'un utilisateur.

0voto

bigmattyh Points 9167

Ma première étape après avoir fait un useradd est de su - <user> .

Crée les répertoires personnels, copie les squelettes, etc - du moins sur la machine CentOS 4 sur laquelle je le fais le plus souvent.

0voto

mblsha Points 305

C'est exactement ce que le mkhomedir_helper $USERNAME fait.

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