94 votes

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

J'aimerais pouvoir créer de nouveaux utilisateurs dans Mac OS X 10.5 à distance après m'être connecté par ssh à la machine. Comment dois-je m'y prendre ?

1 votes

Je n'ai pas encore la réputation de répondre, mais si vous cherchez comment faire à partir de single_user (une réinitialisation de sécurité), vous devrez redémarrer en maintenant la touche Command-S obtenir un accès en écriture au disque selon les détails affichés à l'écran, puis rm /var/db/.AppleSetupDone qui vous permettra de créer un nouveau compte administrateur. J'espère que cela aidera quelqu'un

1 votes

Assurez-vous de ne pas confondre /Volumes/Macintosh HD/var/db/ .AppleSetupDone avec le volume de récupération de démarrage. /var/db/ dir. Vous ne le trouverez pas dans ce dernier.

91voto

palmer Points 1269

Utilisez la commande dscl. Dans cet exemple, l'utilisateur "luser" sera créé, comme suit :

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 changer 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 la propriété pour que l'utilisateur puisse y accéder, et vous assurer que l'UniqueID est bien unique.

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

dscl . -append /Groups/admin GroupMembership luser

7 votes

Comment puis-je m'assurer que l'UID est unique ?

3 votes

Il n'y a pas de méthode automatique ; si vous script, vous pouvez simplement lui faire exécuter la commande "id ####" et vous assurer qu'elle renvoie "No such user" ou un autre truc du genre.

1 votes

N'oubliez pas d'utiliser sudo si vous n'avez pas les permissions.

21voto

nullDev Points 1778

(Cette réponse doit être considérée comme un addendum pour combler certains vides 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 utiliser la séquence de commandes dscl donnée par Palmer pour créer le compte, et ensuite créer 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).

1 votes

J'ai créé un script qui remplit notre Open Directory Master avec de nouveaux utilisateurs, et qui appelle ensuite sudo createhomedir -s (IIRC) sur les répliques Open Directory / Fileshares, et ils créent volontiers les répertoires personnels.

2 votes

dscl -list est limité à 256 résultats, donc si vous avez plus de 256 utilisateurs, cette technique ne pourra pas garantir un UID unique.

1 votes

Petite astuce pour expulser 2 pipes supplémentaires (utiliser seulement awk) : dscl . -list /Users UniqueID | awk '{ if ($2 > max) max = $2 ; } END { print max + 1 ; }''

8voto

Clinton Blackmore Points 3500

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

Apple Administration en ligne de commande Le guide comporte un chapitre entier sur les utilisateurs et les groupes.

0 votes

Odd. Apple semble avoir supprimé la version 10.5 du document auquel vous faisiez référence initialement, mais gardé v10.3 et un autre moins complet Version Snow Leopard

0 votes

Le lien "Administration en ligne de commande" n'est plus disponible.

8voto

Une autre façon de choisir un identifiant unique avant de créer un compte consiste à parcourir la liste et à vérifier que celui que vous souhaitez utiliser n'y figure pas :

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

Pratique si vous devez utiliser un certain identifiant.

0 votes

dscl -list est limité à 256 résultats, donc si vous avez plus de 256 utilisateurs, cette technique ne pourra pas garantir un UID unique.

0 votes

Oui c'est le chemin le plus court pour ajouter cet utilisateur ici et maintenant, juste grep avec le id que vous aviez prévu d'utiliser pour le nouvel utilisateur

8voto

Clinton Blackmore Points 3500

J'ai exploité les différentes réponses ici pour arriver à ce que je pense être un script sympa pour créer des comptes utilisateurs. Certes, ce n'est pas conçu pour exécuter une commande à la fois à partir de ssh ; il est plutôt conçu pour être un script exécuté lors de la compilation d'une image d'OS X basée sur un paquet (tel que créé par Casper Imaging o 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 les groupes auxquels un utilisateur doit appartenir. Il me semble que cela peut différer en fonction de la version d'OS X que vous exécutez. J'obtiens des résultats différents lorsque j'exécute id en tant qu'administrateur sous OS X 10.6 que lorsque je fonctionne en tant qu'administrateur sous OS X 10.5.

0 votes

Dans une autre réponse, Elliott prévient que la commande 'createhomedir -c', vers la fin, créera des comptes pour tous les utilisateurs dans le répertoire auquel vous êtes lié. (L'option '-c', dans la page de manuel, 'crée des répertoires personnels pour les chemins personnels locaux uniquement'). Il existe une autre option, '-u username', qui peut mieux fonctionner.

0 votes

Bonjour, j'utilise le script ci-dessus. Donc il ajoute mon nouvel utilisateur mais quand l'utilisateur va se connecter à son calendrier il dit qu'il n'a pas les permissions ! Pouvez-vous m'aider ?

1 votes

@jimmy : Je recommanderais de poser une nouvelle question sur serverfault et de faire un lien vers cette réponse plutôt que de poser une question dans les commentaires, qui seront rarement vus. Je m'attendrais à ce que les permissions soient correctes. L'utilisation de 'chown' et 'chmod' peut aider si vous pouvez identifier un fichier qui n'a pas les bonnes permissions ... mais je ne sais pas lequel ce serait.

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