鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 背景: Centos7上需要創建一個用戶leojiang,而用戶時間不純在系統上,但是還是報錯說用戶已經存在。 1、假設您正在嘗試添加一個名為“leojiang”的用戶並且您收到以下錯誤。 [root@leo]# useradd -m -d /h ...
鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站
背景:
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