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
Cela crée un utilisateur visible dans sysprefs / Comptes.
dscl . create /Users/test Password "*"
Cela masque l'utilisateur. Assurez-vous de citer le "*" sinon cela ne fonctionnera pas.
EDIT : J'ai accidentellement réussi à recréer la situation de googletorp de ne pas pouvoir cacher un utilisateur en définissant son mot de passe sur "*", et j'ai découvert comment le corriger. Cette fois, j'avais créé un utilisateur en utilisant dsimport, comme ceci:
dsimport /dev/fd/0 /Local/Default I --template StandardUser << EOF
test:*:520:520:Test user:/Users/test:/bin/bash
EOF
Mais dans cette commande, le * est pris pour représenter un mot de passe à un caractère littéral de *
, et donc dsimport crée une propriété AuthenticationAuthority pour l'utilisateur et définit la propriété de mot de passe sur le hachage fantôme de *
(qui apparaît comme ********
dans dscl, comme pour tous mots de passe). Après cela, essayer de définir le mot de passe sur "*" en utilisant dscl ne fait que définir le mot de passe sur un littéral *
, au lieu de désactiver le mot de passe. La solution consiste à supprimer la propriété indésirable, puis à désactiver le mot de passe:
sudo dscl . delete /Users/test AuthenticationAuthority
sudo dscl . create /Users/test Password "*"
Cela masque l'utilisateur.