Как создать учетные записи пользователей из Терминала в Mac OS X 10.11?

22

Я хотел бы иметь возможность создавать новых пользователей в Mac OS X 10.11 удаленно после ssh'ing в машину. На Mountain Lion эти шаги были перечислены .

Бег

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

После вышесказанного пользователь не становится администратором. Что дальше?

lobirkeland
источник

Ответы:

6

В документации отсутствует один важный шаг:

reboot

или же

sudo reboot

После перезагрузки пользователь получает видимые права администратора в Системных настройках -> Пользователи и группы.

Но: даже без перезагрузки пользователь уже является администратором - его просто не видно в PrefPane. Если вы войдете в систему как joeadmin сразу после создания учетной записи (например, быстрое переключение пользователей), роль администратора будет видна из его учетной записи.

klanomath
источник
Хороший ответ. Я собирался прокомментировать OP, чтобы спросить, как выглядит учетная запись администратора, чтобы понять, как они использовали пользователя или проверяли членство в группе администраторов. В зависимости от того, как они проверяют, выход из системы может быть всем, что нужно для того, чтобы текущий пользователь мог прочитать нового пользователя как администратора ...
bmike
13

Если вы находитесь здесь, и ваша система работает с 10.10 и новее, команда sysadminctl - ваш лучший друг. Это делает много магии, что DSCL не может сделать.

Вот вывод для 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.

Тогда вы захотите сделать:

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

Для добавления / удаления пользователей используйте dseditgroup:

sudo dseditgroup -o edit -a usernametoadd -t user admin
sudo dseditgroup -o edit -a usernametoadd -t user wheel
ub3rdud3
источник
команда sudo createhomedir -c 2>&1 | grep -v "shell-init"также создает папку в /var/setupчистой установке
Burcardo
@Burcardo - это нормально, пока учетные записи работают, и пользователи могут использовать passwd для изменения своих паролей. На самом деле ни у одной из моих машин не было проблем с созданием этой папки.
ub3rdud3
4

После большого тестирования я сделал этот скрипт для создания учетных записей пользователей из терминала.

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
источник
вы можете избавиться от строки mv / Users / $ LOCAL_ADMIN_SHORTNAME / var / $ LOCAL_ADMIN_SHORTNAME # Перемещает домашнюю папку администратора в / var с флагом в вашей команде sysadminctl -home / var / $ LOCAL_ADMIN_SHORTNAME
ub3rdud3 22
0

PrimaryGroupID должен быть равен 80, чтобы создать учетную запись администратора.

dscl . -create /Users/joeadmin PrimaryGroupID 80

проверьте эту тему для получения дополнительной информации.

Я также написал сценарий для этой цели. Вот суть ссылки

Игорь Вольтаик
источник