Выполненная команда Linux как предопределенный пользователь

Я создал сценарий оболочки для запуска 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 сервер. Я хотел, чтобы мой сценарий вел себя тот же путь.

6
задан 30.03.2010, 14:29

4 ответа

Если я не пропускаю что-то, что Вы спрашиваете, не возможно.

jboss сценарий разработан к

  1. Запустите как корень
  2. Переключитесь на jboss пользователя, который имеет меньше полномочий

Но то, что Вы спрашиваете,

  1. Запустите как non-privilaged пользователь
  2. Переключитесь на администратора/корень, который имеет больше полномочий.

Поэтому Вам всегда будет нужен пароль, неважно, команда, которую Вы пробуете.

Есть ли какая-либо определенная причина, что Вашему серверу нужны поднятые полномочия?

1
ответ дан 07.12.2019, 16:16

Если Вы - корень, просто используйте sudo:

$1 sudo -u adminuser startup.sh start
3
ответ дан 07.12.2019, 16:16

Как 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
}
1
ответ дан 07.12.2019, 16:16

Вы могли всегда использовать бит setuid. Сделайте владельца файла пользователем, Вы хотите запустить скрипт как и затем сделать Ваш сценарий setuid.

Обратите внимание, что это может быть угрозой безопасности, так удостоверьтесь, что у пользователя есть только необходимые полномочия. В конце концов, непривилегированный пользователь может запустить тот скрипт, правильно?

Править: Не делайте сценарии setuid. Вашим jboss примером является программа, которая отбрасывает полномочия, не сценарий.

0
ответ дан 07.12.2019, 16:16

Теги

Похожие вопросы