如何找出使用者屬於哪個包?
在 Linux 發行版中,一些軟體包會創建使用者帳戶。
如何確定哪個包創建了給定使用者?
我想專門了解 Fedora 和 Ubuntu,但歡迎其他發行版的答案。
在基於 Debian 的系統(包括 Ubuntu)上,軟體包使用維護者腳本創建使用者,通常是
postinst
. 因此,一種方法可能是通過這些腳本 grep:grep -R --include='*.postinst' -e useradd -e adduser /var/lib/dpkg/info/
當然,這假設該
postinst
腳本尚未被刪除(手動刪除或因為您解除安裝了有問題的軟體包)。Debian 政策似乎有利於
postinst
:$$ Y $$如有必要,您必須安排您的包
adduser
在preinst
orpostinst
腳本中創建使用者或組(同樣,如果可能,後者是首選)。包維護者也可以使用
preinst
,只要adduser
是預依賴項。該政策還將我們引向另一個帳戶來源:
base-passwd
包裹,如前一段所述:如果你需要一個靜態分配的 id,你必須向維護者索要一個使用者或組 id
base-passwd
,並且在分配給你之前不能釋放包。一旦你被分配了一個,你必須要麼使包依賴於包的版本,base-passwd
其中 id 出現在/etc/passwd
or中/etc/group
,或者安排你的包創建使用者或組本身,並adduser
在其preinst
or中使用正確的 id(使用 )postinst
。(postinst
如果可能,最好在 中進行,否則將需要對 adduser 包進行預依賴。)
base-passwd
文件(或/usr/share/doc/base-passwd/users-and-groups.txt.gz
)/usr/share/doc/base-passwd/users-and-groups.html
說:The Debian base-passwd package contains the master versions of /etc/passwd and /etc/group. The update-passwd tool keeps the entries in these master files in sync on all Debian systems. They comprise only "global static" ids: that is, those which are reserved globally for the benefit of packages which need to include files owned by those users or groups, or need the ids compiled into binaries.
包含的使用者/組是(從 grep out
/usr/share/doc/base-passwd/users-and-groups.txt.gz
):使用者(通常有相應的組)
root man majordom irc gdm daemon lp postgres gnats saned bin mail www-data nobody klog sys news backup messagebus syslog sync uucp operator postfix games proxy list haldaemon
組(沒有相應的使用者)
adm fax audio staff sshd tty voice src users fetchmail disk cdrom shadow lpadmin cupsys kmem floppy utmp sasl nogroup dialout tape video scanner dip sudo plugdev ssh
軟體包 README (
/usr/share/doc/base-passwd/README
) 還列出了一些 UID 在 60000-64999 範圍內的使用者,並聲明這些使用者是由各自的軟體包創建的。