鏡像下載、域名解析、時間同步請點擊
阿里巴巴開源鏡像站-OPSX鏡像站-阿里云開發者社區
背景:
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]#
- /etc/shadow 文件,用于存儲 linux 系統中用戶的密碼信息,又稱為“影子文件”。
- /etc/shadow 文件只有 root 用戶擁有讀權限,其他用戶沒有任何權限,這樣就保證了用戶密碼的安全性。
并沒有返回結果,代表這個用戶并不在密碼文件中
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:
- 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、解決方案
現在我們找到了問題的根本原因。現在您可以執行以下操作之一來解決問題:
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