背景:
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)中获取
- getent命令可以用来察看系统的数据库中的相关记录
[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是一款用以取代ldap和AD的软件,ldap客户端部署sssd,是用来启用ldap认证。
- /etc/nsswitch.conf 来告诉name service switch需要查找那些地方来给登录的用户服务。
- files sss 表示先查找/etc/passwd, /etc/group等文件,没有的话再查找sss模块。
[root@leo]# cat /etc/nsswitch.conf | grep passwd
#passwd: db files nisplus nis
passwd: files sss
通过上面提到的 sss ,NSS 库被指示在 LDAP 中搜索用户(sss被配置为 LDAP 客户端)。现在很清楚,LDAP 中存在用户leojiang,这就是您无法在系统中创建相同用户的原因。
现在我们找到了问题的根本原因。现在您可以执行以下操作之一来解决问题:
5.2. 从 /etc/nsswitch.conf 文件中删除 ldap 引用,以便 NSS 库不会在 ldap 服务器中查找用户。
5.3. 将用户原样保留在 ldap 中,但在系统中创建相同的用户!让我解释一下我们是如何做的。
5.4. 关闭sssd ladp客户端服务,之后便可创建用户,创建完成后再启动sssd即可
在某些情况下,即使 ldap 中存在相同的用户名,您仍然需要创建系统用户。是的,我们可以使用 luseradd 命令来完成。
[root@leo]# yum install libuser
[root@leo]# luseradd -m -d /home/addmunx -s /bin/sh leojiang
注意:CentOS/Redhat 默认安装了这个命令。如果找不到,请尝试使用上述命令安装它。
[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
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70003733/viewspace-2888411/
,如需转载,请注明出处,否则将追究法律责任。