我应该清除除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的其他用户?感谢。
答案 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
您需要vipw
和vipw -s
来解决此问题。直接使用vim
或sed
进行编辑是个不错的主意。
考虑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
但用户名已删除