Como executar o script da raiz como outro usuário (com o usuário PATH)

1

Eu gostaria que esses comandos fossem executados como o usuário ss de 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/

então tudo é executado em /home/ss . A quarta linha requer $HOME/bin , como você pode ver na terceira linha.

A única maneira de fazer isso funcionar é adicionar su -c "command" ss a cada linha, o que não é um bom hack.

Esta é uma extensão da minha pergunta , onde eu não era preciso o suficiente.

Pergunta

Como executo todos esses comandos como um script de maneira prática?

    
por Sandra 02.11.2012 / 03:07

2 respostas

5

Por que você não o transforma em um script executável real e chama o script enquanto executa o outro usuário via su

    
por 02.11.2012 / 03:14
6

Um script de shell é exatamente isso, um script de shell. Isso significa que você não só pode executar comandos normais do shell, mas também pode executar os built-ins para qualquer shell que estiver usando. Poderíamos modificar levemente seu script para que todos os comandos sejam executados como se estivessem no diretório inicial de qualquer usuário que execute esse script.

#!/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/
    
por 02.11.2012 / 03:20