sviluppo-web-qa.it

Come posso creare account utente dal Terminale in Mac OS X 10.5?

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?

87
JR Lawhorne

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
80
palmer

(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.)

20
Gordon Davisson

Se hai un gruppo di utenti da creare, è possibile creare un file di testo strutturato e passarlo a dsimport per fare il lavoro.

La Guida di Apple Command-Line Administration contiene un intero capitolo su utenti e gruppi.

8

Un altro modo per scegliere un ID utente univoco prima di creare un account è semplicemente 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

7
Kevin McDonagh

Ho sfruttato le diverse risposte qui per trovare quello che penso sia uno script piacevole 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 eseguo id come amministratore su OS X 10.6 rispetto a quando eseguo come amministratore su OS X 10.5.

7

Ho iniziato n piccolo wrapper circa dscl che accetta i parametri di useradd - non è completo (né penso che possa essere, poiché 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.