web-dev-qa-db-fra.com

Comment créer des comptes d'utilisateurs à partir du terminal dans Mac OS X 10.5?

Je voudrais pouvoir créer de nouveaux utilisateurs dans Mac OS X 10.5 à distance après m'être installé sur la machine. Comment puis-je faire cela?

87
JR Lawhorne

Utilisez la commande dscl. Cet exemple créerait l'utilisateur "luser", comme ceci:

dscl . -create /Users/luser
dscl . -create /Users/luser UserShell /bin/bash
dscl . -create /Users/luser RealName "Lucius Q. User"
dscl . -create /Users/luser UniqueID "1010"
dscl . -create /Users/luser PrimaryGroupID 80
dscl . -create /Users/luser NFSHomeDirectory /Users/luser

Vous pouvez ensuite utiliser passwd pour modifier le mot de passe de l'utilisateur, ou utiliser:

dscl . -passwd /Users/luser password

Vous devrez créer/Users/luser pour le répertoire personnel de l'utilisateur et changer de propriétaire afin que l'utilisateur puisse y accéder, et assurez-vous que le UniqueID est en fait unique.

Cette ligne ajoutera l'utilisateur au groupe de l'administrateur:

dscl . -append /Groups/admin GroupMembership luser
80
palmer

(Cette réponse doit être considérée comme un addendum pour remplir quelques blancs dans la procédure de Palmer)

Pour choisir un UniqueID inutilisé pour votre nouvel utilisateur, vous pouvez utiliser:

maxid=$(dscl . -list /Users UniqueID | awk 'BEGIN { max = 500; } { if ($2 > max) max = $2; } END { print max + 1; }')
newid=$((maxid+1))

... puis utilisez la séquence de commandes dscl que palmer a donnée pour créer le compte, puis créez le répertoire personnel du nouvel utilisateur avec:

cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser
if [[ "$(sw_vers -productVersion)" != 10.[0-5].* ]]; then
    # Set ACL on Drop Box in 10.6 and later
    chmod +a "user:luser allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" /Users/luser/Public/Drop\ Box
fi

(il existe une commande createhomedir, mais elle n'a pas fonctionné lorsque je l'ai testée.)

20
Gordon Davisson

Si vous avez un groupe d'utilisateurs à créer, il est possible de créer un fichier texte structuré et de le transmettre à dsimport pour faire le travail.

Le guide Administration de la ligne de commande d'Apple contient un chapitre entier sur les utilisateurs et les groupes.

8

Une autre façon de choisir un ID utilisateur unique avant de créer un compte consiste simplement à parcourir la liste et à vérifier que celui que vous souhaitez utiliser n'est pas là:

 Sudo dscl . list /Users uid
 Sudo dscl . list groups gid

Pratique si vous devez utiliser un certain ID

7
Kevin McDonagh

J'ai tiré parti des différentes réponses ici pour trouver ce que je pense être un bon script pour créer des comptes d'utilisateurs. Certes, ce n'est pas conçu pour exécuter une commande à la fois à partir de ssh; il est également conçu pour être un script exécuté lors de la compilation d'une image d'OS X basée sur un package (telle que créée par Casper Imaging ou InstaDMG ).

#!/bin/bash
# This script creates a user account under Mac OS X
# (tested with 10.5 and 10.6; likely works with 10.4 but not earlier)
# Written by Clinton Blackmore, based on work at
# http://serverfault.com/questions/20702

# === Typically, this is all you need to edit ===

USERNAME=joeadmin
FULLNAME="Joe Admin"
PASSWORD="hard_to_hack"

# A list of (secondary) groups the user should belong to
# This makes the difference between admin and non-admin users.
# Leave only one uncommented
#SECONDARY_GROUPS=""  # for a non-admin user
SECONDARY_GROUPS="admin _lpadmin _appserveradm _appserverusr" # for an admin user

# ====

if [[ $UID -ne 0 ]]; then echo "Please run $0 as root." && exit 1; fi

# Find out the next available user ID
MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
USERID=$((MAXID+1))

# Create the user account
dscl . -create /Users/$USERNAME
dscl . -create /Users/$USERNAME UserShell /bin/bash
dscl . -create /Users/$USERNAME RealName "$FULLNAME"
dscl . -create /Users/$USERNAME UniqueID "$USERID"
dscl . -create /Users/$USERNAME PrimaryGroupID 20
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME

dscl . -passwd /Users/$USERNAME $PASSWORD


# Add use to any specified groups
for GROUP in $SECONDARY_GROUPS ; do
    dseditgroup -o edit -t user -a $USERNAME $GROUP
done

# Create the home directory
createhomedir -c > /dev/null

echo "Created user #$USERID: $USERNAME ($FULLNAME)"

Le script vous permet de spécifier à quels groupes un utilisateur doit appartenir. Il me semble que cela peut varier en fonction de la version d'OS X que vous utilisez. J'obtiens des résultats différents lorsque j'exécute id en tant qu'administrateur sous OS X 10.6 que lorsque j'exécute en tant qu'administrateur sous OS X 10.5.

7
Clinton Blackmore

J'ai commencé n petit wrapper à propos de dscl qui prend les paramètres de useradd - ce n'est pas complet (et je ne pense pas que ce soit possible, car certaines choses ne sont pas possibles sur OS X ), mais je l'ai utilisé pour créer des utilisateurs.

Le cadre est là pour tous les paramètres, donc si vous voulez profiter des impressionnantes fonctionnalités sociales de GitHub, c'est facile à faire.