我正在编写一些bash脚本来安装和配置一些程序。
因为脚本需要安装软件包-我以root身份运行脚本-本身没有问题(即,我具有root特权等)。
但是,一旦安装了软件包,脚本就需要配置普通用户文件和获取插件等,例如
sed i s/xxx/mod_to_make/ <user_config_file>
git clone <plugin>
wget <plugin>
理想情况下,我将以常规用户身份执行此操作,因为我不希望这些git repos和文件归root拥有,
一个示例程序片段类似于
#! /bin/bash
# Because this statement needs to be run as root - the entire script is
# also run as root
apt-get install -y tmux
cat << EOF > ~/.tmux.conf
#
# config stuff
#
EOF
我是否需要在脚本末尾手动将文件特权还原为普通用户,例如
chown $USER:$USER ~/.tmux.conf
chmod 755 ~/.tmux.conf
或者编写2个单独的脚本,其中1个由root用户运行,另一个作为普通用户运行?
还是有更好的方法来解决这个问题?
如果您有一堆应该以普通用户(而不是root用户)身份运行的连续代码,则可以执行以下操作:
sudo -s -u $USER<<EOF
echo "running codes as normal user"
EOF
注意:您可能需要检查$USER
是普通用户还是root用户。如果在根外壳中运行脚本,则值$USER
will将是root
正常行为和预期行为,即,您要创建的任何用户特定文件都应在根环境中创建。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句