我们有一个用户帐户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 中。
我建议不要使用类似的工具
userdel
,因为不清楚为什么foo
有 uid0
并且您不想意外删除 root。而是编辑
/etc/passwd
自身并删除foo
. 确保 root 本身具有正确的条目:对 做同样的事情
/etc/group
。删除条目foo
并检查条目root
:然后检查密码输入
/etc/shadow
,删除foo
,检查root
输入。条目root
应类似于:foo
也许in有其他条目/etc/group
。可能的例子:对于干净的工作,也请删除这些条目中的
foo
相应foo,
项。如果
/home/foo
存在,请稍后检查并删除它。目前
foo
与root
. 您不会找到 foo 拥有的进程或文件,因为它们都属于root
. 文件和进程所有者是通过他们的 uid 而不是他们的名字注册的。所以所有 uid 为 0 的进程或文件都以 root 身份出现。(或者,所有根进程和文件都可以显示为foo
而不是root
)。您可以使用
vipw
删除 和 中的foo
帐户/etc/passwd
行/etc/shadow
。完成此操作后,该帐户在技术上就消失了。根据
vipw
版本,一旦您使用它对 进行更改/etc/passwd
,它可能会提示您:“您也想编辑/etc/shadow
吗?(Y/N)”或者只是建议使用vipw -s
to edit/etc/shadow
。许多 Linux 发行版都有相应
vigr
的编辑命令/etc/group
(/etc/gshadow
如果存在,还有 )。使用
vipw
andvigr
比直接编辑文件更安全,因为这些命令将在编辑之前制作文件的副本,并在用编辑后的副本替换原始文件之前进行一些完整性检查。从 中删除帐户后
/etc/passwd
,您可以对用户的主目录和本地邮件假脱机执行任何您想要的操作,即/home/foo
和/var/mail/foo
. 通常,您只想删除它们,除非有某种理由将它们归档。您还需要检查作业调度程序;布局可能会有所不同,但至少在 Debian 系统上,有目录
atjobs
,atspool
并且crontabs
在/var/spool/cron/
: 检查其中任何一个提到的用户foo
,并删除任何此类文件。