Tente digitar o seguinte em um terminal
sudo userdel -r atc
Isso deve remover todas as instâncias do usuário
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?
Tente digitar o seguinte em um terminal
sudo userdel -r atc
Isso deve remover todas as instâncias do usuário
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.
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.