Estou tentando proteger um aplicativo java usando o sandbox selinux.
Detalhes do sistema : Redhat 6 | x86_64 | nenhuma instalação de servidor x | jdk7 da versão oracle tar.gz | cgred e cgconfig são parados
O cmd (executado como root)
sandbox /root/jdk/bin/java -version
acima, o cmd falhou com
/root/jdk/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
Cavando, revelou que "libjli.so" é a biblioteca compartilhada RPATH. então eu pensei ok já que o sandbox está copiando meu bin / java para / tmp / sandbox_random, portanto, um caminho de código não será encontrado.
Em seguida, altero o RPATH usando o utilitário " chrpath
" e o altero para um valor de código de barras
Mas ainda assim mostrou o mesmo erro.
Em seguida, usei a opção -M -i do sandbox e executei o seguinte comando (incluí todo o arquivo .so sobre a reclamação):
sandbox -M -i /root/jdk/lib/amd64/jli/libjli.so -i /root/jdk/jre/lib/amd64/libjava.so -i /root/jdk/jre/lib/amd64/jvm.cfg -i /root/jdk/jre/lib/amd64/server/libjvm.so -i /root/jdk/jre/lib/amd64/libverify.so -i /root/jdk/jre/lib/amd64/libzip.so /root/jdk/bin/java -version
O seguinte comando resultou neste erro:
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007fb039000000, 2555904, 1) failed; error='Permission denied' (errno=13)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 2555904 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /root/hs_err_pid1270.log
Agora eu usei a strace para ver o que aconteceu e strace impresso (pequena seção)
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7fb15b6359d0) = 8268
close(4) = 0
read(3, "", 1048576) = 0
close(3) = 0
wait4(8268, Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f4579000000, 2555904, 1) failed; error='Permission denied' (errno=13)
Eu tenho espaço suficiente para ter certeza
Vocês podem indicar o que pode estar errado?