Como crio contas de usuário a partir do Terminal no Mac OS X 10.11?

23

Eu gostaria de poder criar novos usuários no Mac OS X 10.11 remotamente após ssh'ing na máquina. No Mountain Lion, essas etapas foram listadas .

Corrida

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

Após o exposto, o usuário não se torna administrador. Qual o proximo?

Lobirkeland
fonte

Respostas:

6

A documentação carece de uma etapa importante:

reboot

ou

sudo reboot

Após a reinicialização, o usuário desfruta de direitos de administrador visíveis em Preferências do Sistema -> Usuários e Grupos.

Mas: mesmo sem a reinicialização, o usuário já é administrador - apenas não é visível no PrefPane. Se você fizer o login como joeadmin imediatamente após a criação da conta (por exemplo, troca rápida de usuário), a função de administrador ficará visível na conta dele.

Klanomath
fonte
Boa resposta. Gostaria de comentar o OP para perguntar como é a conta da administração, para descobrir como eles estavam usando o usuário ou testando a associação ao grupo de administradores. Dependendo de como eles verificar, um log out pode ser tudo que eles precisam para o seu usuário atual para ler o novo usuário como admin ...
bmike
13

Se você está aqui e seu sistema está executando algo entre 10.10 e mais recente, o comando sysadminctl é seu melhor amigo. Faz muita mágica que o DSCL não pode fazer.

Aqui está a saída para 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.

Então você vai querer fazer:

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

Para adicionar / remover usuários, use dseditgroup:

sudo dseditgroup -o edit -a usernametoadd -t user admin
sudo dseditgroup -o edit -a usernametoadd -t user wheel
ub3rdud3
fonte
o comando sudo createhomedir -c 2>&1 | grep -v "shell-init"também cria uma pasta em /var/setupuma instalação limpa
Burcardo
@Burcardo, tudo bem, desde que as contas funcionem, e os usuários podem usar a senha para alterar suas próprias senhas. De fato, nenhuma das minhas máquinas teve problemas com a criação dessa pasta.
ub3rdud3 8/01
4

Após muitos testes, criei esse script para criar contas de usuário a partir do terminal.

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
fonte
você pode se livrar da linha mv / Users / $ LOCAL_ADMIN_SHORTNAME / var / $ LOCAL_ADMIN_SHORTNAME # Move a pasta inicial do administrador para / var com um sinalizador no seu comando sysadminctl -home / var / $ LOCAL_ADMIN_SHORTNAME
ub3rdud3
0

O PrimaryGroupID deve ser definido como 80 para criar uma conta de administrador.

dscl . -create /Users/joeadmin PrimaryGroupID 80

confira este tópico para mais informações.

Também escrevi um script para esse fim. Aqui está o link principal

Igor Voltaic
fonte