Cách an toàn để cho phép Java 7 chạy trên SELinux là gì


9

Phiên bản ngắn: Cách an toàn nhất để cho phép Java 7 chạy trên (với?) SELinux là gì?

Phiên bản dài:

Xin lỗi trước nếu tôi sử dụng thuật ngữ không chính xác. Tôi thực sự chỉ là một nhà phát triển Java với các kỹ năng Linux ít ỏi.

Tôi vừa cài đặt Java 7 trên bản phát hành CentOS 5.3 (Bản cuối) rõ ràng có Linux được tăng cường bảo mật. Sau khi cài đặt hoàn tất (mà tôi đã "cài đặt" bằng cách giải nén tệp tar.gz từ Oracle /usr/java/jdk/jdk1.7.0_25), tôi đã chạy java -versionvà gặp lỗi này:

Error: dl failure on line 864
Error: failed /usr/java/jdk1.7.0_25/jre/lib/i386/server/libjvm.so,
      because /usr/java/jdk1.7.0_25/jre/lib/i386/server/libjvm.so:
      cannot restore segment prot after reloc: Permission denied`

Tôi tìm thấy một vài bài báo nêu rõ điều này có thể là do SELinux và để thử setenforce 0xem vấn đề có biến mất không. Tôi đã chạy lệnh đó và Java đã làm việc. Nhưng những bài báo tương tự nói rằng rời khỏi setenforce 0máy chủ kết nối Internet là nguy hiểm và máy chủ của tôi được kết nối với Internet.

Có những bài viết khác đề xuất cách tiếp cận tiếp theo này, nhưng cũng nói rằng nó có thể nguy hiểm, vì vậy tôi chưa thử.

chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so

... trong lệnh trên, đường dẫn ở cuối lệnh được thay thế bằng đường dẫn JDK của tôi.

Những gì tôi không thể tìm thấy là một cái gì đó "chính thức" (có thể có nghĩa là nhiều thứ) về cách chạy Java 7 trên (với?) TỰ ĐỘNG an toàn. Có ai có bất kỳ thông tin cho tôi?

Chỉnh sửa: Tôi phát hiện ra một bài viết đề cập đến chỉnh sửa /etc/selinux/config. Tôi đã thiết lập như thể hiện trong mẫu dưới đây. Điều này cho phép Java chạy nhưng tôi giả sử bây giờ tôi có một số lỗ hổng bảo mật.

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=permissive
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted

Các chcongiải pháp trông hợp lý. Giải pháp cuối cùng không khác nhiều so với setenforce 0.
jordanm

Bạn có thể chỉ cần cài đặt nó trong thư mục nhà của bạn thay thế?
Thorbjørn Ravn Andersen

@ ThorbjørnRavnAndersen: Chà, tôi cho rằng tôi có thể, nhưng nó chạy như một daemon, một máy chủ Tomcat cụ thể hơn, và bằng cách nào đó cảm thấy hơi cẩu thả khi có một máy chủ Tomcat chạy từ thư mục nhà của tôi.
John Fitzpatrick

Câu trả lời:


2
  1. Dọn dẹp cài đặt hiện tại

  2. Tải xuống tệp RPM ( http://www.oracle.com/technetwork/java/javase/doads/jdk7-doads-1880260.html )

    yum -y localinstall /path/to/downloaded-java.rpm
    

phần còn lại sẽ được chăm sóc.


Cảm ơn. Bạn có thể nói rõ hơn về "Dọn dẹp cài đặt hiện tại" không? Bạn có nghĩa là loại bỏ những gì tôi cài đặt?
John Fitzpatrick

Vâng đúng vậy! Hủy bỏ cài đặt Java Java hiện tại của bạn. Vui lòng thực hiện theo "Gỡ cài đặt tệp tự giải nén" java.com/en/doad/help/linux_uninstall.xml#elf
user44441

4
Tại sao đây là giải pháp?
Các cuộc đua nhẹ nhàng trong quỹ đạo

Nếu @LightnessRacesinOrbit không biết tại sao đây là giải pháp phù hợp, vui lòng đọc thêm về Selinux là gì . Về cơ bản, tập lệnh RPM thiết lập các quyền thích hợp của ACL, v.v.
eyoung100

3
@ eyoung100: Không, quan điểm của tôi là câu trả lời này không giải thích được gì. Nó sẽ giải thích tại sao việc gỡ bỏ và thay thế cài đặt sẽ giải quyết vấn đề, cũng như đưa ra các bước để làm như vậy. Ngoài ra tôi hỏi vì tôi đã cài đặt từ RPM nhưng vẫn gặp sự cố.
Các cuộc đua nhẹ nhàng trong quỹ đạo
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.