Question Comment créer des comptes 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 la connexion SSH à la machine. Comment puis-je faire cela?


84
2018-06-05 18:07


origine


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


Réponses:


Utilisez la commande dscl. Cet exemple créerait l'utilisateur "luser", 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 de base de l'utilisateur et modifier le propriétaire pour que l'utilisateur puisse y accéder, et vous assurer que l'identifiant unique est en fait unique.

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

dscl . -append /Groups/admin GroupMembership luser

80
2018-06-05 18:15



Comment puis-je m'assurer que l'UID est unique? - JR Lawhorne
Il n'y a pas de moyen automatique; si vous écrivez ceci, vous pouvez simplement le faire exécuter avec la commande "id ####" et assurez-vous qu'il renvoie "Aucun utilisateur de ce type" ou quelque chose de ce genre. - palmer
N'oubliez pas d'utiliser sudo si vous ne disposez pas des autorisations. - Raffi Khatchadourian
BTW, puisque c'est beaucoup plus verbeux que cela ne devrait être, J'ai porté ces commandes dans le useradd syntaxe. - Xiong Chiamiov
Notez que PrimaryGroupID 80 est admin, alors luser peut utiliser sudo même si vous ne l'ajoutez pas au groupe des administrateurs. - ruslo


(Cette réponse doit être considérée comme un addenda à remplir en blanc dans la procédure de Palmer)

Pour choisir un identifiant unique non utilisé pour votre nouvel utilisateur, vous pouvez utiliser:

maxid=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
newid=$((maxid+1))

... utilisez ensuite la séquence de commandes dscl fournie par palmer pour créer le compte, puis créez le répertoire de base du nouvel utilisateur avec:

cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser

(Il existe une commande createhomedir, mais cela ne fonctionnait pas lorsque je l'ai testée.)


20
2018-06-05 20:21



J'ai créé un script qui remplit notre maître Open Directory avec de nouveaux utilisateurs, puis appelle sudo createhomedir -s (IIRC) sur les réplicas d’Open Directory / Fileshares, et ils créent avec joie les répertoires de base. - Clinton Blackmore
dscl -list est limité à 256 résultats. Par conséquent, si vous avez plus de 256 utilisateurs, cette technique ne pourra pas garantir un UID unique. - smokris


Si vous devez créer plusieurs utilisateurs, il est possible de créer un fichier texte structuré et de le transmettre à dsimport faire le travail.

Pommes Administration en ligne de commande Guide contient un chapitre entier sur les utilisateurs et les groupes.


8
2018-06-05 19:19



Impair. Apple semble avoir supprimé la v10.5 du document que vous avez mentionné au début, mais gardé v10.3 et un moins complet Version Snow Leopard - chb


Un autre moyen 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 ne s'y trouve pas:

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

Pratique si vous devez utiliser un certain identifiant


7
2017-11-30 16:10



dscl -list est limité à 256 résultats. Par conséquent, si vous avez plus de 256 utilisateurs, cette technique ne pourra pas garantir un UID unique. - smokris
yup c'est le chemin le plus court pour ajouter cet utilisateur ici en ce moment, juste grep avec le id vous aviez à l'esprit d'utiliser pour le nouvel utilisateur - yair


J'ai exploité les 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; c’est surtout conçu pour être un script exécuté lors de la compilation d’une image OS X basée sur un paquet (telle que créée par Imagerie Casper 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 les groupes auxquels un utilisateur doit appartenir. Il me semble que cela pourrait différer selon la version d'OS X que vous utilisez. J'obtiens des résultats différents quand je cours id en tant qu'administrateur sous OS X 10.6 que lorsque je suis exécuté en tant qu'administrateur sous OS X 10.5.


7
2018-01-14 23:02



Dans une autre réponse, Elliott avertit que la commande 'createhomedir -c', vers la fin, créera des comptes pour tous les utilisateurs du répertoire auquel vous êtes lié. (L'option '-c' de la page de manuel crée des répertoires de base pour les chemins de base locaux uniquement. ') Il existe une autre option, «-u nom d'utilisateur», qui peut mieux fonctionner. - Clinton Blackmore
bonjour j'utilise le script ci-dessus. Donc, il ajoute mon nouvel utilisateur, mais lorsque l'utilisateur se connecte à son agenda, il dit qu'il n'a pas les autorisations! Pouvez-vous m'aider ?
@ jimmy: Je recommanderais de poser une nouvelle question sur serverfault et de créer un lien vers cette réponse plutôt que de simplement poser une question dans les commentaires, ce qui sera rarement vu. Je m'attendrais à ce que les autorisations soient exactes. Utiliser 'chown' et 'chmod' peut vous aider si vous pouvez identifier un fichier qui ne dispose pas des autorisations adéquates ... mais je ne sais pas lequel. - Clinton Blackmore
dscl -list est limité à 256 résultats. Par conséquent, si vous avez plus de 256 utilisateurs, cette technique ne pourra pas garantir un UID unique. - smokris


J'ai commencé une petite enveloppe sur dscl qui prend useraddLes paramètres de - ce n'est pas complet (je ne pense pas non plus, car certaines choses ne sont pas possibles sous OS X), mais je m'en suis servi pour créer des utilisateurs.

Le cadre est là pour tous les paramètres, donc si vous voulez tirer parti des formidables fonctionnalités sociales de GitHub, rien de plus simple.


4
2017-10-17 06:15