A execução do aplicativo java como raiz no doshutdown do apcupsd causa java: Permissão negada

1

Estou tentando personalizar o script de evento do doshutdown do apcupsd para executar um determinado programa java que, entre outras coisas, no final, hiberna todas as máquinas virtuais e, finalmente, o próprio sistema principal.

/ etc / apcupsd / doshutdown está aqui:

[root@localhost apcupsd]# cat doshutdown
#!/bin/bash
#
# This shell script is placed in /etc/apcupsd
# will be called by /etc/apcupsd/apccontrol when apcupsd
# thinks to shutdown the system
# Instead of shutdown we first hibernate all VMWare VMs and the the system

wall ${USER} "Hibernate of VMs and system begins now."

rm /var/log/apcupsd_doshutdown_error.log
/usr/bin/java -version 2>> /var/log/apcupsd_doshutdown_error.log
/usr/bin/java -Dlogback.configurationFile=/etc/apcupsd/BTool.xml -cp /etc/apcupsd/BTool-assembly-1.0.jar Shutdown hibernate NOFLAG 2>> /var/log/apcupsd_doshutdown_error.log

wall ${USER} "Hibernate done."

# Do not run default shutdown after this!!!
exit 99

Quando o no-break é forçado a funcionar com bateria, o doshutdown (ou apcupsd) é impresso na parede

Power failure on UPS localhost.localdomain. Running on batteries.

root Hibernate of VMs and system begins now.

Battery time limit exceeded on UPS localhost.localdomain. Doing shutdown.

root Hibernate done.

apcupsd_doshutdown_error.log é:

/etc/apcupsd/doshutdown: line 11: /usr/bin/java: Permission denied
/etc/apcupsd/doshutdown: line 12: /usr/bin/java: Permission denied

Assim, o script doshutdown é iniciado, mas falha ao executar o programa java.

As permissões do Java são:

lrwxrwxrwx. 1 root root 22 Sep 25 11:45 /usr/bin/java -> /etc/alternatives/java
lrwxrwxrwx. 1 root root 46 Sep 25 11:45 /etc/alternatives/java -> /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java
-rwxr-xr-x. 1 root root 9488 Jan 21 20:25 /usr/lib/jvm/jre-1.8.0-openjdk.x86_64/bin/java

Eu posso executar o doshutdown do terminal como usuário comum ou como root, mas ele falha quando iniciado pelo apcupsd como root.

Eu posso rodar o java no terminal e a versão é

$ java -version
openjdk version "1.8.0_71"
OpenJDK Runtime Environment (build 1.8.0_71-b15)
OpenJDK 64-Bit Server VM (build 25.71-b15, mixed mode)

Distro:

CentOS release 6.7 (Final)
Linux localhost.localdomain 2.6.32-573.18.1.el6.x86_64 #1 SMP Tue Feb 9 22:46:17 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

Qual é o motivo do erro de permissão e como corrigi-lo?

EDITAR: Adicionado mais permissões de java, versão java e distro. Adicionado java -version ao script doshutdown e erro relacionado no log.

    
por user4955663 05.03.2016 / 23:14

0 respostas