Masquer les utilisateurs de l'écran de connexion de Mac OS X Snow Leopard


25

D'une manière ou d'une autre, j'ai réussi à définir un mot de passe pour mon utilisateur _postgres sur mon système d'exploitation au lieu de le définir sur le rôle postgres que j'ai en tant que superutilisateur / racine. Quoi qu'il en soit depuis cela, j'ai du mal à voir cet utilisateur apparaître dans la section compte et l'écran de connexion, ce que j'aimerais vraiment éviter. J'ai lu quelques documents à ce sujet, et la définition du mot de passe *devrait suffire à résoudre ce problème. Mais après plusieurs tentatives en vain avec et sans dscl, je suis arrivé à un point où je ne sais plus quoi faire.

Je ne pensais pas que ce serait encore plus difficile à faire, mais il me manque clairement quelque chose, alors comment faites-vous cela?


Avoir un mot de passe pour votre utilisateur _postgres n'est pas une mauvaise idée du tout.
Hasaan Chop

1
Les documents postgres recommandent en fait le contraire, de cette façon, seuls les utilisateurs du système peuvent accéder à postgres, et il y a un mot de passe de moins à retenir / risque de sécurité.
googletorp

Avez-vous essayé de supprimer et de recréer l'utilisateur?
Chealion

Oui, j'ai essayé ça plusieurs fois en fait. Vous devez en quelque sorte définir le mot de passe sur désactivé car ne pas avoir de mot de passe ne suffit pas. C'est le point douloureux que je n'ai pas pu surmonter.
googletorp

Réponses:


31

La méthode la plus simple pour masquer les utilisateurs du système (si leur ID utilisateur est <500) dans la fenêtre de connexion consiste à exécuter la commande suivante:

sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool TRUE

Vous pouvez également masquer manuellement uniquement le nom d'utilisateur en exécutant

sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add '_postgres'

Pour masquer l'élément «Autres ...» de la fenêtre de connexion si nécessaire:

sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWOTHERUSERS_MANAGED -bool FALSE

2
Il s'agit d'une solution quelque peu hacky qui ne «résout» pas réellement le problème, elle masque simplement les symptômes. J'ai beaucoup d'utilisateurs différents du système pour des choses comme mysql et ainsi de suite, et ils ne s'affichent pas parce que leur mot de passe est marqué comme '*'. C'est ce que j'essaie d'accomplir pour mon utilisateur postgres. Votre solution serait mauvaise si j'avais d'autres utilisateurs que je voulais cacher, mais pouvoir me connecter avec d'autres utilisateurs. Je voudrais vraiment aller à la racine et résoudre ce problème au lieu de cacher le problème.
googletorp

1
Ceci est une excellente réponse, et a répondu précisément à ma question. Mais vous avez probablement raison de dire que ce n'est pas exactement la question que vous avez posée.
Bill Michell

3
Le drapeau Hide500Users ne semble plus fonctionner sous Lion. Seules les deux commandes restantes fonctionnent pour Lion
Antony

Notez que cela ne masquera pas l'utilisateur sur l'écran de démarrage initial si FileVault2 est activé.
James McMahon

12
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.


Au lieu des citations, avez-vous essayé d'échapper à l'étoile? dscl . -create /Users/test Password \*
Eric3

Tant que dscl voit un littéral "*" après "Mot de passe", tout se passe.
LaC

7

Juste au cas où vous n'auriez pas trouvé de solution viable (ou au cas où quelqu'un d'autre trouverait cette question de Google), paramétrer le shell de l'utilisateur pour l' /usr/bin/false empêcher de se connecter et le cacher de l'écran de connexion et des préférences système. Pour ce faire, utilisez la ligne de commande suivante:

sudo dscl . -change /Users/[username] UserShell /bin/bash /usr/bin/false

Et pour inverser le changement:

sudo dscl . -change /Users/[username] UserShell /usr/bin/false /bin/bash

[username]est le nom de l'utilisateur que vous souhaitez masquer ( _postgresdans votre cas, je suppose). Je ne sais pas pourquoi dsclveut d'abord l'ancienne valeur, mais c'est ce que dit la page de manuel, et cela fonctionne assez bien.


1
Cette solution est très médiocre car elle désactive le shell pour cet utilisateur, la chose même pour laquelle je veux l'utiliser. Si je veux redémarrer la base de données, etc.
googletorp

@googletorp: Vous pouvez toujours faire à sudo -s -u _postgrespartir d'un compte administrateur pour obtenir un shell en tant que _postgres; cela fonctionnera même si le sien UserShellest réglé sur /usr/bin/false. De plus, le fait de définir son mot de passe sur "pas de mot de passe", comme vous avez essayé de le faire, ne désactive pas également le compte?
zneak
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.