dscl . create /Users/test
dscl . create /Users/test UniqueID 420
dscl . create /Users/test PrimaryGroupID 420
dscl . create /Users/test UserShell /bin/bash
dscl . create /Users/test NFSHomeDirectory /tmp
dscl . create /Users/test RealName Test
dscl . create /Users/test Password test
Isso cria um usuário visível em sysprefs / Accounts.
dscl . create /Users/test Password "*"
Isso oculta o usuário. Certifique-se de citar o "*" ou ele não funcionará.
EDIT : acidentalmente consegui recriar a situação do googletorp de não conseguir ocultar um usuário definindo sua senha como "*" e descobri como corrigi-lo. Dessa vez, eu criei um usuário usando o dsimport, assim:
dsimport /dev/fd/0 /Local/Default I --template StandardUser << EOF
test:*:520:520:Test user:/Users/test:/bin/bash
EOF
Mas nesse comando, o * é usado para representar uma senha literal de um caractere de *
e, portanto, o dsimport cria uma propriedade AuthenticationAuthority para o usuário e define a propriedade da senha como o hash de sombra de*
(que aparece como ********
no dscl, como para todos os senhas). Depois disso, tentar definir a senha como "*" usando dscl apenas define a senha como literal *
, em vez de desabilitar a senha. A solução é excluir a propriedade indesejada e desabilitar a senha:
sudo dscl . delete /Users/test AuthenticationAuthority
sudo dscl . create /Users/test Password "*"
Isso oculta o usuário.