web-dev-qa-db-fra.com

adduser dit que l'utilisateur existe quand l'utilisateur n'existe pas

Comme le sujet l'indique, j'essaie d'ajouter un nouvel utilisateur. Lorsque j'exécute la commande, cela signifie que l'utilisateur existe déjà. Mais regarder dans/etc/passwd,/etc/group et/etc/shadow montre que l'utilisateur n'existe pas.

L'exécution de la commande sur ma machine locale fonctionne parfaitement. J'utilise Ubuntu 11.10 sur les deux.

Voici mes commandes de terminal et de sortie:

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:~# 

J'ai aussi essayé:

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:~# 

Des pensées?

5
David R.

Essayez de taper ce qui suit dans un terminal

Sudo userdel -r atc

Cela devrait supprimer toutes les instances de l'utilisateur

6
Scott Stookey

Y a-t-il une raison pour laquelle vous spécifiez l'ID plutôt que de laisser le système en choisir un pour vous? Vous pouvez voir si votre identifiant choisi est utilisé en faisant grep '10141' /etc/passwd. Si tel est le cas, le message d'erreur est certainement un peu trompeur: /

Il est également tout à fait possible que votre système reconnaisse les utilisateurs qui ne figurent pas dans /etc/passwd - par exemple, en utilisant LDAP. Un moyen rapide de tester cela consiste à effectuer id atc et à voir si le système le reconnaît. Un autre moyen serait getent passwd atc qui montrera également aux utilisateurs que le système reconnaît ceux qui ne sont pas dans /etc/passwd. Ou vous pouvez à nouveau vérifier si l'ID est utilisé avec getent passwd 10141. (Vous pouvez également exécuter getent passwd pour obtenir la liste complète des entrées.) En savoir plus sur getent .

/etc/nsswitch.conf ( page de manuel ) - la ligne commençant par passwdvous indiquera où votre système recherche des utilisateurs. Les valeurs par défaut communes sont fileset compatname__, bien que les configurations plus complexes puissent avoir plusieurs valeurs, y compris des valeurs telles que ldapname__, dnset winbindname__. filesdésigne les fichiers standard comprenant /etc/passwd.

Je ne suis pas aussi clair sur la signification exacte de compatname__, mais ma lecture de la page de manuel nsswitch.conf suggère qu'il s'agit d'une combinaison de fileset de nisname__. nisest le service d'informations résea qui est en grande partie remplacé ces jours-ci mais peut affecter votre système.

11
Hamish Downer

Dans mon cas, /etc/nsswitch.conf avait ceci pour mot de passe:

passwd:     files winbind

L'utilisateur se trouvait dans Active Directory. Winbind voyait donc un compte utilisateur "existant" dans AD.

Running:   # service winbind stop

Ensuite, exécuter useradd m'a permis d'ajouter le compte d'utilisateur.

0
YDY