以root身份运行bash安装脚本-如何处理普通用户的文件?

the_velour_fog

我正在编写一些bash脚本来安装和配置一些程序。
因为脚本需要安装软件包-我以root身份运行脚本-本身没有问题(即,我具有root特权等)。

但是,一旦安装了软件包,脚本就需要配置普通用户文件和获取插件等,例如

  • sed i s/xxx/mod_to_make/ <user_config_file>
  • git clone <plugin>
  • wget <plugin>
  • ETC

理想情况下,我将以常规用户身份执行此操作,因为我不希望这些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用户。如果在根外壳中运行脚本,则值$USERwill将是root正常行为和预期行为,即,您要创建的任何用户特定文件都应在根环境中创建。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何以普通用户身份运行 iex?

如何运行包安装为普通用户

以root用户身份运行的脚本可以以普通用户身份运行另一个脚本吗?

在root脚本中以普通用户身份运行python run命令

我以root身份安装了Chrome;为什么不能以root用户或普通用户身份运行它?

如何以普通用户身份启动进程?

如何以普通用户身份挂载分区?

使用sudo运行bash脚本,以普通用户身份使用某些命令

如何以普通用户身份手动挂载以读写方式运行的linux文件系统?

以普通用户身份启动X

以普通用户身份创建具有root拥有的文件的tar

以root身份安装事物并以普通用户身份访问这些事物

如何以root身份远程发送“ xmessage”给使用“ x”会话登录的普通用户?

如何在NixOS中以普通用户身份安装内部驱动器?

以普通用户身份(非root用户)安装Gentoo软件包

我如何才能能够以普通用户身份运行cryptdisks_start?

在 Fedora 32 上以普通用户身份运行 vncserver

如何配置CentOS 6.4以允许普通用户运行startx,而无需安装Gnome / KDE?

用 root 运行脚本的某些部分,用普通用户运行其他部分

以普通用户而不是 root 身份运行 Incron 守护进程

如何检查bash脚本中是否以root身份运行

以root用户和普通用户身份打开时,文件管理器显示不同的行为

如何使用root用户以普通用户创建的套接字

在python中如何从root用户获取普通用户名?

如何为普通用户启动/停止Tomcat(Linux CentOS中的root用户除外)

无法以管理员身份运行文件,但如果我以普通用户身份运行则可以

如何允许普通用户运行超级用户命令(来自/ usr / sbin)

通过以普通用户身份登录来访问根文件

Linux,将文件权限从root切换到普通用户