2

Пожалуйста, помогите мне запустить команду ниже из учетной записи user2. Я не могу понять, в чем проблема с этим.

[user2@localhost bin]# sudo -u user1 /opt/Tomcat/bin/shutdown.sh
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program
[user2@localhost bin]$ echo $JAVA_HOME
/opt/Java_7

Запись для user2 в файле sudoers выглядит так:

%user2 ALL=(user1) NOPASSWD:/opt/Tomcat/bin/startup.sh,/opt/Tomcat/bin/shutdown.sh

Однако переменные среды установлены. Я запускаю тот же скрипт с пользователем root, и он работает нормально.

[root@localhost bin]# /opt/Tomcat/bin/shutdown.sh
Using CATALINA_BASE:   /opt/Tomcat/
Using CATALINA_HOME:   /opt/Tomcat/
Using CATALINA_TMPDIR: /opt/Tomcat//temp
Using JRE_HOME:        /opt/Java_7
Using CLASSPATH:       /opt/Tomcat//bin/bootstrap.jar:/opt/Tomcat//bin/tomcat-juli.jar

Я проверил это дальше. JAVA_HOME установлен для обоих пользователей.

[root@localhost bin]# pwd
/opt/Tomcat/bin
[root@localhost bin]# echo $JAVA_HOME
/opt/Java_7
[root@localhost bin]# su user1
[user1@localhost bin]$ echo $JAVA_HOME
/opt/Java_7
[user1@localhost bin]$ exit
[root@localhost bin]# su user2
[user2@localhost bin]$ echo $JAVA_HOME
/opt/Java_7

[user2@localhost bin]$ ps aux | grep java
user1     47066  0.1 10.9 1004608 77364 pts/2   Sl   Jun12   0:15 /opt/Java_7/bin/java -Djava.util.logging.config.file=/opt/Tomcat//conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/opt/Tomcat//endorsed -classpath /opt/Tomcat//bin/bootstrap.jar:/opt/Tomcat//bin/tomcat-juli.jar -Dcatalina.base=/opt/Tomcat/ -Dcatalina.home=/opt/Tomcat/ -Djava.io.tmpdir=/opt/Tomcat//temp org.apache.catalina.startup.Bootstrap start
user2     49318  0.0  0.1 103240   840 pts/2    S+   02:11   0:00 grep java

[user2@localhost bin]$ sudo -u user1 /opt/Tomcat/bin/shutdown.sh
Neither the JAVA_HOME nor the JRE_HOME environment variable is defined
At least one of these environment variable is needed to run this program

2 ответа2

3

Чтобы сохранить переменную среды JAVA_HOME при использовании sudo, вы должны добавить в файл sudoers значения по Defaults env_keep +="JAVA_HOME" .

1

Если вы используете sudo -u user1 , то не будет использоваться ни JAVA_HOME-путь user2, ни путь root, вам нужно будет указать JAVA_HOME-путь user1. Судя по всему, вы не указали путь JAVA_HOME для user1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .