Remover senha do usuário no OSX

5

Por mais que eu gostaria de descobrir o problema, neste ponto muito tempo foi investido na exclusão de uma chave estúpida quando eu já tinha uma solução (a criação de linha de comando) que funciona. Vou apagar o usuário e executar os comandos de que preciso. Ainda seria maravilhoso ter uma resposta, mas não acho que isso vá acontecer.

Eu tenho uma rede de escravos anexada ao buildbot , cada um com uma conta de usuário buildbot. Eu gostaria que suas contas não tivessem senhas (leia: não uma senha vazia). Eu fiz isso com sucesso em uma das caixas como uma grande conseqüência de criar remotamente o usuário e não definir a senha no procedimento.

Duas outras máquinas OSX que eu configurei através da GUI têm senhas, e eu estou querendo saber se existe uma maneira de remover a senha sem deixá-la vazia. Analisei um pouco da documentação para dscl e passwd , mas eles não têm as opções que estou procurando. Eu poderia configurá-los para ser uma seqüência aleatória de números. Isso seria tão eficaz? Minha descrição é equivalente a ter uma senha vazia e bloquear a conta ( como neste disscussion para linux )? Se sim, como faço para bloquear uma conta do OSX?

A segunda parte da minha pergunta é em relação ao modo como criei originalmente os usuários. Abaixo estão os comandos e eles parecem funcionar bem, mas eu me pergunto se estou perdendo alguma configuração importante - o buildslave começou e executou trabalhos.

sudo dscl . -create /Users/buildbot
sudo dscl . -create /Users/buildbot UserShell /bin/bash
sudo dscl . -create /Users/buildbot RealName "BuildBot"
sudo dscl . -create /Users/buildbot UniqueID <ID>
sudo dscl . -create /Users/buildbot PrimaryGroupID 61
sudo dscl . -create /Users/buildbot NFSHomeDirectory /Users/buildbot
sudo mkdir /Users/buildbot
sudo chown buildbot /Users/buildbot

EDIT : Para as máquinas que já tinham contas com senhas criadas através das Preferências do Sistema, os comandos sugeridos por Dan Black não apagam a senha,

sudo dscl . -delete /Users/buildbot Password
sudo dscl . -read /Users/buildbot Password

A saída para o segundo comando é

Password: *******

Continuando como se a senha fosse excluída, eu corro

sudo dscl . -create /Users/buildbot Password '*'
su buildbot

E a senha anterior acessa a conta. Isso está no OSX 10.5.8 e 10.6.8.

sudo dscl . -change /Users/buildbot Password 'OLDPASS' '*'
su buildbot

Isso também não altera a senha, e o OLDPASS pode trocar de usuário quando solicitado pela senha.

Aqui está a saída completa do par de valores-chave para o usuário com o qual estou tendo problemas --criado por meio das preferências de sistema. Para esclarecer uma inconsistência, esta máquina usa o usuário 'desenvolvedor' e não 'buildbot', mas os comandos anteriores foram todos feitos da mesma forma com a substituição óbvia

Amoy:~ lyn$ sudo dscl . -read /Users/developer
dsAttrTypeNative:_writers_hint: developer
dsAttrTypeNative:_writers_jpegphoto: developer
dsAttrTypeNative:_writers_LinkedIdentity: developer
dsAttrTypeNative:_writers_passwd: developer
dsAttrTypeNative:_writers_picture: developer
dsAttrTypeNative:_writers_realname: developer
dsAttrTypeNative:_writers_UserCertificate: developer
AppleMetaNodeLocation: /Local/Default
AuthenticationAuthority: ;ShadowHash; ;Kerberosv5;;developer@LKDC:SHA1.08FF6FDC52096FD6C53DEDEE75A2F9315F964B22;LKDC:SHA1.08FF6FDC52096FD6C53DEDEE75A2F9315F964B22;
AuthenticationHint:
 developer for auto testing
GeneratedUID: BF95A834-A7F1-4DDD-8DFB-6B80B8120CA7
NFSHomeDirectory: /Users/developer
Password: ********
Picture:
 /Library/User Pictures/Fun/Flippers.tif
PrimaryGroupID: 20
RealName: Developer
RecordName: developer
RecordType: dsRecTypeStandard:Users
UniqueID: 512
UserShell: /bin/bash
    
por nlucaroni 10.01.2012 / 17:24

2 respostas

2

Eu acho que o problema que você está tendo com a resposta do @Daniel Beck é que a senha não é armazenada no atributo Password do registro do usuário, mas como um arquivo de hash shadow em / var / db / shadow / hash / USERGUID, e o atributo AuthenticationAuthority ainda aponta para isso. Isso parece funcionar para mim:

sudo dscl . -delete /Users/buildbot AuthenticationAuthority
buildbotGUID=$(dscl . -read /Users/buildbot GeneratedUID | awk '{print $2}')
sudo rm "/var/db/shadow/hash/$buildbotGUID" "/var/db/shadow/hash/$buildbotGUID.state"

Idealmente, você também deve remover o principal Kerberos da conta (os clientes OS X executam seu próprio território Kerberos "local" e ocasionalmente ficam sob o mesmo plano). Mas isso é um pouco mais complicado, e eu acho que depende de qual versão do OS X você está usando.

BTW, se o acima não funcionar, tente isto:

sudo dscl . -create /Users/buildbot AuthenticationAuthority ";DisabledUser;"
    
por 11.01.2012 / 00:43
2

Você precisa definir a senha para um único caractere * (asterisco, estrela) usando dscl .

sudo dscl . -create /Users/buildbot Password '*'

Certifique-se de escapar ou citar (como mostrado) para que ele não seja interpretado pelo seu shell.

Isso (quando lido) não será exibido como ******** como qualquer outra senha, mas como * , que significa apenas "sem senha".

    
por 10.01.2012 / 19:08