如何以另一个用户身份从 root 运行脚本(使用用户 PATH)

如何以另一个用户身份从 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到每一行,但这不是一个好的办法。

这是我之前的一个扩展问题,我说的不够精确。

问题

我如何以实用的方式将所有这些命令作为脚本运行?

答案1

为什么不把它变成一个实际的可执行脚本,并在以其他用户身份运行时调用该脚本su

答案2

shell 脚本就是 shell 脚本。这意味着您不仅可以运行常规的 shell 命令,还可以执行您正在使用的任何 shell 的内置命令。我们可以稍微修改您的脚本,让所有命令都像在运行此脚本的用户的主目录中一样运行。

#!/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/

相关内容