Vorrei essere in grado di creare nuovi utenti in Mac OS X 10.5 da remoto dopo aver inserito la macchina. Come faccio a fare questo?
Vorrei essere in grado di creare nuovi utenti in Mac OS X 10.5 da remoto dopo aver inserito la macchina. Come faccio a fare questo?
Risposte:
Utilizzare il comando dscl. Questo esempio creerebbe l'utente "luser", in questo modo:
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
È quindi possibile utilizzare passwd per modificare la password dell'utente o utilizzare:
dscl . -passwd /Users/luser password
Dovrai creare / Users / luser per la home directory dell'utente e cambiarne la proprietà in modo che l'utente possa accedervi ed essere sicuro che UniqueID sia effettivamente unico.
Questa riga aggiungerà l'utente al gruppo dell'amministratore:
dscl . -append /Groups/admin GroupMembership luser
useradd
sintassi.
PrimaryGroupID 80
è admin
, quindi luser
puoi usarlo sudo
anche se non lo aggiungi al gruppo degli amministratori.
(Questa risposta dovrebbe essere considerata un addendum per riempire alcuni spazi vuoti nella procedura di Palmer)
Per scegliere un UniqueID non utilizzato per il nuovo utente, è possibile utilizzare:
maxid=$(dscl . -list /Users UniqueID | awk 'BEGIN { max = 500; } { if ($2 > max) max = $2; } END { print max + 1; }')
newid=$((maxid+1))
... quindi utilizza la sequenza di comandi dscl che palmer ha fornito per creare l'account, quindi crea la home directory del nuovo utente con:
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
(c'è un comando createhomedir, ma non ha funzionato quando l'ho provato.)
sudo createhomedir -s
(IIRC) su Open Directory Replicas / Fileshares e crea felicemente le home directory.
dscl -list
è limitato a 256 risultati, quindi se hai più di 256 utenti, questa tecnica non garantirà un UID univoco.
Se hai un gruppo di utenti da creare, è possibile creare un file di testo strutturato e passarlo dsimport
per fare il lavoro.
La Guida all'amministrazione della riga di comando di Apple contiene un intero capitolo su utenti e gruppi.
Un altro modo per scegliere un ID utente univoco prima di creare un account è solo guardare l'elenco e verificare che quello che si desidera utilizzare non sia presente:
sudo dscl . list /Users uid
sudo dscl . list groups gid
Comodo se è necessario utilizzare un determinato ID
dscl -list
è limitato a 256 risultati, quindi se hai più di 256 utenti, questa tecnica non garantirà un UID univoco.
grep
con quello id
che avevi in mente di utilizzare per il nuovo utente
Ho sfruttato le diverse risposte qui per trovare quello che penso sia un bel copione per creare account utente. Certo, questo non è progettato per eseguire un comando alla volta da ssh; è progettato per essere eseguito come script durante la compilazione di un'immagine basata su pacchetti di OS X (come creata da 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)"
Lo script consente di specificare a quali gruppi deve appartenere un utente. Mi sembra che ciò potrebbe differire in base alla versione di OS X in uso. Ottengo risultati diversi quando corro id
come amministratore su OS X 10.6 rispetto a quando corro come amministratore su OS X 10.5.
dscl -list
è limitato a 256 risultati, quindi se hai più di 256 utenti, questa tecnica non garantirà un UID univoco.
Ho iniziato un piccolo wrapper sui parametri dscl
che richiede useradd
- non è completo (né penso che possa essere, in quanto alcune cose non sono possibili su OS X), ma l'ho usato per creare alcuni utenti.
Il framework è lì per tutti i parametri, quindi se vuoi sfruttare le fantastiche funzionalità social di GitHub, è facile da fare.
single_user
modalità (un ripristino di sicurezza), dovrai riavviare tenendo premutoCommand-S
, ottenere l'accesso in scrittura al disco per i dettagli sullo schermo e quindirm /var/db/.AppleSetupDone
ti consentirà di creare un nuovo account amministratore. Spero che questo aiuti qualcuno