Wie kann ich einen neuen Benutzer über das Terminal macOS 10.14 erstellen

Ich versuche, ein Skript zu schreiben, um einen Benutzer zu einem Computer hinzuzufügen. Dies sind keine Administratorkonten und sollten Mitarbeiterkonten sein. Ich habe das folgende Skript ausgeführt und kann mich bei dem Konto anmelden, aber ich kann nicht auf Dateien zugreifen, Dateien erstellen oder Dateien auf dem Computer speichern.

Letztendlich möchte ich dies ausführen, um 5 Benutzerkonten und alle ihre Informationen zu entfernen und dann 5 neue Konten zu erstellen (dies ist in einem Klassenzimmer, in dem ich 36 Computer habe), aber ich habe Probleme, einen einzelnen Benutzer mit dem folgenden Skript korrekt zu erstellen.

Jede Hilfe wäre sehr willkommen.

#!/bin/bash

USERNAME=per1
FULLNAME="Period 1"
PASSWORD="test"
SECONDARY_GROUPS="staff" 

# ====

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)"
Wo/wie genau macht das Skript nicht das, was Sie wollen?
Dies erstellt einen Benutzer, aber ich glaube, dass es ein Problem mit der Erstellung des Home-Verzeichnisses gibt. Vielleicht ein Berechtigungsproblem. Zum Beispiel kann ich keinen Ordner im Finder anzeigen.
Ich erhalte diesen Fehler, während ich bei dem erstellten Konto angemeldet bin: Der Ordner „Desktop“ kann nicht geöffnet werden, da Sie keine Berechtigung haben, seinen Inhalt anzuzeigen.
Nun, ohne alles im Detail zu betrachten: Woher wollen Sie createhomedirwissen, für welchen Benutzer es ein Home-Verzeichnis erstellen soll?
Danke schön! Ich habe den Benutzer hinzugefügt und das Skript funktioniert jetzt
Ein paar zusätzliche Empfehlungen für das Skript: Sie müssen es nicht staffals sekundäre Gruppe hinzufügen, da es bereits als primäre Gruppe der Benutzer festgelegt ist (Mitarbeiter ist Gruppe Nr. 20). Außerdem empfehle ich, Klein- oder gemischte Schreibweise für Ihre Shell- und Umgebungsvariablen zu verwenden, da es eine Reihe von Variablen gibt, die nur in Großbuchstaben geschrieben sind (wie , , , $PATHusw. $USER) $UID, die besondere Bedeutungen haben, und falls Sie versehentlich eine davon für etwas wiederverwenden Andernfalls kann es zu Problemen kommen.

Antworten (2)

#!/bin/bash

USERNAME=per1
FULLNAME="Period 1"
PASSWORD="test"
SECONDARY_GROUPS="staff" 

# ====

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 -u $USERNAME > /dev/null

echo "Created user #$USERID: $USERNAME ($FULLNAME)"
Der Unterschied zwischen dem ursprünglichen Skript und diesem hier ist die Hinzufügung von -u $USERNAMEzum createhomedirBefehl.

Die Antwort von John Vincent ist sehr nützlich, da sie den Benutzer über ein Skript für Sie erstellen kann ...

Sie sollten auch die Erstellung des SecureToken-Status für den neuen Benutzer in Betracht ziehen, wenn Sie FileVault für den Benutzer aktivieren möchten.

Einige weitere wichtige Informationen zu SecureToken: https://derflounder.wordpress.com/2018/01/20/secure-token-and-filevault-on-apple-file-system/

Sie können das SecureToken wie folgt mit root hinzufügen:

sysadminctl -adminUser root -adminPassword <rootPassword> -secureTokenOn <user> -password <userPassword>

Sie können den SecureToken-Status auf diese Weise überprüfen:

sysadminctl -secureTokenStatus username_goes_here