su, использующий здесь документ

файл: test.sh

who
su superuser <<BELUGA
mysuperpassword
BELUGA
who

$./test.sh

просто ожидает входа. Что я делаю неправильно? Существует ли способ автоматизировать это?

1
задан 24.03.2010, 19:16

3 ответа

Вы хотите использовать "ожидать" команду для передачи Вашего имени пользователя и пароля.

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

3
ответ дан 12.12.2019, 07:48

Я думаю, что было бы намного лучше устанавливать/использовать sudo с конфигурацией конфигурации, которая позволяет NOPASSWD для определенного действия, которое Вы пытаетесь автоматизировать.

Будет намного более безопасно позволить определенную команду через sudo затем, это должно было бы сохранить Ваш пароль root в текстовом файле где-нибудь.

4
ответ дан 12.12.2019, 07:48

Запущение скрипта как пользователь и наличие его обновляют свои полномочия базироваться, вероятно, плохая идея. Лучшее решение состояло бы в том, чтобы запустить скрипт как корень и иметь его, понижают его полномочия по мере необходимости:

#!/bin/sh
UN=user
whoami
sudo -u $UN whoami

Когда выполнено как корень (принятие user действительный пользователь), вывод должен быть этим:

root
user

Однако, если Вы действительно хотите выполнить сценарий как пользователь и смочь выполнить команды как корень, существует 2 опции, о которых я знаю.

  1. Использование sudo с сохраненным паролем:

    #!/bin/sh
    whoami
    sudo -S -p "" whoami <<EOF
    mysuperpassword
    EOF
    

    Который произведет (когда выполнено как 'пользователь'):

    user
    root
    
  2. Используйте sudo без пароля.
    Добавьте список команд, с которыми Вы хотите столкнуться /etc/sudoers файл путем выполнения visudo как корень. Например, для разрешения user выполнять команды apache2ctl и whoami, добавьте следующее:

    User_Alias SPECIAL = user
    Cmnd_Alias SPECIAL_COMMANDS = /usr/sbin/apache2ctl, /usr/bin/whoami
    SPECIAL ALL = NOPASSWD: SPECIAL_COMMANDS
    

    Или если Вы действительно доверяете user, если это - Вы, например, можно позволить пользователю выполнять любую команду без пароля:

    user ALL=(ALL) NOPASSWD: ALL
    

    Затем, когда следующий скрипт запущен user:

    #!/bin/sh
    whoami
    sudo whoami
    

    Это произведет:

    user
    root
    
2
ответ дан 12.12.2019, 07:48

Теги

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