unix - запустить команду от имени другого пользователя [закрыто]

Я новичок в Unix. Я пытаюсь запустить сценарий оболочки и команду от имени другого пользователя.

Например: Я вошел как user1 и хочу выполнить скрипт как user2. Я не хочу запрашивать пароль и хочу, чтобы он вводился автоматически. Я знаю об аутентификации с открытым ключом, но я пытаюсь найти что-то вроде:

sudo -u user2 script.sh

Я пытаюсь cron это, поэтому я не хочу запрос пароля. Я хочу, чтобы это обрабатывалось в самой команде sudo.

пожалуйста помоги

 DaveRlz02 янв. 2015 г., 17:07
Я "никогда не пойму это" не по теме " вещь о переполнении стека - мне часто кажется, что она используется людьми, которые не знают технологию, о которой идет речь, или не понимают сам вопрос.

Ответы на вопрос(2)

/etc/sudoers как говорит Игорь, или просто запланируйте команду вuser2crontab в первую очередь.

Вы можете добавить опцию NOPASSWD к/etc/sudoers файл. Но, возможно, это не очень хорошо для вас из соображений безопасности.

user    user2 = NOPASSWD: /usr/local/bin/script.sh

Другой вариант, который у вас есть: использоватьsudo, но запустить его не напрямую из какого-либо скрипта, а используяpexpect или жеexpect, который введет пароль для вас. Это также может быть не идеальным с точки зрения безопасности, потому что вам нужно сохранить пароль в скрипте.

Сexpect Вы можете сделать что-то вроде:

#!/usr/bin/expect
set password "megapassword"
spawn /bin/sudo -u user1 /usr/local/bin/script.sh
expect "password for user:"
send "$password\r"
expect eof

Не забудьте установить 500 разрешений для этого файла.

Сpexpect (это модуль Python) это будет выглядеть так:

import pexpect
password = "megapassword"
p = pexpect.spawn("sudo -u user1 /usr/local/bin/script.sh")
i = p.expect([".ssword:*", pexpect.EOF])
p.sendline(password)

Если вы запустите команду вcron и можете добавить команду в crontab пользователя user1, вы также можете сделать это. Это может быть лучшим решением.

user1$ crontab -e
 19 июн. 2012 г., 18:55
@Kannan Lg: Да, мы можем!
 Kannan Lg19 июн. 2012 г., 18:43
Да, вы правы, я вообще не хочу отключать пароль, но хотел ввести пароль во время выполнения sudo. Есть ли способ? :(

Ваш ответ на вопрос