ฉันมีเซิร์ฟเวอร์ OpenLDAP 2.4 ที่ทำงานบน Ubuntu 18.04 LTS ทุกครั้งที่ฉันวิ่ง
# ตบแมว -l test.ldif
ไฟล์ Slapd.log ของฉันถูกตัดทอน (เช่น ข้อความบันทึกก่อนหน้าจะถูกลบและข้อความใหม่จะถูกเขียนที่ส่วนต้นของไฟล์)
อันที่จริง บรรทัดแรกของlapd.logแสดงผลลัพธ์ของslapcat:
# หัว /var/log/slapd.log
620ca0f1 ฐานข้อมูลแรกไม่อนุญาต Slapcat; โดยใช้อันแรกที่มีอยู่ (2)
16 ก.พ. 08:00:15 น. srv21449lapd[2096]: conn=274238 op=552602 SRCH base="" scope=0 deref=0 filter="(objectClass=*)"
16 ก.พ. 08:00:15 น. srv21449 ตบ [2096]: conn=274238 op=552602 SRCH attr=1.1
นั่นทำให้ฉันคิดว่าการตัดทอนไฟล์เกิดขึ้นก่อนที่ Slapcat จะสร้างเอาต์พุตใดๆ
เท่าที่ฉันเข้าใจ Slapcat ไม่มีส่วนเกี่ยวข้องกับการบันทึก (ซึ่งทำโดย Slapd daemon) ดังนั้นฉันเชื่อว่าฉันขาดอะไรไป... มีความคิดอะไรบ้างไหม?
แก้ไข #1: ฉันรันคำสั่ง Slapcat ด้วยการรัน Slapd ในขณะนี้ ฉันไม่สามารถหยุดบริการเพื่อตรวจสอบว่าจะเกิดขึ้นเมื่อ daemon ไม่ทำงานหรือไม่ ฉันอ่านมาก่อนว่าควรหลีกเลี่ยงสิ่งนี้ แต่จากหน้าคนของ Slapcat:
สำหรับแบ็กเอนด์บางประเภท ไม่ควรเรียกใช้ Slapd(8) ของคุณ (อย่างน้อย
ไม่ได้อยู่ในโหมดอ่าน-เขียน) เมื่อคุณทำสิ่งนี้เพื่อให้มั่นใจถึงความสอดคล้องของ
ฐานข้อมูล การรัน Slapcat ด้วย Slapd-bdb(5) นั้นปลอดภัยเสมอ
แบ็กเอนด์ Slapd-hdb (5) และ Slapd-null (5)
เรียกใช้ Slapcat บน Slapd ที่มีแบ็กเอนด์ bdb (กรณีของฉัน) ควรจะปลอดภัย
แก้ไข #2 การตรวจสอบเพิ่มเติมอีกเล็กน้อย ฉันพยายามใช้auditctlเพื่อตรวจสอบการเข้าถึงslapd.logโดยเพิ่มกฎการตรวจสอบใหม่:
# auditctl -w /var/log/slapd.log -k ตบ
หลังจากเรียกใช้ Slapcat อีกครั้ง ฉันเห็นสิ่งนี้:
type=PROCTITLE msg=audit(1645437260.398:5558713): proctitle=736C6170636174002D6C00746573742E6C646966
type=PATH msg=audit(1645437260.398:5558713): item=1 name="/var/log/slapd.log" inode=131414 dev=fd:04 mode=0100640 ouid=0 ogid=4 rdev=00:00 nametype =ปกติ cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PATH msg=audit(1645437260.398:5558713): item=0 name="/var/log/" inode=131074 dev=fd:04 mode=040775 ouid=0 ogid=106 rdev=00:00 nametype=PARENT cap_fp =0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=CWD msg=audit(1645437260.398:5558713): cwd="/root"
พิมพ์=SYSCALL msg=audit(1645437260.398:5558713): arch=c000003e syscall=257 สำเร็จ=ใช่ exit=4 a0=ffffff9c a1=55e525c35410 a2=241 a3=1b6 items=2 ppid=69682 pid=73954 auid=1000 uid= 0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts2 ses=903297 comm="slapcat" exe="/usr/sbin/slapcat" key="slapd"
บรรทัดสุดท้ายของการตรวจสอบแสดงว่ามีการเข้าถึงโดย /usr/sbin/slapcat ดังนั้นจึงเป็นการยืนยันว่า Slapcat กำลังทำบางอย่างกับ Slapd.log ฉันเริ่มถามตัวเองว่านี่เป็นเพียงพฤติกรรมที่คาดหวังจากการเรียกใช้ Slapcat "ร้อน" (เช่นไม่หยุดบริการ Slapd) แม้ว่าจะไม่สมเหตุสมผลสำหรับฉันก็ตาม...