adduser diz que o usuário existe quando o usuário não existe

5

Como o assunto diz, estou tentando adicionar um novo usuário. Quando eu executo o comando, ele diz que o usuário já existe. Mas procurar em / etc / passwd, / etc / group e / etc / shadow mostra que o usuário não existe.

Executar o comando na minha máquina local funciona bem. Estou executando o Ubuntu 11.10 em ambos.

Aqui estão os meus comandos de terminal e saída:

root@ws-prod-www-01:~# useradd -s /sbin/nologin -m -d /var/www/html/atc -g 33 -u 10141 atc
useradd: user 'atc' already exists
root@ws-prod-www-01:~# grep atc /etc/passwd
speech-dispatcher:x:111:29:Speech Dispatcher,,,:/var/run/speech-dispatcher:/bin/sh
root@ws-prod-www-01:~# grep atc /etc/shadow
speech-dispatcher:!:15259:0:99999:7:::
root@ws-prod-www-01:~# grep atc /etc/group
root@ws-prod-www-01:~# 

Eu também tentei:

root@ws-prod-www-01:~# adduser --shell /sbin/nologin --home /var/www/html/atc --gid 33 --uid 10141 atc
Warning: The home dir /var/www/html/atc you specified already exists.
adduser: The user 'atc' already exists.
root@ws-prod-www-01:~# 

Alguma opinião?

    
por David R. 16.02.2012 / 20:29

3 respostas

6

Tente digitar o seguinte em um terminal

sudo userdel -r atc

Isso deve remover todas as instâncias do usuário

    
por Scott Stookey 16.02.2012 / 20:54
9

Existe algum motivo para você especificar o uid em vez de permitir que o sistema escolha um para você? Você pode ver se seu ID escolhido está em uso fazendo grep '10141' /etc/passwd . Se for esse o caso, a mensagem de erro é certamente um pouco enganosa: /

Também é bem possível que o seu sistema reconheça usuários que não estejam em /etc/passwd - por exemplo, usando o LDAP. Uma maneira rápida de testar isso é fazer id atc e ver se o sistema o reconhece. Outra forma seria getent passwd atc , que também mostrará aos usuários que o sistema reconhece quem não está em /etc/passwd . Ou você pode verificar novamente se o uid está em uso com getent passwd 10141 . (Você também pode executar getent passwd para obter a lista completa de entradas.) Mais sobre o getent .

Para ver de onde esses usuários podem vir você pode ver /etc/nsswitch.conf ( página man ) - a linha iniciando passwd mostrará onde seu sistema está procurando usuários. Os valores padrão comuns são files e compat , embora configurações mais complexas possam ter vários valores, incluindo valores como ldap , dns e winbind . files significa os arquivos padrão, incluindo /etc/passwd .

Não sou muito claro sobre o significado exato de compat , mas minha leitura da página nsswitch.conf man sugere que é uma combinação de files e nis . nis é o Serviço de informações sobre a rede que é amplamente substituído atualmente, mas pode afetar seu sistema.

    
por Hamish Downer 16.02.2012 / 23:24
0

No meu caso, o /etc/nsswitch.conf tinha isso para passwd:

passwd:     files winbind

O usuário estava no Active Directory, por isso o winbind estava vendo uma conta de usuário "existente" no AD.

Running:   # service winbind stop

Em seguida, a execução de useradd permitiu que eu adicionasse a conta de usuário.

    
por YDY 29.11.2017 / 15:44

Tags