显示 root 的 UID 和 GID

显示 root 的 UID 和 GID

我们有一个用户帐户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:::

也许还有fooin的附加条目/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,如果存在的话)。

使用vipwvigr比直接编辑文件更安全,因为这些命令将在编辑之前创建文件的副本,并在用编辑后的副本替换原始文件之前进行一些健全性检查。

一旦从 中删除帐户/etc/passwd,您就可以对用户的主目录和本地邮件池(即/home/foo和 )执行任何您想要的操作/var/mail/foo。通常,您只想删除它们,除非有某种原因需要存档它们。

您还需要检查作业调度程序;布局可能略有不同,但至少在 Debian 系统上,有目录atjobs,atspoolcrontabsin :检查其中任何一个中/var/spool/cron/是否提及用户,并删除任何此类文件。foo

相关内容