是否可以从 /etc/passwd 中“隐藏”一个帐户?

RSF*_*on7 3 security users

一个典型的 Linux 系统不仅有系统的实际用户帐户,还有各种系统帐户。

是否有类似/etc/passwd守护进程的文件,或其他可以定义帐户的资源?

我听说可以将帐户伪装成服务帐户,我正在尝试在计算机中找到这样的帐户。

Gil*_*il' 10

守护进程用户和有血有肉的用户列在同一个文件中。“类似于/etc/passwd守护进程的文件”是/etc/passwd.

人类与系统用户没有正式的定义。内核并不关心(除了授予 UID 0 的用户很多权限)。大多数管理命令也不关心。一些典型的区别是:

  • 人类用户有一个真实的名字,比如“John Doe”,而系统用户有一个描述性的名字,比如“Nasal daemon”或者根本没有。
  • 人类用户有一个真正的登录 shell(例如/bin/sh/bin/bash/bin/csh。一些系统用户有一个 shell(几乎总是/bin/sh),其他人没有,这取决于他们的使用方式(例如su foo需要foo有一个 shell)。
  • 人类用户通常有密码——但情况并非总是如此,例如仅远程用户可能只有 SSH 密钥。请注意,在现代 unices 上,密码不在/etc/passwd其他文件中,例如/etc/shadow.
  • 人类用户的主目录通常在/home(或某些特定于站点的位置)下,而系统用户的主目录通常不在下/home并且可能不存在(但也有例外)。
  • 大多数站点为系统用户指定一个用户 ID 范围,为人类用户指定一个不相交的范围。保留 100–65533 或 500–65533 或 1000–65533 是典型的,大多数发行版都设置为从 500 或 1000 开始分配真实用户 ID。

在帐户在多台机器上共享的站点上,通常有一个中央服务器,其中包含可通过NISLDAP访问的用户列表。该passwd条目/etc/nsswitch.conf指定在哪里查找用户信息。系统用户在本地/etc/passwd和全网数据库中的真实用户是很常见的,但有时全网数据库中有系统用户(为了强制一致的UID,这有利于服务器和数据复制),有时还有本地文件中的人类用户(即使在网络中断时也让他们登录)。

伪装成系统用户的可人工访问的帐户通常没有真实姓名,但具有登录 shell,以及密码集或 SSH 密钥,同时具有系统范围内的用户 ID。事实上,使用一个实际的系统帐户会是一个更好的伪装,它的删除会导致某些服务停止工作。但是你不能有任何硬性规则来检测潜在的攻击:根据定义,攻击者不遵守规则。