我创建了一个具有非唯一 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