![刪除具有非唯一 ID 的用戶](https://rvso.com/image/76428/%E5%88%AA%E9%99%A4%E5%85%B7%E6%9C%89%E9%9D%9E%E5%94%AF%E4%B8%80%20ID%20%E7%9A%84%E7%94%A8%E6%88%B6.png)
我創建了一個具有非唯一 ID 的用戶,並將-o -u 1000 -m
選項傳遞給useradd
命令。所以現在我有兩個具有相同 id 但具有不同名稱和不同主目錄的使用者。
我認為這可能是創建新的乾淨環境(用於測試目的)並保留對某些開發目錄和文件的相同存取權的解決方案。
儘管使用者在自己的桌面環境中建立和登入成功,但從終端手動啟動的一個應用程式正在使用原始使用者的主目錄。所以,開始idea.sh
為scantligt_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 1000
或getent passwd 1000
,它們將僅顯示該 uid 的第一個條目。
使用userdel
或deluser
或任何類似命令來刪除第二個使用者是不安全的。
這是因為他們很可能會刪除第一的他們找到的 uid 1000 的用戶。
相反,您需要手動編輯 passwd 和群組檔案:
vipw
並vipw -s
編輯/etc/passwd
和/etc/shadow
vigr
並vigr -s
編輯/etc/group
和/etc/gshadow