Apt

如何找出使用者屬於哪個包?

  • July 19, 2020

在 Linux 發行版中,一些軟體包會創建使用者帳戶。

如何確定哪個包創建了給定使用者?

我想專門了解 Fedora 和 Ubuntu,但歡迎其他發行版的答案。

在基於 Debian 的系統(包括 Ubuntu)上,軟體包使用維護者腳本創建使用者,通常是postinst. 因此,一種方法可能是通過這些腳本 grep:

grep -R --include='*.postinst' -e useradd -e adduser /var/lib/dpkg/info/

當然,這假設該postinst腳本尚未被刪除(手動刪除或因為您解除安裝了有問題的軟體包)。


Debian 政策似乎有利於postinst

$$ Y $$如有必要,您必須安排您的包adduserpreinstorpostinst腳本中創建使用者或組(同樣,如果可能,後者是首選)。

包維護者也可以使用preinst,只要adduser是預依賴項。

該政策還將我們引向另一個帳戶來源:base-passwd包裹,如前一段所述:

如果你需要一個靜態分配的 id,你必須向維護者索要一個使用者或組 id base-passwd,並且在分配給你之前不能釋放包。一旦你被分配了一個,你必須要麼使包依賴於包的版本,base-passwd其中 id 出現在/etc/passwdor中/etc/group,或者安排你的包創建使用者或組本身,並adduser在其preinstor中使用正確的 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 範圍內的使用者,並聲明這些使用者是由各自的軟體包創建的。

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