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?
Essayez de taper ce qui suit dans un terminal
Sudo userdel -r atc
Cela devrait supprimer toutes les instances de l'utilisateur
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 passwd
vous indiquera où votre système recherche des utilisateurs. Les valeurs par défaut communes sont files
et compat
name__, bien que les configurations plus complexes puissent avoir plusieurs valeurs, y compris des valeurs telles que ldap
name__, dns
et winbind
name__. files
désigne les fichiers standard comprenant /etc/passwd
.
Je ne suis pas aussi clair sur la signification exacte de compat
name__, mais ma lecture de la page de manuel nsswitch.conf
suggère qu'il s'agit d'une combinaison de files
et de nis
name__. nis
est le service d'informations résea qui est en grande partie remplacé ces jours-ci mais peut affecter votre système.
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.