Jak utworzyć konta użytkowników z terminala w systemie Mac OS X 10.11?

23

Chciałbym móc tworzyć nowych użytkowników w Mac OS X 10.11 zdalnie po ssh'ing na maszynie. W Mountain Lion te kroki zostały wymienione .

Bieganie

dscl . -create /Users/joeadmin
dscl . -create /Users/joeadmin UserShell /bin/bash
dscl . -create /Users/joeadmin RealName "Joe Admin" 
dscl . -create /Users/joeadmin UniqueID "510"
dscl . -create /Users/joeadmin PrimaryGroupID 20
dscl . -create /Users/joeadmin NFSHomeDirectory /Users/joeadmin
dscl . -passwd /Users/joeadmin password 

dscl . -append /Groups/admin GroupMembership joeadmin

Po powyższym użytkownik nie staje się administratorem. Co następne?

Lobirkeland
źródło

Odpowiedzi:

6

Dokumentacja nie ma jednego ważnego kroku:

reboot

lub

sudo reboot

Po ponownym uruchomieniu użytkownik ma widoczne uprawnienia administratora w Preferencjach systemowych -> Użytkownicy i grupy.

Ale: nawet bez ponownego uruchomienia użytkownik jest już administratorem - po prostu nie jest widoczny w PrefPane. Jeśli zalogujesz się jako joeadmin natychmiast po utworzeniu konta (np. Szybkie przełączanie użytkowników), rola administratora jest widoczna z poziomu jego konta.

klanomath
źródło
Niezła odpowiedź. Zamierzałem skomentować OP, aby zapytać, jak wygląda konto, na którym nie ma konta administratora, aby zagłębić się w sposób, w jaki używali użytkownika lub testowali członkostwo w grupie administracyjnej. W zależności od tego, jak sprawdzają, wylogowanie może być wszystkim, czego ich aktualny użytkownik potrzebuje do odczytania nowego użytkownika jako administrator ...
bmike
13

Jeśli jesteś tutaj, a twój system działa w wersjach od 10.10 i nowszych, komenda sysadminctl jest twoim najlepszym przyjacielem. Ma wiele magii, których DSCL nie potrafi.

Oto wynik działania sysadminctl:

sysadminctl[21233:29122637] Usage: sysadminctl
    -deleteUser <user name> [-secure || -keepHome]
    -newPassword <new password> -oldPassword <old password> [-passwordHint <password hint>]
    -resetPasswordFor <local user name> -newPassword <new password> [-passwordHint <password hint>]
    -addUser <user name> [-fullName <full name>] [-UID <user ID>] [-password <user password>] [-hint <user hint>] [-home <full path to home>] [-admin] [-picture <full path to user image>]

Pass '-' instead of password in commands above to request prompt.

Następnie będziesz chciał zrobić:

sudo createhomedir -c 2>&1 | grep -v "shell-init"

Aby dodać / usunąć użytkowników, użyj dseditgroup:

sudo dseditgroup -o edit -a usernametoadd -t user admin
sudo dseditgroup -o edit -a usernametoadd -t user wheel
ub3rdud3
źródło
polecenie sudo createhomedir -c 2>&1 | grep -v "shell-init"tworzy również folder w /var/setupczystej instalacji
Burcardo
@Burcardo jest w porządku, o ile działają konta, a użytkownicy mogą używać hasła do zmiany własnych haseł. W rzeczywistości żaden z moich komputerów nie miał problemów z tworzeniem tego folderu.
ub3rdud3
4

Po wielu testach stworzyłem ten skrypt, aby utworzyć konta użytkowników z terminala.

LOCAL_ADMIN_FULLNAME="Joe Admin"     # The local admin user's full name
LOCAL_ADMIN_SHORTNAME="joeadmin"     # The local admin user's shortname
LOCAL_ADMIN_PASSWORD="password"      # The local admin user's password

# Create a local admin user account
sysadminctl -addUser $LOCAL_ADMIN_SHORTNAME -fullName "$LOCAL_ADMIN_FULLNAME" -password "$LOCAL_ADMIN_PASSWORD"  -admin
dscl . create /Users/$LOCAL_ADMIN_SHORTNAME IsHidden 1  # Hides the account (10.10 and above)
mv /Users/$LOCAL_ADMIN_SHORTNAME /var/$LOCAL_ADMIN_SHORTNAME # Moves the admin home folder to /var
dscl . -create /Users/$LOCAL_ADMIN_SHORTNAME NFSHomeDirectory /var/$LOCAL_ADMIN_SHORTNAME # Create new home dir attribute
dscl . -delete "/SharePoints/$LOCAL_ADMIN_FULLNAME's Public Folder" # Removes the public folder sharepoint for the local admin
Lobirkeland
źródło
możesz pozbyć się linii mv / Users / $ LOCAL_ADMIN_SHORTNAME / var / $ LOCAL_ADMIN_SHORTNAME # Przenosi folder domowy administratora do / var z flagą w komendzie sysadminctl -home / var / $ LOCAL_ADMIN_SHORTNAME
ub3rdud3
0

PrimaryGroupID musi być ustawiony na 80, aby utworzyć konto administratora.

dscl . -create /Users/joeadmin PrimaryGroupID 80

sprawdź ten wątek, aby uzyskać więcej informacji.

Napisałem również skrypt do tego celu. Oto główny link

Igor Voltaic
źródło