刪除具有非唯一 ID 的用戶

刪除具有非唯一 ID 的用戶

我創建了一個具有非唯一 ID 的用戶,並將-o -u 1000 -m選項傳遞給useradd命令。所以現在我有兩個具有相同 id 但具有不同名稱和不同主目錄的使用者。
我認為這可能是創建新的乾淨環境(用於測試目的)並保留對某些開發目錄和文件的相同存取權的解決方案。

儘管使用者在自己的桌面環境中建立和登入成功,但從終端手動啟動的一個應用程式正在使用原始使用者的主目錄。所以,開始idea.shscantligt_2仍在使用使用者的主目錄微光

這怎麼可能?為什麼這個應用程式仍然使用原始用戶的主目錄,即使我將其作為第二次使用啟動?

這是一些環境變數的內容。

$> echo $HOME
/home/scantlight_2

$> echo $USER
scantlight_2

$> cd ~
$> pwd
/home/scantlight_2

經過所有測試後,
使用命令刪除用戶“scantlight_2”是否安全userdel,或者我應該從/etc/shadow文件中手動執行此操作以避免一些衝突?

編輯:這idea.sh是「IntelliJ IDEA」IDE 的啟動腳本。我對 bin 目錄內容進行了快速遞歸grep,並且沒有使用 getent 命令。下面是我使用的命令。

grep -r -i "getent|passwd" ./idea_install/bin

謝謝。

答案1

大多數需要關心使用者名稱的程式都會getent()尋找 UID 並從那時起使用它 - 這是因為使用者是透過 uid(數字)來識別的。這個名字只不過是印刷漂亮又方便而已。

例如,運行id 1000getent passwd 1000,它們將僅顯示該 uid 的第一個條目。

使用userdeldeluser或任何類似命令來刪除第二個使用者是不安全的。

這是因為他們很可能會刪除第一的他們找到的 uid 1000 的用戶。

相反,您需要手動編輯 passwd 和群組檔案:

  • vipwvipw -s編輯/etc/passwd/etc/shadow
  • vigrvigr -s編輯/etc/group/etc/gshadow

相關內容