कैसे जांचें कि किस पैकेज ने एक उपयोगकर्ता बनाया है?


14

यह संदेह है कि कुछ पैकेज में स्क्रिप्ट स्थापित समय पर चलती हैं जो उपयोगकर्ता खाते बनाते हैं /etc/passwd। मैं कैसे जांच सकता हूं कि किस पैकेज ने एक विशिष्ट उपयोगकर्ता बनाया है?

जवाबों:


16

यह यथोचित रूप से मज़बूती से काम करेगा यदि पैकेज 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और खोज करता है । परिणाम को sed के लिए पाइप किया जाता है, इसलिए यह स्क्रिप्ट फ़ाइल के पूर्ण नाम के बजाय केवल पैकेज का नाम देता है।postinstdpkgadduseruseradd

व्याख्या

  • 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यहाँ उपयोग करने की तुलना में खोज करने के लिए एक तेज़ और तेज़ तरीका सुझाने के लिए @ मुरु का धन्यवाद :)


आपको preinstउस स्क्रिप्ट में उपयोगकर्ताओं को बनाने वाले कुछ पैकेजों की जाँच करनी चाहिए । लेकिन मुझे विचार आता है इसलिए मैं इसे स्वीकार करूंगा।
सायकर

@ चेकर हाँ धन्यवाद :) मैं संपादित करूँगा ... मैं इसे अब देख रहा हूँ कि क्या मैं उन सभी को पकड़ सकता हूँ
Zanna

grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'find -exec grepबात को आसान बनाने के लिए ।
मुरु

धन्यवाद @ मरमू जो कमाल का है ... (अब मुझे basename -sवाइल्डकार्ड / रेगेक्स ... स्वीकार करने की ज़रूरत है) तो मैं इसे प्री एंड पोस्ट इंस्टिक्स प्रत्यय से काट सकता हूं (लेकिन मुझे एडुसर स्क्रिप्ट नहीं मिली क्योंकि श्रुति इतनी सिकुड़ गई )
Zanna

@ ज़ेन डेबियन पॉलिसी की सिफारिश करती है postinst, इसलिए यह संभव नहीं है कि आपको कोई ऐसा उपयोग मिल जाए preinst(लेकिन मुझे लगता है कि दुर्लभ मामला मौजूद हो सकता है)।
मूरू

15

यहां सामान्य adduserउपयोगकर्ताओं और समूहों के लिए एक महत्वपूर्ण अपवाद है: जो डिफ़ॉल्ट रूप से उबंटू के साथ आते हैं। ये 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 रेंज में यूआईडी के साथ कुछ उपयोगकर्ताओं को भी सूचीबद्ध करता है, और बताता है कि ये संबंधित पैकेज द्वारा बनाए गए हैं।

और देखें:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.