จะตรวจสอบแพ็คเกจที่สร้างผู้ใช้ได้อย่างไร?


14

/etc/passwdเป็นที่น่าสงสัยว่าแพคเกจบางคนมีการเรียกใช้สคริปต์ที่ติดตั้งเวลาซึ่งสร้างบัญชีผู้ใช้ใน ฉันจะตรวจสอบแพ็คเกจที่สร้างผู้ใช้เฉพาะได้อย่างไร

คำตอบ:


16

สิ่งนี้จะทำงานได้อย่างน่าเชื่อถือหากติดตั้งแพ็คเกจผ่านdpkg(รวมถึงapt install) ดูคำตอบของ muruสำหรับรายการผู้ใช้ที่สร้างขึ้นในการติดตั้ง Ubuntu เริ่มต้นและแพ็คเกจที่สร้างขึ้น สำหรับผู้ใช้เหล่านั้นวิธีนี้จะไม่สร้างผลลัพธ์ใด ๆ

คุณสามารถใช้คำสั่ง:

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ส่วนขยาย

ขอบคุณ @muru สำหรับการแนะนำผู้ค้นหาและวิธีการค้นหาที่เร็วกว่าการใช้findที่นี่ :)


คุณควรตรวจสอบpreinstด้วยเนื่องจากมีแพ็คเกจบางอย่างที่สร้างผู้ใช้ในสคริปต์นั้น แต่ฉันได้รับความคิดดังนั้นฉันจะยอมรับมัน
Cyker

@Cyker ใช่ขอบคุณ :) ฉันจะแก้ไข ... ฉันกำลังมองหาในตอนนี้เพื่อดูว่าฉันสามารถจับพวกเขาทั้งหมด
Zanna

grep -Rl 'adduser.*<user>' /var/lib/dpkg/info --include='*inst'เพื่อทำให้find -exec grepสิ่งนั้นง่ายขึ้น
muru

ขอบคุณ @muru ที่ยอดเยี่ยม ... (ตอนนี้ฉันต้องbasename -sยอมรับ wildcard / regex ... ) ดังนั้นฉันสามารถทำให้มันตัดออกก่อนและโพสต์ต่อท้าย inst instes (แต่ฉันไม่พบสคริปต์ preinst ใด ๆ กับ adduser ดังนั้นยัก )
Zanna

@Zanna the นโยบายเดเบียนแนะนำpostinstดังนั้นจึงไม่น่าที่คุณจะพบสิ่งที่ใช้preinst(แต่ฉันคิดว่ากรณีที่หายากอาจมีอยู่)
muru

15

มีข้อยกเว้นที่สำคัญสำหรับ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) ยังแสดงรายการผู้ใช้บางคนที่มี UID ในช่วง 60000-64999 และระบุว่าสิ่งเหล่านี้สร้างขึ้นโดยแพ็คเกจที่เกี่ยวข้อง

ดูเพิ่มเติมที่:

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.