如何删除拥有uid 0的用户?

时间:2013-09-11 18:48:01

标签: linux bash unix sysadmin etcpasswd

我应该清除除root之外ID为0的所有用户。例如,我的passwd文件包含ID为0的用户root和ID为0的用户本垒打。

我试过像

这样的东西
grep :x:0: passwd | grep -v root:x: | awk -F : '{ print $1 }' | xargs userdel

但我收到错误userdel:用户本垒打当前已登录,即使我以root身份登录,而不是本垒打。这个错误来自他们的共享和ID,我猜想。

这有什么办法吗?我应该只编辑passwd和shadow文件吗?否则,有没有办法强制id 0是唯一的,这样我们就可以保证不会创建id为0的其他用户?感谢。

3 个答案:

答案 0 :(得分:8)

“homer”和“root”是同一个帐户。您可以为单个帐户拥有多个用户名。另请参阅https://unix.stackexchange.com/questions/49993/another-account-with-same-uid-as-root-gets-prompted-to-set-new-password-for-root

您需要vipwvipw -s来解决此问题。直接使用vimsed进行编辑是个不错的主意。

考虑https://serverfault.com/https://unix.stackexchange.com/以了解此类此类未来的问题。

答案 1 :(得分:2)

您可以使用此sed命令:

sed '/^[^:]\+:x:0:/{/^root:/!d}' /etc/passwd

或者

sed -i '/^[^:]\+:x:0:/{/^root:/!d}' /etc/passwd

哪会修改文件。

答案 2 :(得分:2)

这是一个诀窍: userdel -rf username

此命令显示:

userdel: user XXX is currently used by process 1

但用户名已删除