删除具有非唯一 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

相关内容