ใน OpenSUSE Leap 15.3 ของฉันกับ Samba เวอร์ชัน 4.13.4 ฉันมีส่วนแบ่งการทดสอบใน btrfs subvolume พร้อมโควต้า 1GB พร้อมการกำหนดค่าต่อไปนี้:
[ทั่วโลก]
เวิร์กกรุ๊ป = หน้าแรก
แบ็กเอนด์ passdb = tdbsam
การพิมพ์ = ถ้วย
พิมพ์ชื่อ = ถ้วย
เวลาแคชของ printcap = 750
ตัวเลือกถ้วย = ดิบ
บัญชีแขก = smbguest
แผนที่ไปยังแขก = ผู้ใช้ที่ไม่ดี
เส้นทางการเข้าสู่ระบบ = \%L\profiles\.msprofile
เข้าสู่ระบบหน้าแรก = \%L\%U\.9xprofile
ไดรฟ์เข้าสู่ระบบ = P:
usershare อนุญาตให้แขก = ไม่
ชื่อ netbios = เซิร์ฟเวอร์
ชนะการสนับสนุน = ไม่
คำสั่ง dfree = /usr/local/bin/df_btrfs
เวลาแคช dfree = 1
ระดับบันทึก = 10
[ทดสอบ]
ความคิดเห็น = ทดสอบ
สืบทอด acls = ใช่
เส้นทาง = /srv/samba/ทดสอบ
อ่านอย่างเดียว = ไม่
ผู้ใช้ที่ถูกต้อง = ทดสอบ
วัตถุ vfs = ปลากะพง btrfs
ผู้ใช้แรง = ทดสอบ
ไฟล์ยับยั้ง = /.snapshots
ทุกอย่างทำงานได้อย่างถูกต้อง ยกเว้นการใช้ดิสก์ มันแสดงการใช้ดิสก์ทั้งหมดและละเว้นโควต้า ดังนั้นฉันจึงใช้สคริปต์ต่อไปนี้และส่งไปยัง คำสั่ง dfree =
ตัวเลือก.
df_btrfs:
#!/bin/sh
# ไม่ค่อยมีประสิทธิภาพ แต่เป็นฉบับร่าง
btrfs โควต้า rescan -w $1 > /dev/null
STR=$(btrfs qgroup แสดง -rF --raw $1 | หาง -1)
NUM1=$(echo $STR | ตัด -d " " -f 4)
NUM2=$(echo $STR | ตัด -d " " -f 2)
SIZE=$(หมดอายุ $NUM1 / 1024)
USED=$(หมดอายุ $NUM2 / 1024)
AVAIL=$(expr $SIZE - $USED)
echo $SIZE $AVAIL
และเมื่อฉันดำเนินการ grep "df_btrfs" /var/log/samba/log.smbd
นี่คือผลลัพธ์ของบันทึก:
เซิร์ฟเวอร์:/usr/local/bin # grep "df_btrfs" /var/log/samba/log.smbd
กำลังทำพารามิเตอร์คำสั่ง dfree = /usr/local/bin/df_btrfs
กำลังทำพารามิเตอร์คำสั่ง dfree = /usr/local/bin/df_btrfs
sys_disk_free: เรียกใช้คำสั่ง '/usr/local/bin/df_btrfs '
sys_popenv: ข้อผิดพลาดในการดำเนินการคำสั่ง '/usr/local/bin/df_btrfs': การอนุญาตถูกปฏิเสธ
sys_disk_free: file_lines_load() ล้มเหลวสำหรับคำสั่ง '/usr/local/bin/df_btrfs .' ข้อผิดพลาดคือ: ไม่มีกระบวนการย่อย
แต่นี่คือการอนุญาตสคริปต์ของฉัน:
เซิร์ฟเวอร์:/usr/local/bin # ll
รวม 4
-rwx------ 1 รูทรูท 269 ส.ค. 30 18:07 น. df_btrfs
ฉันพลาดอะไรไปที่นี่? ให้เป็นไปตาม คู่มือ มีการตั้งค่าการอนุญาตอย่างถูกต้อง
ความช่วยเหลือทุกส่วนได้รับการชื่นชมอย่างมาก
ขอบคุณล่วงหน้า!