Vài tuần trước, tôi đã viết một bài báo cung cấp thông tin tổng quan cơ bản về công cụ tăng cường độ cứng của AppArmor, giải thích cách thức hoạt động của nó và cho bạn thấy một ví dụ thực tế về cách hạn chế và tăng cường độ cứng cho trình duyệt Firefox. Nhưng chờ đã, không chỉ bất kỳ Firefox nào, mà cụ thể là phiên bản tarball mà bạn có thể tải xuống từ Mozilla. Tôi đang nói về kho lưu trữ tar. Lấy, giải nén, chạy.
Càng xa càng tốt. Sử dụng cấu hình AppArmor (mẫu) từ bản cài đặt Kubfox của tôi, với những sửa đổi nhỏ, tôi có thể tạo một bộ quy tắc tùy chỉnh cho phiên bản Firefox tar chạy từ thư mục chính của mình. Mọi thứ đều ổn, nhưng có một vấn đề. Theo mặc định, nó không thể cập nhật. Chúng tôi sẽ khắc phục điều đó ngay bây giờ.
Vấn đề chi tiết hơn
Vì vậy, những gì xảy ra là như sau. Nếu bạn sử dụng phiên bản tar của Firefox, nó có tùy chọn tự động cập nhật giống như bạn thấy trong Windows. Về cơ bản, trình duyệt sẽ nhận được bản cập nhật, bạn khởi động lại trình duyệt, công việc đã hoàn tất. Bạn không cần phải cài đặt lại bất cứ thứ gì theo cách thủ công, bạn chỉ cần tiếp tục chạy trình duyệt từ bất cứ nơi nào bạn giải nén nó lần đầu tiên, chẳng hạn như ~/Firefox/ hoặc thứ gì đó tương tự.
Tuy nhiên, với hồ sơ AppArmor của tôi, trình duyệt không thể tự cập nhật (xem ảnh chụp màn hình ở trên). Nó sẽ cho bạn biết rằng có các bản cập nhật và bạn có thể tải chúng xuống theo cách thủ công. Thật vậy, có khá nhiều cách giải quyết:
- Bạn có thể xóa quy tắc AppArmor và trong lần khởi động lại trình duyệt tiếp theo, Firefox sẽ có thể tự cập nhật. Nhưng điều này là cồng kềnh. Và bạn sẽ cần áp dụng lại quy tắc sau.
sudo apparmor_parser -R "tên hồ sơ phiên bản Firefox tar của bạn"
- Bạn có thể truy cập trang web chính thức theo cách thủ công, tải xuống kho lưu trữ tarball mới, sau đó giải nén nó trên trang cũ hoặc chỉ cần giải nén và sao chép thủ công tất cả các tệp từ thư mục mới vào bất cứ nơi nào bạn lưu trữ Firefox. Điều này sẽ không ảnh hưởng đến hồ sơ Firefox của bạn theo bất kỳ cách nào.
tar -xvf "tarball"
cp -ar "thư mục giải nén tarball"/* "Thư mục cài đặt Firefox"/
Tuy nhiên, đây chỉ là những bản sửa lỗi (dễ dàng) và chúng tôi muốn một thứ gì đó chắc chắn hơn.
Giải pháp
Cách khắc phục thực sự là xem qua hồ sơ AppArmor và hiểu quy tắc nào tại chỗ tạo ra xung đột. Nói chung, mỗi dòng trong hồ sơ là một quy tắc cho phép có chọn lọc điều gì đó (như đọc nhưng không ghi vào thư mục) hoặc từ chối hoàn toàn quyền truy cập vào một tài nguyên cụ thể. Bất cứ điều gì không được viết rõ ràng sẽ không được bao gồm trong hồ sơ.
Một trong những quy tắc mặc định trong tệp là từ chối quyền ghi vào tệp và thư mục bên trong thư mục cài đặt Firefox. Điều này có ý nghĩa đối với cấu hình mặc định khi và ở đâu Firefox được cài đặt trong thư mục hệ thống, nhưng không nhất thiết nếu bạn cài đặt Firefox ở nơi riêng biệt.
từ chối @{MOZ_LIBDIR}/** w,
Chúng tôi có thể nhận xét quy tắc này, tải lại cấu hình Firefox và hoàn thành công việc:
sudo apparmor_parser -r "tên hồ sơ"
Kết luận
Công việc hoàn thành. Thay đổi nhỏ và đơn giản này là tất cả những gì cần thiết để cung cấp cho phiên bản Firefox tar (trở lại) khả năng tự cập nhật. Bây giờ, nếu bạn là người siêu ý thức về bảo mật, bạn có thể nói điều này không tốt hoặc không tốt, và bạn có thể thực hiện cập nhật thủ công nếu và khi cần. Bạn luôn có thể sử dụng thủ thuật đó, thực sự. Nhưng nếu bạn muốn một số tiện lợi và vẫn có phần lớn cấu hình AppArmor làm việc cho bạn, thì bạn có thể cho phép trình duyệt có thể ghi vào thư mục cài đặt của nó. Chỉ cần nhận thức được những hậu quả có thể xảy ra.
Hy vọng rằng, hướng dẫn này làm rõ hoặc làm sáng tỏ một số câu hỏi mà bạn có thể có xung quanh chủ đề này. Nhưng một lần nữa, chúng tôi chưa hoàn thành. Tiếp theo, chúng ta sẽ nói về D-Bus và cụ thể là bất kỳ quy tắc nào cần thiết để cung cấp cho Firefox khả năng sử dụng các tính năng tích hợp KDE/Plasma. Có lẽ điều này nghe có vẻ dành riêng cho KDE, nhưng tôi sẽ đảm bảo rằng hướng dẫn này đủ chung chung để có thể áp dụng cho bất kỳ loại chức năng tích hợp trình duyệt nào. Hẹn lần sau nhé, các bạn mọt sách thân mến.
Chúc mừng.