Accueil > Astuces OSXFAQ > Mercredi - Ajouter un nouvel utilisateur

Mercredi - Ajouter un nouvel utilisateur

Ce script ajoute un nouveau compte utilisateur à OS X. Indiquez le nom et prénom de l’utilisateur, l’ID désiré, et s’il doit être normal (staff) ou administrateur.

L’ID est fourni car une création normale de compte sous OS X ne permet pas cette option. Le nom raccourci de l’utilisateur sera égal à son nom. Un répertoire ‘home’ sera créé et ainsi l’utilisateur sera un propriétaire complet de compte OS X et pourra se connecter de manière normal.

Le script demandera un mot de passe pour l’utilisateur.

Pas mal de vérifications sont effectuées comme vous pouvez le voir dans les commentaires du script.

Allez chercher le script ici.

NOTE: CE SCRIPT A ETE ECRIT POUR PANTHER (10.3)

#!/bin/bash

# Créer un utilisateur. # Prend le nom de l'utilisateur (=shortname), prénom, uid et staff|admin # et crée : # un nouvel utilisateur dans passwd NetInfo # un nouveau répertoire départ /Users/firstname
usage () { echo "Créer un nouvel utilisateur staff ou admin" echo "Utilisation : ${0##*/} prénom nom uid staff|admin" if [ "$*" != "" ]; then echo " Erreur : $*"; fi exit 1 }

# Le script doit être lancé par root # if [ "$USER" != "root" ]; then echo "Doit être lancé par root." exit 1 fi

# Vérification des paramètres # if [ $# -ne 4 ]; then usage fi
first=$1; last=$2; uid=$3; accnt=$4
# Vérifie que les utilisateurs n'ont pas déjà un répertoire départ if [ -e /Users/$first ]; then usage "L'utilisateur $first existe déjà dans /Users/$first" fi
# Recherche dans NetInfo l'utilisateur donné - il ne doit pas exister str="$(nireport . /users name | grep -w $first)" if [ ! -z "$str" ]; then usage "L'utilisateur $first existe déjà (mais n'a pas de répertoire départ)" fi
# Recherche dans NetInfo le uid donné - il ne doit pas exister str="$(nireport . /users uid | grep -w $uid)" if [ ! -z "$str" ]; then usage "L'ID utilisateur $uid existe déjà" fi
# Recherche dans NetInfo le groupe donné - il ne doit pas exister str="$(nireport . /groups name | grep -w $first)" if [ ! -z "$str" ]; then usage "Le Groupe $first existe déjà" fi
# Recherche dans NetInfo le gid donné - il ne doit pas exister str="$(nireport . /groups gid | grep -w $uid)" if [ ! -z "$str" ]; then usage "Le Groupe ID $uid existe déjà" fi
# Vérifie que staff ou admin a été passé if [ $4 != staff ] && [ $4 != admin ]; then usage "Donnez au compte le type 'staff' ou 'admin'" fi

# Ajoute le nouvel utilisateur à NetInfo # # Ajoute l'utilisateur et les propriétés essentielles dscl . create /users/$first dscl . create /users/$first name $first dscl . create /users/$first passwd "*" dscl . create /users/$first hint "" dscl . create /users/$first uid $uid dscl . create /users/$first gid $uid dscl . create /users/$first home /Users/$first dscl . create /users/$first shell /bin/bash dscl . create /users/$first realname "$first $last" dscl . create /users/$first picture "/Library/User Pictures/Fun/Smack.tif" dscl . create /users/$first sharedDir Public
# ajoute quelques propriétés supplémentaires dans NetInfo dscl . create /users/$first _shadow_passwd "" dscl . create /users/$first _writers_hint $first dscl . create /users/$first _writers_real_name $first
# ajoute le nouveau groupe dscl . create /groups/$first dscl . create /groups/$first name $first dscl . create /groups/$first passwd "*" dscl . create /groups/$first gid $uid
echo "Nouvel utilisateur et groupe $first créés"

# Ajoute les utilisateurs admin au groupe admin # if [ $4 = admin ]; then dscl . merge /groups/admin users $first dscl . merge /groups/appserverusr users $first dscl . merge /groups/appserveradm users $first echo "$first ajouté aux groupes admin, appserverusr, appserveradm" fi

# Crée le répertoire départ, le remplit à partir d'un modèle et positionne le propriétaire # mkdir /Users/$first if [ ! -d /Users/$first ]; then echo "Impossible de créer le répertoire /Users/$first" exit fi
ditto -rsrc /System/Library/User Template/English.lproj/ /Users/$first chown -R ${first}:$first /Users/$first echo "Répertoire départ /Users/$first créé et remplit"

# Donne un mot de passe à l'utilisateur # echo "Un mot de passe pour ce compte doit être donné, il est actuellement à blanc" passwd $first
exit 0

Parlez de cette astuce dans le Learning Center forum (en anglais sur osxfaq.com)


Si vous souhaitez en apprendre plus sur Mac OS X Unix visitez le Learning Center
 cliquez ici.

  • Pour les débutants : Le Tutoriel Mac OS X Unix
  • Pour plus d’informations sur des sujets spécifiques : Mac OS X Advanced Unix
  • Pour des réponses à des problèmes communs : Mac OS X How To

Thierry Astuces OSXFAQ

  1. Pas encore de commentaire
  1. Pas encore de trackbacks
Vous devez être identifié pour poster un commentaire