Как создать учетные записи пользователей из Терминала в 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

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


Ответы:


6

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

reboot

или же

sudo reboot

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

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


Хороший ответ. Я собирался прокомментировать 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

команда 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

вы можете избавиться от строки 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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.