Страница 1 из 1

Скрипт с изменением текущего пользователя

Добавлено: 13 апр 2016, 12:37
Doddger
Здравствуйте!
Есть необходимость в рамках одного скрипта устанавливать пакеты под другим пользователем:
запускаю, например, скрипт от user_0, потом в скрипте надо выполнить действия от user_1. Делаю так:
#!/bin/sh
# Какие-то действия от user_0
sudo su - user_1
echo user_1 login
exit
# Какие-то действия от user_0

В итоге получаю только выполнение sudo su - user_1 и система переходит в режим ожидания команд под пользователем user_1.
Как правильно написать такой скрипт?

Re: Скрипт с изменением текущего пользователя

Добавлено: 13 апр 2016, 14:22
Olej
Doddger писал(а): В итоге получаю только выполнение sudo su - user_1 и система переходит в режим ожидания команд под пользователем user_1.

Код: Выделить всё

olej@nvidia ~/2016_WORK/in.WORK/bash $ cat ./scr1
# действия user_1 :
whoami
su -c ./scr2 -m olga
# действия user_1 :
whoami

Код: Выделить всё

olej@nvidia ~/2016_WORK/in.WORK/bash $ cat ./scr2
# действия user_2 :
whoami
exit
Выполнение:

Код: Выделить всё

olej@nvidia ~/2016_WORK/in.WORK/bash $ ./scr1
olej
Пароль: 
olga
olej
Это не совсем то, что вы хотели, потому что пароль вас всё равно нужно вводить с терминала: команд su не допускает ввода пароля ни с канала, ни из файла.

Re: Скрипт с изменением текущего пользователя

Добавлено: 13 апр 2016, 15:39
Doddger
Спасибо, примерно это мне и надо.

Re: Скрипт с изменением текущего пользователя

Добавлено: 14 апр 2016, 08:14
Doddger
А как можно использовать окружение пользователя user_1?
Т.е. при использовании su -c ./src -m user_1 команда whoami возвращает user_1, но HOME = /home/user_0. Получается, что когда требуется доступ к домашней директории, возникает ошибка из-за отсутствия прав доступа.

Re: Скрипт с изменением текущего пользователя

Добавлено: 14 апр 2016, 12:52
Doddger
Надо просто убрать параметр -m