Frage Wie erstelle ich Benutzerkonten vom Terminal in Mac OS X 10.5?


Ich würde gerne in der Lage sein, neue Benutzer in Mac OS X 10.5 remote zu erstellen, nachdem ich in den Rechner geschaut habe. Wie mache ich das?


84
2018-06-05 18:07


Ursprung


Ich habe noch nicht den Ruf zu antworten, aber wenn Sie danach suchen, wie ich das mache single_user Modus (ein Sicherheitsreset), dann müssen Sie neu starten, halten Sie gedrückt Command-S, erhalten Schreibzugriff auf die Festplatte pro Bildschirmdetails und dann rm /var/db/.AppleSetupDone wodurch Sie ein neues Administratorkonto erstellen können. Hoffe, das hilft jemandem - New Alexandria


Antworten:


Verwenden Sie den Befehl dscl. In diesem Beispiel würde der Benutzer "luser" wie folgt erstellt:

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

Sie können dann passwd verwenden, um das Passwort des Benutzers zu ändern, oder Folgendes verwenden:

dscl . -passwd /Users/luser password

Sie müssen / Users / luser für das Home-Verzeichnis des Benutzers erstellen und den Besitz ändern, damit der Benutzer darauf zugreifen kann. Vergewissern Sie sich, dass die UniqueID tatsächlich eindeutig ist.

Diese Zeile fügt den Benutzer der Gruppe des Administrators hinzu:

dscl . -append /Groups/admin GroupMembership luser

80
2018-06-05 18:15



Wie stelle ich sicher, dass die UID einzigartig ist? - JR Lawhorne
Es gibt keinen automatischen Weg. Wenn Sie das Skript ausführen, können Sie einfach den Befehl "id ####" ausführen und sicherstellen, dass "No so user" oder ein solcher Hack zurückgegeben wird. - palmer
Denken Sie daran, sudo zu verwenden, wenn Sie keine Berechtigungen haben. - Raffi Khatchadourian
BTW, da dies viel ausführlicher ist, als es sein sollte, Ich habe portiert diese Befehle in die useradd Syntax. - Xiong Chiamiov
Beachten Sie, dass PrimaryGroupID 80 ist admin, so luser Kann benutzen sudo auch wenn du ihn nicht zur Gruppe der Administratoren hinzufügst. - ruslo


(Diese Antwort sollte als Addendum betrachtet werden, um einige Lücken in palmers Verfahren zu füllen)

Um eine unbenutzte UniqueID für Ihren neuen Benutzer auszuwählen, können Sie Folgendes verwenden:

maxid=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
newid=$((maxid+1))

... verwenden Sie dann die Reihenfolge der dscl-Befehle, die palmer angegeben hat, um das Konto zu erstellen, und erstellen Sie dann das Home-Verzeichnis des neuen Benutzers mit:

cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser

(Es gibt einen createmodomedir Befehl, aber es hat nicht funktioniert, als ich es getestet habe.)


20
2018-06-05 20:21



Ich habe ein Skript erstellt, das unseren Open Directory-Master mit neuen Benutzern füllt und dann anruft sudo createhomedir -s (IIRC) auf die Open Directory Replicas / Filesharing, und sie erstellen gerne die Home-Verzeichnisse. - Clinton Blackmore
dscl -list ist auf 256 Ergebnisse beschränkt. Wenn Sie also mehr als 256 Benutzer haben, kann diese Technik keine eindeutige UID garantieren. - smokris


Wenn Sie mehrere Benutzer erstellen müssen, können Sie eine strukturierte Textdatei erstellen und an sie übergeben dsimport den Job erledigen.

Äpfel Befehlszeilenverwaltung Guide enthält ein ganzes Kapitel über Benutzer und Gruppen.


8
2018-06-05 19:19



Ungerade. Apple scheint mit v10.5 des Dokuments, auf das Sie ursprünglich verwiesen haben, Schluss gemacht zu haben gehalten v10.3 und ein weniger umfassendes Schneeleopard-Version - chb


Eine andere Möglichkeit, eine eindeutige Benutzer-ID auszuwählen, bevor Sie ein Konto erstellen, besteht darin, nur die Liste durchzugehen und zu prüfen, ob die gewünschte Benutzer-ID nicht vorhanden ist:

 sudo dscl . list /Users uid
 sudo dscl . list groups gid

Praktisch, wenn Sie eine bestimmte ID verwenden müssen


7
2017-11-30 16:10



dscl -list ist auf 256 Ergebnisse beschränkt. Wenn Sie also mehr als 256 Benutzer haben, kann diese Technik keine eindeutige UID garantieren. - smokris
Yup, das ist der kürzeste Weg, um diesen Benutzer gerade hier, gerade jetzt hinzuzufügen grep es mit dem id Sie hatten vor, für den neuen Benutzer zu verwenden - yair


Ich habe die verschiedenen Antworten hier verwendet, um auf etwas zu kommen, was ich für ein nettes Skript halte, um Benutzerkonten zu erstellen. Zugegebenermaßen ist dies nicht dafür ausgelegt, einen Befehl von ssh aus zu einem Zeitpunkt auszuführen; es ist auch so konzipiert, dass es ein Skript ist, das beim Kompilieren eines paketbasierten Abbilds von OS X (wie von Casper-Imaging oder 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)"

Mit dem Skript können Sie angeben, welchen Gruppen ein Benutzer angehören soll. Es scheint mir, dass dies je nach der Version von OS X, die Sie ausführen, unterschiedlich sein kann. Ich bekomme andere Ergebnisse, wenn ich renne id als Administrator unter OS X 10.6, wenn ich als Administrator unter OS X 10.5 arbeite.


7
2018-01-14 23:02



In einer anderen Antwort warnt Elliott davor, dass der Befehl "createmedomedir -c" gegen Ende Konten für alle Benutzer in dem Verzeichnis erstellen wird, an das Sie gebunden sind. (Die Option '-c' in der Manpage 'erstellt nur Home-Verzeichnisse für lokale Home-Pfade.') Es gibt eine andere Option, '-u Benutzername', die möglicherweise besser funktioniert. - Clinton Blackmore
Hallo, ich benutze das obige Skript. Also fügt es meinen neuen Benutzer hinzu, aber wenn der Benutzer sich mit seinem Kalender verbindet, sagt er, dass er nicht die Erlaubnis hat! Kannst du mir helfen ?
@ Jimmy: Ich würde empfehlen, eine neue Frage zu Serverfault zu stellen und auf diese Antwort zu verlinken, anstatt nur eine Frage in den Kommentaren zu stellen, die selten zu sehen sein wird. Ich würde erwarten, dass die Berechtigungen stimmen. Die Verwendung von 'chown' und 'chmod' kann helfen, wenn Sie eine Datei identifizieren können, die nicht die richtigen Berechtigungen hat ... aber ich weiß nicht, welche es wäre. - Clinton Blackmore
dscl -list ist auf 256 Ergebnisse beschränkt. Wenn Sie also mehr als 256 Benutzer haben, kann diese Technik keine eindeutige UID garantieren. - smokris


Ich habe begonnen ein kleiner Wrapper Über dscl das macht useradd's Parameter - es ist nicht vollständig (noch denke ich, dass es sein kann, da einige Dinge unter OS X nicht möglich sind), aber ich habe es benutzt, um einige Benutzer zu erstellen.

Das Framework ist für alle Parameter da. Wenn Sie GitHubs großartige soziale Funktionen nutzen möchten, ist das einfach.


4
2017-10-17 06:15