Linux

“getent group”和“getent group <groupname>”之間的不一致——為什麼?

  • December 13, 2018

問題

以下怎麼可能?

$ getent group | grep docker
$ getent group docker
docker:x:600:

請注意,第一個呼叫不會返回任何內容,而第二個呼叫會返回任何內容。

grpck不報告任何問題。

一些背景

這是在我從其他人那裡繼承的 CentOS 7.6 虛擬機上,所以我不確定它的配置可能與 CentOS 預設設置不同。據我所知,VM 以某種方式連接到 LDAP(但我對此不太熟悉……)。

其實我想知道這個docker組是在哪裡定義的。至少它既不是 in/etc/group也不是 in /etc/gshadow

根據評論中的要求:

$ grep ^group /etc/nsswitch.conf
group:      files sss hesiod

@jeff-schaller 的評論讓我走上了正軌:該docker組是在 Hesiod 數據庫中定義的:

$ hesinfo docker group
docker:x:600:

正如@jeff-schaller 和@stephen-kitt 進一步指出的那樣,Hesiod 似乎不允許列出所有組(因此getent group不返回它們)但允許一個接一個地查詢它們(因此getent group docker返回團體)。

引用自:https://unix.stackexchange.com/questions/487630