Quali passaggi sono necessari per creare un nuovo utente dalla riga di comando?

27

Quali comandi (o script) possono creare un account utente completamente funzionale su Mountain Lion, in esecuzione solo dalla riga di comando tramite terminale o ssh.

Sembra una coppia di / a / 7288/5472 "> risposte potrebbero funzionare, ma mi chiedevo se esistesse un breve script o uno strumento per la creazione di account utente completamente funzionali su Mountain Lion?

    
posta bmike 17.02.2013 - 20:03
fonte

4 risposte

32

Ecco uno script di shell che ho scritto al lavoro per gestirlo come parte del processo NetInstall (creando automaticamente un account amministratore locale durante il processo di imaging).

#!/bin/sh
. /etc/rc.common
dscl . create /Users/administrator
dscl . create /Users/administrator RealName "Administrator Account"
dscl . create /Users/administrator hint "Password Hint"
dscl . create /Users/administrator picture "/Path/To/Picture.png"
dscl . passwd /Users/administrator thisistheaccountpassword
dscl . create /Users/administrator UniqueID 501
dscl . create /Users/administrator PrimaryGroupID 80
dscl . create /Users/administrator UserShell /bin/bash
dscl . create /Users/administrator NFSHomeDirectory /Users/administrator
cp -R /System/Library/User\ Template/English.lproj /Users/administrator
chown -R administrator:staff /Users/administrator

Alcune note da ricordare:

  • L'ho salvato come un file ".sh" eseguibile.
  • Poiché viene eseguito durante NetInstall, viene eseguito come root e deve essere eseguito come root per funzionare correttamente. Puoi anche sottrarre le prime due righe, aggiungere un "sudo" all'inizio di ogni riga successiva ed eseguirle manualmente come singoli comandi nel Terminale.
  • Modifica UniqueID da 501 a un numero che saprai è sicuro su tutti i sistemi (501 viene preso dal primo account creato su un Mac, generalmente qualcosa di più elevato come 550 sarà probabilmente sicuro, a seconda di quanti utenti hai su il tuo sistema).
  • PrimaryGroupID di 80 crea un utente amministratore. Passare a PrimaryGroupID di 20 per creare un utente standard.
  • Ho ripreso ben oltre 50 Mac in questo modo senza problemi. Uso questo account per eseguire comandi via SSH, per distribuire patch tramite ARD e per eseguire l'amministrazione locale da scrivania.
risposta data 02.03.2013 - 17:31
fonte
13

Per automatizzarlo ulteriormente, puoi utilizzare la seguente riga per ottenere il prossimo ID utente "disponibile" se stai eseguendo su un Mac che ha già impostato gli utenti.

LastID='dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1'

NextID=$((LastID + 1))

Quindi, la riga corrispondente nella risposta di bispymusic qui sopra potrebbe essere cambiata:

 dscl . create /Users/administrator UniqueID $NextID
    
risposta data 24.07.2013 - 10:09
fonte
2

Ho alcuni aggiornamenti sulla risposta di cui sopra.

dscl / -append /Groups/admin GroupMembership newUserName

Questo comando può essere utilizzato per consentire all'utente di disporre dell'accesso amministrativo. Se questo comando non viene fornito, l'utente verrà automaticamente impostato come utente standard.

dscl . create /Users/newUserName PrimaryGroupID 80

Imposta l'id del gruppo principale dell'utente. 80 significa admin e 20 significa staff . E l'impostazione su 20 non renderà lo standard utente. A meno che il primo comando non sia menzionato.

    
risposta data 24.07.2013 - 10:02
fonte
0

Ecco uno script di shell che ho scritto per aggiungere nuovi utenti in Max OS X utilizzando la riga di comando. Funziona come se fosse Linux. Sentiti libero di modificarne uno per le tue esigenze personali. Basta chiamarlo useradd.sh e impostare i permessi corretti ( chmod 0700 useradd.sh nel mio caso). Grazie a bispymusic, Alex Leach, Kent per i loro contributi.

OS X High Sierra testato

#!/bin/sh

if [[ 'id -u' != 0 ]]; then
    echo "Must be root to run script"
    exit
fi

read -p "Enter user name and press [ENTER]: " UserName

if [[ $UserName == 'dscl . -list /Users UniqueID | awk '{print $1}' | grep -w $UserName' ]]; then
    echo "User already exists!"
    exit 0
fi

read -p "Enter real name and press [ENTER]: " RealName
read -p "Enter PrimaryGroupID (80 - admin, 20 - user) and press [ENTER]: " PrimaryGroupID
LastID='dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1'
NextID=$((LastID + 1))

. /etc/rc.common
dscl . create /Users/$UserName
dscl . create /Users/$UserName RealName $RealName

read -p "Enter password hint and press [ENTER]: " PasswordHint
dscl . create /Users/$UserName hint $PasswordHint
PasswordHint=0

echo " "
read -s -p "Enter Account Password and press [ENTER]: " AccountPassword
echo " "
read -s -p "Enter Account Password again and press [ENTER]: " AccountPasswordRepeat
if [[ $AccountPassword == $AccountPasswordRepeat ]]; then
  dscl . passwd /Users/$UserName $AccountPassword
  AccountPassword=0
else
  echo "Passwords do not match!"
  exit 1
fi
echo " "
dscl . create /Users/$UserName UniqueID $NextID
dscl . create /Users/$UserName PrimaryGroupID $PrimaryGroupID
dscl . create /Users/$UserName UserShell /bin/bash
dscl . create /Users/$UserName NFSHomeDirectory /Users/$UserName
createhomedir -u $UserName -c

echo " "
echo "New user 'dscl . -list /Users UniqueID | awk '{print $1}' | grep -w $UserName' has been created with unique ID 'dscl . -list /Users UniqueID | grep -w $UserName | awk '{print $2}''"

puoi ottenere lo stesso da mio gist

    
risposta data 15.05.2018 - 23:44
fonte

Leggi altre domande sui tag