ฉันสังเกตเห็นว่ามีรายการสำหรับผู้ใช้ man ใน/etc/passwd
ไฟล์ของฉัน วัตถุประสงค์ของผู้ใช้นี้คืออะไร?
man:x:6:12:man:/var/cache/man:/bin/sh
ฉันสังเกตเห็นว่ามีรายการสำหรับผู้ใช้ man ใน/etc/passwd
ไฟล์ของฉัน วัตถุประสงค์ของผู้ใช้นี้คืออะไร?
man:x:6:12:man:/var/cache/man:/bin/sh
คำตอบ:
man
(คำสั่งไม่ใช่ผู้ใช้) เป็นแอปพลิเคชันความช่วยเหลือ แอปพลิเคชั่นจัดเตรียม man page ไว้ในแพ็คเกจ แต่man
จำเป็นต้องรู้ว่าพวกเขาอยู่ที่ไหนและช่วยเหลืออะไรบ้าง สิ่งที่ความเร็วขึ้น - ดังนั้นman
จะไม่ค้นหาแฟ้มทั้งหมดเมื่อคุณพิมพ์man <command>
- mandb
หน้าคนเหล่านี้จะมีการจัดทำดัชนีลงในฐานข้อมูลโดยใช้คำสั่งที่เรียกว่า
ใน Ubuntu mandb
เก็บดัชนีไว้ในฐานข้อมูล GNU gdbm ที่/var/cache/man/index.db
(และภาษาเฉพาะสองสามรุ่นในไดเรกทอรีเดียวกัน) นี่คือฐานข้อมูลการแฮ็ชคีย์ - ค่าที่ไม่แตกต่างจาก memcache หรือการนำไปใช้งานอื่น ๆ อีกร้อยรายการบนแนวคิดที่คล้ายกัน มันเป็นไบนารีเบาและรวดเร็ว ฉันจะโยนตัวอย่างของวิธีการเล่นกับมันในตอนท้าย
/etc/cron.daily/man-db
การจัดทำดัชนีนี้มีกำหนดที่จะทำงานทุกวันในอูบุนตูโดย สคริปต์ทั้งหมดทำงานเป็นรูทและทำการล้างบางส่วนก่อน แต่ในตอนท้ายเราจะเห็นmandb
ว่าman
ผู้ใช้นั้นทำงาน:
# --pidfile /dev/null so it always starts; mandb isn't really a daemon,
# but we want to start it like one.
start-stop-daemon --start --pidfile /dev/null \
--startas /usr/bin/mandb --oknodo --chuid man \
$iosched_idle \
-- --no-purge --quiet
มันไม่ได้เปลี่ยนกลุ่มซึ่งเป็นสาเหตุที่ความเป็นเจ้าของกลุ่ม/var/cache/man
ทั้งหมดยังคงเป็นรูท
แต่ทำไมถึงmandb
ทำงานในฐานะผู้ใช้ที่แตกต่างออกไป? มันสามารถ (อาจ) เรียกใช้เช่นเดียวกับroot
แต่กำลังประมวลผลอินพุตจากแหล่งข้อมูลที่หลากหลาย (ดูmanpath
) การทำงานในฐานะผู้ใช้ของตัวเองทำให้ระบบไม่สามารถป้องกันกระบวนการที่เกิดขึ้นหรือแย่ลง - ถูกใช้ประโยชน์จากหน้าเว็บที่มีรูปแบบไม่ถูกต้องเสียหายหรือเป็นอันตราย
สิ่งที่แย่ที่สุดที่อาจเกิดขึ้นจะมีผลกับman
ดัชนีหน้าเว็บเท่านั้น บูฮู คุณสามารถยืนยันด้วยสิ่งที่ชอบ:
sudo -u man find / -writable 2>/dev/null
และคุณสามารถใช้วิธีการนั้นเพื่อดูว่าผู้ใช้สามารถสร้างความเสียหายได้มากเพียงใดในระบบ เป็นความคิดที่ดีที่จะตรวจสอบการอนุญาตไฟล์ของคุณ (ฉันเพิ่งพบว่าผู้ใช้สามารถลบคอลเลกชันเพลงทั้งหมดของฉันได้)
accessdb
คุณสามารถมองที่ฐานข้อมูลด้วย นี่คือบันทึกสุ่มบางส่วน:
$ accessdb | shuf -n3
fpurge -> "- 3 3 1380819168 A - - gz purge a stream"
fcgetlangs -> "FcGetLangs 3 3 1402007131 A - - gz Get list of languages"
ipython -> "- 1 1 1393443907 A - - gz Tools for Interactive Computing in Python."
แม้ว่าจะไม่ชัดเจนจากด้านบน แต่จริงๆแล้วมีฟิลด์คั่นด้วยแท็บ:
<name> -> <ext> <sec> <mtime> <ID> <ref> <comp> <whatis>
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเนื้อหาข้อมูลที่เกิดขึ้นจริงในคู่มือทางเทคนิค