Nginx nói open () / / / c / nginx / conf.d / foo.conf, đã thất bại (13: Quyền bị từ chối)


11

Đây là những gì tôi có trong ls -al /etc/nginx:

total 52
drwxr-xr-x.  4 root root 4096 Jul 28 04:16 .
drwxr-xr-x. 78 root root 8192 Jul 28 03:37 ..
drwxr-xr-x.  2 root root   26 Jul 28 03:55 conf.d
drwxr-xr-x.  2 root root    6 May 10 09:21 default.d
-rw-r--r--.  1 root root 1034 May 10 09:21 fastcgi.conf
-rw-r--r--.  1 root root  964 May 10 09:21 fastcgi_params
-rw-r--r--.  1 root root 2837 May 10 09:21 koi-utf
-rw-r--r--.  1 root root 2223 May 10 09:21 koi-win
-rw-r--r--.  1 root root 3957 May 10 09:21 mime.types
-rw-r--r--.  1 root root 1033 Jul 28 03:43 nginx.conf
-rw-r--r--.  1 root root  596 May 10 09:21 scgi_params
-rw-r--r--.  1 root root  623 May 10 09:21 uwsgi_params
-rw-r--r--.  1 root root 3610 May 10 09:21 win-utf

Đây là những gì tôi thấy /var/log/nginx/error.logsau sudo service nginx start:

[emerg] 20360#0: open() "/etc/nginx/conf.d/foo.conf" failed
(13: Permission denied) in /etc/nginx/nginx.conf:33

Đây là những gì tôi có trong ls -al /etc/nginx/conf.d/:

$ ls -al /etc/nginx/conf.d/
total 8
drwxr-xr-x. 2 root root   26 Jul 28 03:55 .
drwxr-xr-x. 4 root root 4096 Jul 28 04:16 ..
-rw-r--r--. 1 root root  230 Jul 28 03:50 foo.conf

Chuyện gì vậy?


2
TỰ TIN thi hành? Không ls -lZthể hiện điều gì? Hãy thử setenforce 0và xem nếu nó hoạt động.
yaegashi

Thật vậy, setenforce 0đã giúp. Xin vui lòng, gửi nó dưới dạng câu trả lời, tôi sẽ chấp nhận nó
yegor256

Câu trả lời:


19

Khi bạn gặp permission deniedlỗi khi truy cập tệp, v.v. không rõ lý do, điều đó có thể liên quan đến SELinux. Đặc biệt là khi bạn thấy một khoảng thời gian theo các quyền như drwxr-xr-x.được hiển thị bởi ls -ltệp / thư mục được đề cập, chúng có thể bị gắn nhãn sai (bạn có thể thấy nó theo ls -Z) và gây ra sự cố.

Trước tiên, bạn nên kiểm tra chế độ SELinux hiện tại bằng cách chạy getenforce. Nếu có Enforcing, sau đó tạm thời đặt chế độ thành Permissivebằng cách chạy setenforce 0và xem ứng dụng của bạn có hoạt động sau đó không.

Vui lòng tham khảo hướng dẫn phân phối của bạn trên SELinux để khắc phục vĩnh viễn, bao gồm cài đặt chế độ SELinux khi khởi động, gắn nhãn lại tệp hoặc thư mục, chính sách cập nhật, v.v ... Đây là Howto cho CentOS .


2

Thay đổi toàn bộ SElinux không phải lúc nào cũng là câu trả lời đúng. Tôi không phải là chuyên gia nhưng tôi sẽ so sánh nó với việc tắt tường lửa nếu một cổng không thể truy cập được.

Giải pháp nhanh khác có thể là "khôi phục bối cảnh SE" của các tệp, đặc biệt là nếu các tệp được sao chép từ đâu đó.

Xem https: //www.thegeek ware.com/2017/05/restorecon-examples/ để biết thêm chi tiết.

Đây là những lệnh đáng để thử trước khi vô hiệu hóa SElinux

sudo restorecon  /etc/nginx/conf.d/
sudo restorecon  /etc/nginx/conf.d/*

Lệnh này cho tôiFull path required for exclude: net:[...].
Nakilon

0

Cách tốt hơn là vô hiệu hóa selinux là sử dụng lệnh

semanage permissive -a httpd_t

Điều đó sẽ cho phép dịch vụ nginx toe đi qua mà không vô hiệu hóa hoàn toàn selinux

Thông tin thêm về https://www.nginx.com/blog/USE-nginx-plus-with-selinux/

Tuy nhiên, đối với tôi, tôi đã chạy command chcon -v --type=httpd_sys_content_t /etc/nginx/*và nó hoạt động bình thường mà không cần phải miễn trừ httpd_t

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.