系统相关
首页 > 系统相关> > Centos7系统创建用户时出现“useradd: user ‘xxxx‘ already exists”错误

Centos7系统创建用户时出现“useradd: user ‘xxxx‘ already exists”错误

作者:互联网

镜像下载、域名解析、时间同步请点击 阿里云开源镜像站

背景:

Centos7上需要创建一个用户leojiang,而用户时间不纯在系统上,但是还是报错说用户已经存在。

1、假设您正在尝试添加一个名为“leojiang”的用户并且您收到以下错误。

[root@leo]# useradd -m -d /home/addmunx -s /bin/sh leojiang
useradd: user 'leojiang' already exists

2、调查,先查看系统上是否存在这个用户leojiang

[root@leo]# cat /etc/passwd |grep leojiang
[root@leo]#

并没有返回结果,代表这个用户并不在密码文件中

3、运行getent命令从名称服务切换库(Name Service Switch)中获取

[root@leo]# getent passwd leojiang
leojiang:*:1136335162:1782600513:ADDM account to scan Unix server:/home/leojiang:/bin/bash

可以看到此用户已经存在名称服务(Name Service Switch)库的某个地方。是否注意到输出的第二列中有一些不寻常的地方?用 * 代替 x 清楚地表明用户的密码没有存储在 /etc/shadow 文件中。

4、来让我们找到它,深入研究名称服务切换库配置文件。

先了解什么是sssd:

[root@leo]# cat /etc/nsswitch.conf | grep passwd
#passwd:    db files nisplus nis
passwd:     files sss

通过上面提到的 sss ,NSS 库被指示在 LDAP 中搜索用户(sss被配置为 LDAP 客户端)。现在很清楚,LDAP 中存在用户leojiang,这就是您无法在系统中创建相同用户的原因。

5、解决方案

现在我们找到了问题的根本原因。现在您可以执行以下操作之一来解决问题:

5.1. 从 ldap 服务器中删除用户。

5.2. 从 /etc/nsswitch.conf 文件中删除 ldap 引用,以便 NSS 库不会在 ldap 服务器中查找用户。

5.3. 将用户原样保留在 ldap 中,但在系统中创建相同的用户!让我解释一下我们是如何做的。

5.4. 关闭sssd ladp客户端服务,之后便可创建用户,创建完成后再启动sssd即可

5.5、使用方法

在某些情况下,即使 ldap 中存在相同的用户名,您仍然需要创建系统用户。是的,我们可以使用 luseradd 命令来完成。

[root@leo]# yum install libuser
[root@leo]# luseradd -m -d /home/addmunx -s /bin/sh leojiang

注意:CentOS/Redhat 默认安装了这个命令。如果找不到,请尝试使用上述命令安装它。

5.6、使用方法

[root@leo]# systemctl status sssd && systemctl stop sssd
# 停止sssd服务后再创建用户即可
[root@leo]# luseradd -m -d /home/addmunx -s /bin/sh leojiang
# 创建完成后再启动sssd服务
[root@leo]# systemctl start sssd

本文转自:https://blog.csdn.net/jiangbenchu/article/details/123751909

标签:already,xxxx,exists,sssd,用户,leojiang,etc,leo,root
来源: https://www.cnblogs.com/helong-123/p/16184831.html