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?
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?
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
useradd
syntaxe.
PrimaryGroupID 80
est admin
, donc luser
peut utiliser sudo
même si vous ne pas l'ajouter au groupe d'administrateurs.
(Cette réponse devrait être considérée comme un addenda pour remplir quelques blancs 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 'BEGIN { max = 500; } { if ($2 > max) max = $2; } END { print max + 1; }')
newid=$((maxid+1))
... puis utilisez 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
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 cela ne fonctionnait pas lorsque je l'ai testée.)
sudo createhomedir -s
(IIRC) sur les réplicas / Fileshares Open Directory, et ceux-ci créent les répertoires de base avec joie.
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.
Si vous devez créer un groupe d'utilisateurs, il est possible de créer un fichier texte structuré et de le transmettre dsimport
pour effectuer le travail.
Le Guide d' administration en ligne de commande d'Apple contient un chapitre complet sur les utilisateurs et les groupes.
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 figure pas dans la liste:
sudo dscl . list /Users uid
sudo dscl . list groups gid
Pratique si vous devez utiliser un certain identifiant
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.
grep
avec ce que id
vous aviez à l'esprit pour l'utiliser pour le nouvel utilisateur
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; il est plus particulièrement conçu pour être un script exécuté lors de la compilation d'une image 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 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 id
en tant qu'administrateur sous OS X 10.6 et en tant qu'administrateur sous OS X 10.5.
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.
J'ai commencé un petit wrapper sur les paramètres dscl
qui prennent useradd
- ce n'est pas complet (et je ne le pense pas, certaines choses étant impossibles 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 fonctionnalités sociales impressionnantes de GitHub, rien de plus simple.
single_user
mode (réinitialisation de la sécurité), vous devrez alors redémarrer sans interruptionCommand-S
, pour pouvoir accéder en écriture au disque selon les détails à l'écran. , puisrm /var/db/.AppleSetupDone
qui vous permettra de créer un nouveau compte administrateur. J'espère que cela aidera quelqu'un