Я создал сценарий оболочки для запуска a server
программа.
startup.sh start
То, когда выше команды будет выполняться, она попробует, запускается server
как adminuser
. Достигнуть этого моего сценария записало как это.
SUBIT="su - adminuser -c "
SERVER_BOX_COMMAND_A="Server"
##############
# Function to start cluster
function start(){
$SUBIT "$SERVER_BOX_COMMAND_A"
}
Когда я выполняю команду, она просит пароль. Есть ли любой другой способ сделать это так, он не попросит пароль.
Я видел это поведение в сценарии запуска Jboss, предоставленном на jboss. Тот сценарий изменяет пользователя на jboss
и затем запускает jboss сервер. Я хотел, чтобы мой сценарий вел себя тот же путь.
Если я не пропускаю что-то, что Вы спрашиваете, не возможно.
jboss сценарий разработан к
Но то, что Вы спрашиваете,
Поэтому Вам всегда будет нужен пароль, неважно, команда, которую Вы пробуете.
Есть ли какая-либо определенная причина, что Вашему серверу нужны поднятые полномочия?
Как JBoss, Вы могли проверить, чтобы видеть - ли Вы целевой пользователь прежде, чем выполнить Вашу команду.
TARGET_USER='adminuser'
SUBIT="su - adminuser -c "
SERVER_BOX_COMMAND_A="Server"
##############
# Function to start cluster
function start(){
if [[ `whoami` == "$TARGET_USER" ]]
then
$SERVER_BOX_COMMAND_A
else
$SUBIT "$SERVER_BOX_COMMAND_A"
fi
}
Вы могли всегда использовать бит setuid. Сделайте владельца файла пользователем, Вы хотите запустить скрипт как и затем сделать Ваш сценарий setuid.
Обратите внимание, что это может быть угрозой безопасности, так удостоверьтесь, что у пользователя есть только необходимые полномочия. В конце концов, непривилегированный пользователь может запустить тот скрипт, правильно?
Править: Не делайте сценарии setuid. Вашим jboss примером является программа, которая отбрасывает полномочия, не сценарий.