Ocultar usuários da tela de logon do Mac OS X Snow Leopard

25

De alguma forma, eu consegui definir um passwd para o meu usuário _postgres no meu sistema operacional em vez de configurá-lo na função postgres que eu tenho como meu superusuário / root. De qualquer forma desde então, eu tenho lutado com esse usuário aparecendo na seção de conta e tela de login, o que eu realmente gostaria de evitar. Eu li alguns documentos sobre isso, e definir a senha para * deve ser tudo o que é necessário para corrigir isso. Mas depois de várias tentativas fazendo isso com e sem dscl sem sucesso, cheguei a um ponto em que não sei mais o que fazer.

Eu não achei que seria difícil fazer isso, mas claramente estou sentindo falta de algo, então como você faz isso?

    
por googletorp 13.11.2009 / 17:52

3 respostas

31

O método mais fácil para ocultar usuários do sistema (se o ID do usuário for < 500) na janela de login é executar o seguinte comando:

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

Como alternativa, você pode ocultar manualmente apenas o nome de usuário executando

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

Para ocultar o item "Outros ..." da janela de login, se necessário:

sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWOTHERUSERS_MANAGED -bool FALSE
    
por 13.11.2009 / 22:29
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

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 não funcionará.

EDIT : Eu acidentalmente consegui recriar a situação do googletorp de não ser capaz de esconder um usuário definindo sua senha para "*", e descobri como consertá-lo. Desta 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, dsimport cria uma propriedade AuthenticationAuthority para o usuário e define a propriedade password como o hash de sombra de * (que aparece como ******** em dscl, como em todas as 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, em seguida, desativar a senha:

sudo dscl . delete /Users/test AuthenticationAuthority
sudo dscl . create /Users/test Password "*"

Isso esconde o usuário.

    
por 30.12.2010 / 20:54
7

Caso você não tenha encontrado uma solução viável (ou caso alguém encontre essa pergunta no Google), a configuração do shell do usuário para /usr/bin/false impede que ele efetue login e a oculta da tela de login e das preferências do sistema. Para fazer isso, use a seguinte linha de comando:

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

E para reverter a alteração:

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

Em que [username] é o nome do usuário que você deseja ocultar ( _postgres no seu caso, presumo). Eu não sei porque dscl quer o valor antigo primeiro, mas é o que diz a manpage, e funciona muito bem.

    
por 29.03.2010 / 03:02