是否可以從 /etc/passwd 中「隱藏」帳戶?

是否可以從 /etc/passwd 中「隱藏」帳戶?

典型的Linux系統不僅具有系統的實際使用者帳戶,還具有各種系統帳戶。

是否有任何檔案(例如/etc/passwd守護程式)或其他可以定義帳戶的資源?

我聽說可以將帳戶偽裝為服務帳戶,我正在嘗試在電腦中尋找類似的帳戶。

答案1

守護程序使用者和實際使用者列在同一個檔案中。 「類似守護程式的檔案/etc/passwd」是/etc/passwd.

人類與系統使用者之間沒有正式的定義。核心並不關心(除了向 UID 0 的使用者授予很多權限之外)。大多數管理指令也不關心。一些典型的差異是:

  • 人類使用者有一個真實姓名,如“John Doe”,而係統使用者有一個描述性名稱,如“Nasal daemon”或根本沒有。
  • 人類使用者有一個真正的登入 shell (例如/bin/sh/bin/bash或)/bin/csh/bin/shsu foofoo
  • 人類用戶通常有密碼 - 但情況並非總是如此,例如僅限遠端用戶可能只有 SSH 金鑰。請注意,在現代 unice 上,密碼不在/etc/passwd其他文件中,例如/etc/shadow.
  • 人類使用者的主目錄通常位於/home(或某個特定於網站的位置),而係統使用者的主目錄通常不位於/home且可能不存在(但也有例外)。
  • 大多數站點為系統使用者指定一系列使用者 ID,為人類使用者指定一個不相交的範圍。通常保留 100–65533 或 500–65533 或 1000–65533,並且大多數發行版設定為從 500 或 1000 開始分配真實使用者 ID。

在多台電腦共享帳戶的網站上,通常有一個包含使用者清單的中央伺服器,可以透過以下方式存取NIS或者LDAPpasswd中的條目/etc/nsswitch.conf指定在哪裡尋找用戶資訊。本地有系統用戶,/etc/passwd全網資料庫有真實用戶是很常見的,但有時全網資料庫有系統用戶(為了強制UID一致,方便伺服器和資料複製),有時也有本地文件中的人類用戶(即使網路中斷也讓他們登入)。

偽裝成系統使用者的人類可存取帳戶通常沒有真實姓名,但有登入 shell、密碼集或 SSH 金鑰,同時具有系統範圍內的使用者 ID。事實上,使用實際的系統帳戶會是更好的偽裝,刪除該帳戶會導致某些服務停止運作。但你不能有任何硬性規則來偵測潛在的攻擊:根據定義,攻擊者不遵守規則。

答案2

沒有理由擁有單獨的使用者定義檔。系統使用者和真實使用者在技術上並不是分離的,而是在組織上分離的:透過取得其 UID 的範圍來分離。看看文件/etc/login.defs。我的 openSUSE 有這些條目:

SYSTEM_UID_MIN            100
SYSTEM_UID_MAX            499
UID_MIN                  1000
UID_MAX                 60000

發行版工具使用這些值來區分這兩個組。但是,如果您建立了一個 UID 300 的使用者帳戶,那麼它可能不會顯示在登入功能表中,但您可以像使用其他帳戶一樣使用該帳戶。

答案3

如果您確實想拆分用戶和系統帳戶(閱讀其他帖子上的一些評論,看起來您對此很好奇),您可以將所有系統用戶保留在files(即 /etc/passwd)資料庫中並將 people 用戶在在第二個資料庫中(有點像你正在做LDAP)。

為此,您可以使用 Berkeley DB NSS 模組(透過名為 的額外 glibc 套件在許多系統上可用nss_db)。我不確定你正在使用什麼作業系統,但這個網站提供了一些關於 Linux 的見解:http://www.linuxfromscratch.org/hints/downloads/files/nss_db.txt

這不適合膽小的人,因為文檔並不豐富,但如果您想了解更多有關此類內容如何工作的信息,那麼嘗試一下可能會很有趣(@Hauke Laging 關於實現您自己的內容的建議是也很棒)。

答案4

大多數守護程式以 root 身分運行,少數守護程式(出於安全原因,以限制其造成危害的能力)以自己的使用者身分運行。它們列在/etc/passwd文件中。大多數發行版將「系統使用者」的 UID 限制為某個值,例如 500 或 1000,以便提供線索。有些守護程式有 GECOS(使用者描述)條目,表示“守護程式”,其他守護程式有奇怪的外殼。但也存在用於 NFS 和其他用途的虛擬用戶。

相關內容