我们有一个用户帐户foo
,它以某种方式与 root 的 uid、guid 和组绑定在一起。当我运行时id foo
它会返回所有根 ID 信息。
id foo
uid=0(root) gid=0(root) groups=0(root)
该用户帐户适用于不再在这里的老同事,我想从服务器中完全删除他们的帐户。运行ps -ef | grep foo
不会为该用户返回任何进程,因此我确信他们的用户名下没有运行任何内容。
运行userdel foo
表明用户帐户不存在,因为我确定它看到的帐户是 root 且 uid=0 但我仍然看到它所foo
在的/etc/passwd
帐户foo:x:0:0::/home/foo:/bin/bash
我需要采取哪些步骤才能注销该帐户?我需要 usermod 并更改 uid、gid 和组吗?如果我选择一个未使用的随机 uid,即 uid=1099(foo),会破坏任何东西吗?
我在 CentOS 7 上,服务器连接到 Active Directory,但这个 foo 帐户是 Linux 服务器上的本地帐户。在我们将 Linux 连接到 AD 之前,用户已被终止,因此该帐户不再存在于 Active Directory 中。
答案1
我建议不要使用类似的工具,userdel
因为不清楚为什么foo
有 uid0
并且你不想意外删除 root。
而是编辑/etc/passwd
自身并删除 的条目foo
。确保 root 本身具有正确的条目:
root:x:0:0:root:/root:/bin/bash
对 执行同样的操作/etc/group
。删除 的条目foo
并检查 的条目root
:
root:x:0:
然后检查密码输入/etc/shadow
,删除foo
,检查root
输入。的条目root
应类似于:
root:SOMEPASSWORDCODE:17219:0:99999:7:::
也许还有foo
in的附加条目/etc/group
。可能的例子:
audio:x:29:foo,pulse
为了干净的工作,也删除这些条目中的foo
相应内容foo,
。
如果/home/foo
存在,检查后删除。
目前foo
与 相同root
。您不会找到 foo 拥有的进程或文件,因为它们都属于root
.文件和进程所有者通过其 uid 进行注册,而不是通过其姓名进行注册。因此,所有 uid 为 0 的进程或文件都显示为 root。 (或者,所有根进程和文件都可以显示为foo
而不是root
)。
答案2
您可以使用和来删除该帐户vipw
的行。完成此操作后,该帐户从技术上讲就消失了。foo
/etc/passwd
/etc/shadow
根据vipw
版本的不同,一旦您使用它对 进行更改/etc/passwd
,它可能会提示您:“您也想编辑吗/etc/shadow
?(Y/N)”或者只是建议使用它vipw -s
来编辑/etc/shadow
。
vigr
许多 Linux 发行版都有相应的编辑命令/etc/group
(以及/etc/gshadow
,如果存在的话)。
使用vipw
和vigr
比直接编辑文件更安全,因为这些命令将在编辑之前创建文件的副本,并在用编辑后的副本替换原始文件之前进行一些健全性检查。
一旦从 中删除帐户/etc/passwd
,您就可以对用户的主目录和本地邮件池(即/home/foo
和 )执行任何您想要的操作/var/mail/foo
。通常,您只想删除它们,除非有某种原因需要存档它们。
您还需要检查作业调度程序;布局可能略有不同,但至少在 Debian 系统上,有目录atjobs
,atspool
和crontabs
in :检查其中任何一个中/var/spool/cron/
是否提及用户,并删除任何此类文件。foo