Could not read pid file và shm_open(...): Permission denied có thể xuất hiện trong cùng một lần khởi động Squid thất bại. Chúng chỉ đến các tài nguyên khác nhau. Việc sửa quyền sở hữu một thư mục bộ đệm tự nó không khắc phục được cả hai.

Trên Linux, đối tượng bộ nhớ chia sẻ POSIX thường được biểu diễn dưới /dev/shm. Chủ sở hữu và chế độ truy cập của nó rất quan trọng. Vì vậy một đối tượng do một danh tính thực thi khác để lại có thể khiến tiến trình sau đó thất bại, ngay cả khi squid.conf đọc được và cổng lắng nghe còn trống.

Dựng lại cách thực thể này khởi động

So sánh lần khởi động dịch vụ bình thường với bất kỳ lần khởi động thủ công nào dùng khi xử lý sự cố. Tiến trình khởi động thủ công và dịch vụ đóng gói có thể dùng người dùng, đường dẫn hoặc tệp cấu hình khác nhau. Xác định xem một thực thể Squid khác còn chạy hay không trước khi coi một đối tượng là cũ.

Sau đó đọc chính xác thao tác đang thất bại. Lỗi PID liên quan đến vị trí PID đã cấu hình và thư mục cha của nó. Lỗi nhật ký liên quan đến tệp hoặc thư mục nhật ký. Lỗi khởi tạo bộ đệm liên quan đến lưu trữ. Lỗi shm_open liên quan đến đối tượng bộ nhớ chia sẻ có tên và cũng có thể liên quan đến chính sách bảo mật áp dụng cho tiến trình.

Với mỗi tài nguyên, so sánh quyền truy cập lúc chạy cần thiết với chủ sở hữu và chế độ hiện tại. Nếu quyền thông thường có vẻ đủ, hãy xem bằng chứng từ chối tương ứng trong SELinux hoặc AppArmor. Chỉ “Permission denied” không cho biết lớp nào đã từ chối truy cập.

Sửa quyền sở hữu mà không tạo ra vấn đề thứ hai

Giữ tài khoản chạy nhất quán với cấu hình dịch vụ của bản cài đặt. Chuyển mọi thứ sang nobody có thể phá vỡ quyền truy cập của các chương trình phụ trợ và tạo ra sự không khớp mới với các tệp do dịch vụ quản lý.

Xóa mọi đối tượng trông giống Squid trong /dev/shm cũng không phải bước đầu hay. Một đối tượng có tên có thể thuộc về một thực thể đang hoạt động. Việc dọn dẹp, khi cần, nên nhắm vào tài nguyên bị bỏ hoang đã xác nhận trong khi dịch vụ bị ảnh hưởng đã dừng, rồi khởi động qua cơ chế dịch vụ bình thường.

Kết quả hữu ích là một mô hình khởi động và sở hữu nhất quán. Chạy một lệnh với quyền root cho đến khi lỗi biến mất có thể để lần khởi động lại định kỳ tiếp theo gặp đúng vấn đề đó.

Bài viết liên quan