web-dev-qa-db-ja.com

どのパッケージがユーザーを作成したかを確認する方法は?

一部のパッケージには、/etc/passwdにユーザーアカウントを作成するスクリプトがインストール時に実行されていることが疑われています。どのパッケージが特定のユーザーを作成したかを確認するにはどうすればよいですか?

14
Cyker

パッケージがdpkgapt installを含む)を介してインストールされた場合、これは合理的に確実に機能します。デフォルトのUbuntuインストールで作成されたユーザーのリストとそれらを作成するパッケージについては、 muruの答え を参照してください。これらのユーザーの場合、このメソッドは出力を生成しません。

次のコマンドを使用できます。

grep -RlE '(adduser|useradd).*systemd' /var/lib/dpkg/info --include='*inst' | sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'

<user>を関心のあるユーザーの名前に置き換えます。たとえば、systemd

これは、preinstまたはpostinstコマンドと問題のユーザーを見つけるために、dpkgが認識しているすべてのパッケージのadduserおよびuseraddスクリプトを検索します。そのユーザーを作成する責任があります。結果はsedにパイプされるため、スクリプトファイルのフルネームではなくパッケージ名のみが返されます。

説明

  • grep -RlEは再帰的に検索し、一致するファイルの名前のみを出力します。拡張正規表現を使用します
  • '(adduser|useradd).*<user>' /var/lib/dpkg/info --include='*inst'adduserまたはuseraddコマンドと同じ行で検索するユーザーを検索します(.*はそれらの間の文字に一致し、コマンドオプションをキャッチします)名前がdpkgで終わるファイルで、instがスクリプトを保存するディレクトリ
  • sed -r 's:.*/(.*)\.[-a-z]+inst:\1:'完全パスの最後の/および.preinstまたは.postinst拡張子を含む前のすべてを削除します

ここでfindを使用するよりもすっきりとした高速な検索方法を提案してくれた@muruに感謝します:)

16
Zanna

通常のadduser-に追加されたユーザーとグループには、デフォルトでUbuntuに付属しているものの重要な例外があります。これらはbase-passwdパッケージで提供されます。このパッケージによって追加されたユーザーとグループのリストは、/usr/share/doc/base-passwd/users-and-groups.{html,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)は、60000〜64999の範囲のUIDを持つ一部のユーザーを一覧表示し、これらがそれぞれのパッケージによって作成されたことを示します。

参照:

15
muru