1

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

我尝试了类似的东西

grep :x:0: passwd | grep -v root:x: | awk -F : '{ print $1 }' | xargs userdel

但我收到错误 userdel: user homer is current login 即使我以 root 身份登录,而不是 homer。我想这个错误来自他们的共享和 ID。

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

4

3 回答 3

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解决这个问题。直接用vimor编辑sed是个坏主意。

考虑https://serverfault.com/https://unix.stackexchange.com/来解决此类问题。

于 2013-09-11T19:03:35.947 回答
2

您可以使用以下 sed 命令:

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

或者

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

这将修改文件。

于 2013-09-11T19:05:21.703 回答
2

这是一个技巧: userdel -rf username

此命令向您显示:

userdel: user XXX is currently used by process 1

但用户名已删除

于 2015-10-12T12:19:25.187 回答