一部のパッケージには、/etc/passwd
にユーザーアカウントを作成するスクリプトがインストール時に実行されていることが疑われています。どのパッケージが特定のユーザーを作成したかを確認するにはどうすればよいですか?
パッケージがdpkg
(apt 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に感謝します:)
通常の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を持つ一部のユーザーを一覧表示し、これらがそれぞれのパッケージによって作成されたことを示します。
参照:
base-passwd
のソースコード -*.master
ファイルでユーザーとグループのリストを確認できます。