Một vấn đề như vậy có thể phụ thuộc vào hệ điều hành bạn sử dụng và cách nó được cấu hình. Một số bản phân phối linux (chủ yếu là các bản phát hành dựa trên RHEL như CentOS hoặc Fedora) đi kèm với SELinux được kích hoạt theo mặc định. Điều này có thể được kiểm tra và thay đổi tạm thời, với các lệnh sau:
root@ls:~# /usr/sbin/getenforce
Enforcing
root@ls:~# /usr/sbin/setenforce Permissive
root@ls:~# /usr/sbin/getenforce
Permissive
Bạn cũng có thể có một cái nhìn đầy đủ hơn về cấu hình hiện tại với:
root@ls:~# /usr/sbin/sestatus
SELinux status: enabled
SELinuxfs mount: /selinux
Current mode: permissive
Mode from config file: enforcing
Policy version: 21
Policy from config file: targeted
Thay đổi này có thể được thực hiện vĩnh viễn bằng cách chỉnh sửa /etc/selinux/config
tệp và đặt SELINUX
biến thành permissive
hoặc disabled
.
Nhưng, cách chính xác để giải quyết loại vấn đề này , nếu bạn thực sự trong tình huống này, là kiểm tra /var/log/audit/audit.log
tệp nhật ký. Nó sẽ chứa tất cả các sự kiện liên quan đến quy tắc SELinux. Sau đó, có lẽ bạn sẽ cung cấp cho tập lệnh của mình ngữ cảnh chính xác, tức là được ủy quyền để được chạy bởi người dùng apache / php. Kiểm tra bối cảnh bảo mật SELinux được thực hiện với ls -Z
:
root@ls:~# ls -alZ /var/www/cgi-bin/
drwxr-xr-x root root system_u:object_r:httpd_sys_script_exec_t .
drwxr-xr-x root root system_u:object_r:httpd_sys_content_t ..
Danh sách này liệt kê Người dùng, Vai trò và Loại của từng tệp / thư mục. Ở đây httpd_sys_script_exec_t
kiểu này cung cấp cho các tệp trong thư mục cgi quyền được thực thi bởi httpd. Kịch bản shell của bạn có thể phải có cùng loại.
Bạn cũng có thể cung cấp các audit.log
dòng cho audit2allow
lệnh. Nó sẽ cung cấp cho bạn những thay đổi cần thiết để làm cho Selinux hài lòng. Nhưng thông thường, những thay đổi được đề xuất cần phải được thực hiện trên chính sách SELinux, đây không phải là điều bạn nên làm trong trường hợp của mình (tuy nhiên, đầu ra này có thể đưa ra một số manh mối về những gì đang diễn ra).
Trang sau đây mô tả một vấn đề tương tự và các cách khác nhau để giải quyết nó: http://sheltren.com/stop-diseac-selinux
x
) trên tệp chưa? Bạn đã chỉ định trình thông dịch kịch bản trong một dòng shebang?