Làm cách nào để tôi có được SELinux để cho phép Apache và Samba trên cùng một thư mục?


26

Trong cấu hình tôi đã thiết lập, tôi muốn cho phép samba và apache truy cập / var / www Tôi có thể đặt bối cảnh để cho phép truy cập samba, nhưng sau đó httpd không có quyền truy cập. Sử dụng setenforce thành 0 sẽ loại bỏ các vấn đề để tôi biết rằng đó là SELinux.

Ngoài ra: Làm cách nào tôi có thể xem ngữ cảnh của một thư mục và một thư mục có thể có nhiều ngữ cảnh không?

(CentOS)


Bạn đã thử sử dụng tùy chọn boolean của system-config-selinux chưa?

Câu trả lời:


39

Trước hết, bạn có thể xem ngữ cảnh của một cái gì đó với ls bằng ls -Z

[root@servername www]# ls -dZ /var/www
drwxr-xr-x  root root system_u:object_r:httpd_sys_content_t /var/www

Thứ hai, có hai tùy chọn cho phép Samba và Apache truy cập vào cùng một thư mục.

Cách đơn giản là chỉ cho phép truy cập đọc / ghi samba ở mọi nơi với:

setsebool -P samba_export_all_rw 1

Nó đơn giản, dễ dàng và không gây rối với bất kỳ thuộc tính kỳ lạ nào của SELinux.

Nếu bạn lo ngại Samba có quyền truy cập đầy đủ vào tất cả các thư mục và chỉ muốn thay đổi / var / www, hãy thử:

chcon -t public_content_rw_t /var/www
setsebool -P allow_smbd_anon_write 1
setsebool -P allow_httpd_anon_write 1

Điều này sẽ cho phép cả Samba và Apache ghi quyền truy cập vào bất kỳ thư mục nào có ngữ cảnh public_content_rw_t. Lưu ý rằng chcon chỉ sửa đổi / var / www. Bất kỳ thư mục mới nào được tạo trong / var / www sẽ là public_content_rw_t, nhưng không phải là các thư mục hiện có như / var / www / html hoặc / var / www / thủ công. Nếu bạn muốn thay đổi mọi thứ, hãy thêm -R vào chcon:

chcon -R -t public_content_rw_t /var/www

Bạn có thể xem qua trang wiki CentOS này để có gợi ý về các booleans SELinux khác.


Tôi đã thử điều này và nó phàn nàn rằng một bối cảnh đã được xác định.
Joshua Enfield

Bạn nói đúng, có vẻ như mọi thứ đã thay đổi kể từ lần cuối tôi gặp rắc rối với SELinux. Tôi sẽ cập nhật câu trả lời của tôi với một số tùy chọn khác.
David

3
@Dave bạn đã lưu mông của tôi. Hẹn gặp bạn vào ngày mai
Joel E Salas

Tôi muốn đề cập rằng nếu webroot của bạn được lồng trong một chia sẻ samba, bạn cũng sẽ cần phải đặt bối cảnh trên các thư mục mẹ. Ví dụ:chcon -t public_content_rw_t /mnt/share/webroot(/.*)? chcon -t public_content_rw_t /mnt/share
Greg Sheremeta

1
Cảm ơn bạn, tôi đã vật lộn với một cái gì đó tương tự nhưng với ftp, và mọi thứ hoạt động sau khi thực hiệnsetsebool -P ftpd_full_access=1
giorgiline

9
SHARING FILES
   If you want to share files with multiple domains (Apache,  FTP,  rsync,
   Samba),  you can set a file context of public_content_t and public_content_rw_t.
   These context allow any of the above domains  to  read  the
   content.   If  you want a particular domain to write to the public_con‐
   tent_rw_t   domain,   you   must   set   the    appropriate    boolean.
   allow_DOMAIN_anon_write.  So for samba you would execute:

       setsebool -P allow_smbd_anon_write=1

Ví dụ:

semanage fcontext -a -t public_content_rw_t '/var/www(/.*)?'
restorecon -R /var/www
setsebool -P allow_smbd_anon_write 1
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.