Назад | Перейти на главную страницу

Как запустить скрипт от root от имени другого пользователя (с пользователем PATH)

Я хотел бы, чтобы эти команды выполнялись как ss пользователь из root

mkdir bin
cp -r /opt/gitolite .
gitolite/install -ln
gitolite setup -pk ss.pub

mkdir -p .gitolite/hooks/common
ln -s /opt/pre-receive .gitolite/hooks/common/

так что все выполняется в /home/ss. 4-я строка требует $HOME/bin как вы можете видеть из 3-й строки.

Единственный способ заставить его работать - это добавить su -c "command" ss к каждой строке, что нехорошо.

Это продолжение моего предыдущего вопрос, где я не был достаточно точен.

Вопрос

Как на практике выполнить все эти команды в виде сценария?

Сценарий оболочки - это именно сценарий оболочки. Это означает, что вы можете не только запускать обычные команды оболочки, но также можете выполнять встроенные программы для любой используемой оболочки. Таким образом, мы могли бы немного изменить ваш сценарий, чтобы все команды выполнялись так, как если бы они выполнялись в домашнем каталоге любого пользователя, запускающего этот сценарий.

#!/bin/bash

cd $HOME
mkdir bin
cp -r /opt/gitolite .
gitolite/install -ln
gitolite setup -pk ss.pub

mkdir -p .gitolite/hooks/common
ln -s /opt/pre-receive .gitolite/hooks/common/

Почему бы вам не сделать его реальным исполняемым скриптом и не вызвать его во время работы от имени другого пользователя через su