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)"
#!/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)"
-u $USERNAME
zum createhomedir
Befehl.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
kein Hang
John Vincent
John Vincent
kein Hang
createhomedir
wissen, für welchen Benutzer es ein Home-Verzeichnis erstellen soll?John Vincent
Gordon Davisson
staff
als 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 , , ,$PATH
usw.$USER
)$UID
, die besondere Bedeutungen haben, und falls Sie versehentlich eine davon für etwas wiederverwenden Andernfalls kann es zu Problemen kommen.