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.

151voto

Rahul Patil Points 2781

Vous pouvez également utiliser mkhomedir_helper

Usage: /sbin/mkhomedir_helper <username> [<umask> [<skeldir>]]

22voto

Benjamin Horstman Points 361

Vous devrez créer le répertoire des utilisateurs manuellement. Cela nécessite trois étapes :

  1. Créer un répertoire en conformité avec /etc/passwd En général, il y a déjà une entrée dans /home/login.
  2. Copie des fichiers initiaux depuis /etc/skel
  3. Et enfin définir les bonnes permissions :

    • mkdir /home/YOU
    • cd /home/YOU
    • cp -r /etc/skel/. .
    • chown -R YOU.YOURGROUP .
    • chmod -R go=u,go-w .
    • chmod go= .

BTW : Je manque toujours le -m pour useradd aussi. Au moins les systèmes basés sur Debian devraient avoir une option adduser que je recommande plutôt que useradd. Si vous avez manqué -m il pourrait également être utile d'envisager de deluser et ensuite recréer l'utilisateur avec les options appropriées.

Edit : Ajouté -r pour copier également des répertoires.

17voto

dotwaffle Points 657

Cela peut sembler une idée stupide, mais si les utilisateurs ne font rien, vous pouvez le faire :

cat /etc/passwd | cut -f 1 -d : >/tmp/users.list

Puis modifiez /tmp/users.list pour qu'il ne contienne que les utilisateurs que vous voulez. Puis faites :

for i in `cat /tmp/users.list`
do
    userdel $i
    useradd -m $i
done

Cependant, de nombreuses distributions basées sur Redhat vous créeront un nouveau répertoire personnel lors de votre première connexion, à condition que l'emplacement du répertoire soit spécifié dans /etc/passwd.

Pour tester cela, faites un "su - " et voyez si cela fait "la bonne chose". Si ce n'est pas le cas, le script ci-dessus fonctionnera très bien, je pense.

13voto

David Rickman Points 3270
mkdir -p /home/john
chown john:john /home/john
usermod -d /home/john john

Cela devrait faire l'affaire, je crois.

11voto

madcapnmckay Points 8477

Vous pouvez utiliser quelque chose comme pam_mkhomedir pam_mkhomedir est un module PAM qui crée automatiquement le répertoire personnel d'un utilisateur lors de la connexion s'il n'existe pas, et le remplit avec les fichiers de /etc/skel (ou tout autre répertoire skel que vous spécifiez).

Cette approche est également très évolutive, car elle continuera à résoudre ce problème si, à l'avenir, vous transférez votre référentiel d'utilisateurs vers un service d'annuaire tel que LDAP.

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