ไม่กี่สัปดาห์ที่แล้ว ผมได้เขียนบทความที่ให้ภาพรวมพื้นฐานของเครื่องมือเพิ่มความปลอดภัย AppArmor อธิบายวิธีการทำงาน และแสดงตัวอย่างปฏิบัติจริงเกี่ยวกับการจำกัดและแข็งขันเบราว์เซอร์ Firefox แต่รอสักครู่ ไม่ใช่ Firefox แบบไหนก็ได้ แต่มันคือเวอร์ชัน tarball ที่คุณดาวน์โหลดได้จาก Mozilla โดยตรง ผมพูดถึงไฟล์ tar archive นั่นแหละ ดาวน์โหลด แตกไฟล์ รันเลย
จนตอนนี้ทุกอย่างดูดี ถ้วยนำโปรไฟล์ AppArmor (เทมเพลต) จากการติดตั้ง Kubuntu มาใช้ ผมสามารถสร้างชุดกฎกำหนดเองสำหรับ Firefox เวอร์ชัน tar ที่รันจากไดเรกทอรี home ได้ด้วยการปรับเปลี่ยนเล็กน้อย ทุกอย่างทำงานได้ดี แต่มีปัญหาอย่างหนึ่ง: โดยค่าเริ่มต้น Firefox ไม่สามารถอัปเดตตัวเองได้ เราจะแก้ปัญหานี้ทันที

รายละเอียดปัญหา
เกิดอะไรขึ้น呢? หากคุณใช้ Firefox เวอร์ชัน tarball จะมีตัวเลือกอัปเดตอัตโนมัติเหมือนใน Windows นั่นคือ เบราว์เซอร์จะดาวน์โหลดอัปเดต คุณรีสตาร์ท แล้วเสร็จสิ้น ไม่ต้องติดตั้งใหม่ด้วยตนเอง คุณเพียงแค่รันเบราว์เซอร์จากที่ที่คุณแตกไฟล์ไว้ครั้งแรก เช่น ~/Firefox/ หรือที่คล้ายกัน
อย่างไรก็ตาม ด้วยโปรไฟล์ AppArmor ที่ผมตั้งไว้ เบราว์เซอร์ไม่สามารถอัปเดตตัวเองได้ (ดูสกรีนช็อตด้านบน) มันจะบอกว่ามีอัปเดตให้ดาวน์โหลดด้วยตนเองได้ แท้จริงแล้วมีวิธีหลีกเลี่ยงหลายวิธี:
- คุณสามารถลบกฎ AppArmor ออก และเมื่อรีสตาร์ทเบราว์เซอร์ Firefox จะสามารถอัปเดตตัวเองได้ แต่วิธีนี้ลำบาก และคุณจะต้องนำไปใช้กฎเดิมอีกครั้งในภายหลัง
sudo apparmor_parser -R "ชื่อโปรไฟล์ Firefox เวอร์ชัน tar ของคุณ"
- คุณสามารถไปที่เว็บไซต์อย่างเป็นทางการ ดาวน์โหลด tarball ใหม่ แล้วแตกไฟล์ทับของเก่า หรือแค่แตกไฟล์และคัดลอกไฟล์ทั้งหมดจากโฟลเดอร์ใหม่ไปยังที่ที่คุณเก็บ Firefox ไว้ วิธีนี้จะไม่ส่งผลต่อโปรไฟล์ Firefox ของคุณเลย
tar -xvf "tarball"
cp -ar "โฟลเดอร์ที่แตกไฟล์ tarball"/* "โฟลเดอร์ติดตั้ง Firefox"/
อย่างไรก็ตาม วิธีเหล่านี้เป็นเพียง "การแก้ชั่วคราว" ที่ง่าย เราต้องการสิ่งที่มั่นคงกว่านี้
วิธีแก้ไข
วิธีแก้ไขจริงคือการตรวจสอบโปรไฟล์ AppArmor และเข้าใจว่ากฎไหนในโปรไฟล์สร้างความขัดแย้ง โดยทั่วไป แต่ละบรรทัดในโปรไฟล์คือกฎที่อนุญาตบางอย่างอย่างเลือกสรร (เช่น อ่านได้แต่เขียนไม่ได้ในไดเรกทอรี) หรือปฏิเสธการเข้าถึงทรัพยากรเฉพาะอย่างสมบูรณ์ สิ่งที่ไม่ได้ระบุไว้ชัดเจนจะไม่ได้รับการครอบคลุมจากโปรไฟล์
กฎเริ่มต้นหนึ่งในไฟล์คือการปฏิเสธการเขียนไฟล์และโฟลเดอร์ภายในไดเรกทอรีติดตั้ง Firefox นี่สมเหตุสมผลสำหรับโปรไฟล์เริ่มต้นเมื่อ Firefox ถูกติดตั้งในไดเรกทอรีระบบ แต่ไม่จำเป็นหากคุณติดตั้ง Firefox ในสถานที่แยกต่างหาก
deny @{MOZ_LIBDIR}/** w,
เราสามารถคอมเมนต์กฎนี้ออก รีโหลดโปรไฟล์ Firefox และเสร็จสิ้น:
sudo apparmor_parser -r "ชื่อโปรไฟล์"


สรุป
เสร็จสิ้น การเปลี่ยนแปลงเล็กน้อยและง่ายดายเพียงอย่างนี้ก็เพียงพอที่จะคืนความสามารถในการอัปเดตตัวเองให้ Firefox เวอร์ชัน tarball ตอนนี้ หากคุณเป็นคนรู้จักความปลอดภัยมาก คุณอาจบอกว่านี่ไม่ดีหรืออย่างอื่น และคุณยอมรับการอัปเดตด้วยตนเองเมื่อจำเป็น คุณสามารถทำเช่นนั้นได้เสมอ แต่หากคุณต้องการความสะดวก และยังต้องการให้ส่วนใหญ่ของโปรไฟล์ AppArmor ทำงานต่อไป คุณสามารถอนุญาตให้เบราว์เซอร์เขียนในโฟลเดอร์ติดตั้งได้ เพียงแค่ตระหนักถึงผลลัพธ์ที่อาจตามมา
หวังว่าคู่มือนี้จะช่วยทำความเข้าใจหรือแก้ข้อกลุมเครือบางส่วนที่คุณอาจมีเกี่ยวกับหัวข้อนี้ แต่เรายังไม่จบ ในครั้งต่อไป เราจะพูดถึง D-Bus และกฎที่จำเป็นเพื่อให้ Firefox สามารถใช้คุณสมบัติการบูรณาการ KDE/Plasma ได้ อาจดูเฉพาะ KDE แต่ผมจะพยายามทำให้บทช่วยสอนนี้เป็นไปได้ทั่วไปสำหรับฟังก์ชันการบูรณาการเบราว์เซอร์ทุกประเภท จนกว่าจะพบกันใหม่ เพื่อนนักเทคนิคทุกท่าน
ขอแสดงความนับถือ