简短版本: 允许 Java 7 在(与?)SELinux 上运行的最安全方式是什么?
长版:
如果我使用了不正确的术语,请提前抱歉。我真的只是一名 Java 开发人员,对 Linux 技能知之甚少。
我刚刚在 CentOS 5.3 版(最终版)上安装了 Java 7,它显然具有安全增强的 Linux。安装完成后(我通过从 Oracle 中解压缩 tar.gz 文件来“安装” /usr/java/jdk/jdk1.7.0_25),我运行java -version并得到这个错误:
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`
Run Code Online (Sandbox Code Playgroud)
我发现一些文章指出这可能是由于 SELinux 并尝试 setenforce 0查看问题是否消失。我运行了那个命令,Java 工作了。但是这些相同的文章说,离开setenforce 0连接到 Internet 的主机是危险的,而我的主机已连接到 Internet。
还有其他文章提出了下一种方法,但也说它可能很危险,所以我还没有尝试过。
chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so
Run Code Online (Sandbox Code Playgroud)
...在上面的命令中,命令末尾的路径替换为我的 JDK 路径。
我找不到关于如何安全地在(使用?)SELinux 上运行 Java 7 的“官方”(这可能意味着很多事情)。有没有人有任何信息给我?
编辑: 我发现了一篇提到编辑/etc/selinux/config. 我已设置如下示例所示。这允许 Java 运行,但我认为我现在有一些安全漏洞。 …
我在我的新 CentOS 上安装了两个 JAVA JRE,因为 Cassandra 需要 java7u25 或更高版本,而 iReport 需要使用 1.6。
现在如何从命令行启动每个程序,告诉每个程序使用哪个版本?
我必须更改/etc/profile文件吗?如果是这样怎么办?
在过去一个月左右的时间里,我一直在尝试让 jetbrains-toolbox 工作。它曾经可以工作(也是我安装 IntelliJ IDEA 和 Gogland 的方式。)当我去更新 IDEA 时
我目前正在使用 Arch。这是我尝试过的事情。
设置文件 (~/local/share/JetBrains/Toolbox/.settings.json),即使在被第 5 项操作清除后,也能够重新生成,所以我假设我的文件系统上某处存在某些东西不走了。这就是我认为可能导致问题的原因。我已经通过查看 Thunar 的垃圾文件夹验证了设置文件已被删除。但是,从 ripgrep 搜索我的电子邮件地址(包含在设置文件中)并没有发现任何相关信息。
这些是我运行的命令:
cd ~/
sudo rg --hidden "MY_EMAIL_HERE" >> ~/Desktop/home_search.txtcd /usr/
sudo rg --hidden "MY_EMAIL_HERE" >> ~/Desktop/home_search.txt唯一相关的结果是:
.local/share/JetBrains/Toolbox/.settings.json: "email": "MY_EMAIL_HERE",
.local/share/Trash/files/Toolbox/.settings.json: "email": "MY_EMAIL_HERE",
我并不完全精通 Linux,但我一直在寻求帮助。如果您有任何建议,请耐心等待我。我可能有点傻。
当我从终端运行它时,这是显示的消息:
john@john ~/D/jetbrains-toolbox-1.2.2314> ./jetbrains-toolbox
[0415/155414:WARNING:resource_bundle.cc(311)] locale_file_path.empty() for locale
这是一条偶尔会 …
就我而言,Java 应用程序是 JDownloader。我按照此处的说明准备了 chroot 环境:
所以,我安装了java,添加了组和用户,复制了JDownload文件,但是当我尝试运行它时(作为chroot下的普通用户;我以root身份运行chroot,但是一旦我进入chroot,我就切换到chroot普通用户) :
java -Xmx512m -jar JDownloader.jar
Run Code Online (Sandbox Code Playgroud)
我收到了一些积极的信息,比如 JDownloader 加载皮肤
10 4/6/11 2:15:17 PM - FINER [jd.JDClassLoader(<init>)] -> Look and Feel JAR loaded: /mnt/jd/libs/laf/syntheticaSilverMoon.jar
Run Code Online (Sandbox Code Playgroud)
但这就是故事的结局——应用程序没有出现。不管我用chroot运行chroot环境还是openroot,结果都是一样的。
当我以 chroot-root 身份运行 JDownload 时,我得到了更多的输出,但最后发生了异常:
10 4/6/11 2:39:23 PM - FINER [jd.config.DatabaseConnector(<init>)] -> Loading database
10 4/6/11 2:39:23 PM - FINER [jd.config.DatabaseConnector(checkDatabaseHeader)] -> Checking database
10 4/6/11 2:39:23 PM - INFO [jd.Main(main)] -> init Splash
------------------------ Thread: …Run Code Online (Sandbox Code Playgroud) 我正在使用 CentOS 6.3 x86_64 最小操作系统(使用 netinstall ISO 安装)。
该系统预计不会运行控制台应用程序/服务和 Tomcat7 之外的任何东西。当我尝试安装 OpenJDK 1.7 时,它会列出一些 x11 包作为依赖项。为了我的目的,甚至不需要 awt 。因此,如果可能,我想避免安装所有字体、x11 等。
是否存在没有 UI 部分的 Java/JRE 版本?
我目前在运行 Java 时遇到了一些问题。由于堆问题,它不会启动。但是我有超过 9 GB 的可用内存(如果您认为缓存是空的,甚至是 16 GB)。这是我得到的错误(和free命令)
root@server: ~ # java
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
root@server: ~ # free
total used free shared buffers cached
Mem: 25165824 15941148 9224676 0 0 7082176
-/+ buffers/cache: 8858972 16306852
Swap: 0 0 0
Run Code Online (Sandbox Code Playgroud)
我在虚拟化服务器上运行 64 位 Debian。虚拟化软件是 OpenVZ。这是我的 Java 版本(我可以在停止两个 VM(当前正在运行的 4 …
在几天/几周没有使用它之后,我开始使用 netbeans/intelliJ/squirrelSQL,现在菜单不显示文本。只有下划线。我的系统:
任何的想法?
截屏:

我正在编写 chroot 监狱的创建脚本,该自动化的一部分包括将各种可执行文件及其依赖项复制到监狱中。我正在使用以下 bash 行来解析依赖项列表中的文件路径(例如,对于 java):
$ ldd `which java` | grep -o '/[^()]*'
/lib/x86_64-linux-gnu/libz.so.1
/lib/x86_64-linux-gnu/libpthread.so.0
/lib/x86_64-linux-gnu/libdl.so.2
/lib/x86_64-linux-gnu/libc.so.6
/lib64/ld-linux-x86-64.so.2
Run Code Online (Sandbox Code Playgroud)
这对 Node.js 和 Python 非常有用,但是当我尝试java从监狱中执行时,出现错误:
java:加载共享库时出错:libjli.so:无法打开共享对象文件:没有这样的文件或目录
事实证明,依赖项列表中缺少libjli.so路径……至少那些ldd向我们展示的路径(第 5 行):
$ ldd `which java`
linux-vdso.so.1 => (0x00007ffff7f4d000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f7ac3928000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f7ac370c000)
libjli.so => not found
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f7ac3507000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f7ac317c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f7ac3b48000)
Run Code Online (Sandbox Code Playgroud)
我找到了文件...
$ find /usr/lib -name libjli.so
/usr/lib/jvm/java-6-openjdk-amd64/lib/amd64/jli/libjli.so
/usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/jli/libjli.so
Run Code Online (Sandbox Code Playgroud)
...但我想知道为什么它没有列出ldd。它显然是一个已知的依赖项,但路径未知?任何帮助表示赞赏!
我们正在运行 ubuntu 14.04,它仍然没有 openjdk8。我怀疑他们会很快解决这个问题。我们非常需要 jdk8。这个 openjdk-r ppa 足够安全吗?
我正在设置我新安装的 Ubuntu Mate 16.04,在设置 Android Studio 3.0 时我遇到了这个:

看来安装程序试图 反复从https://dl.google.com/android/repository/android_m2repository_r47.zip下载 ,我认为它内部失败了。
当我在浏览器中尝试 URL 时,它仍然有效。有人熟悉这个问题吗?
[补充]
• Java 版本:8u152
• 执行:sudo apt-get install libc6:i386 libncurses5:i386 libstdc++6:i386 lib32z1 libbz2-1.0:i386