我正在编写一些 bash 脚本来安装并配置一些程序。
因为脚本需要安装软件包 - 我以 root 身份运行脚本 - 这本身没有问题(即我有 root 权限等)。
但是,一旦安装了软件包,我想配置普通用户文件,理想情况下我会以普通用户身份执行此操作,因为创建的任何配置文件都将归 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
或者是否有更好的方法来处理这个问题 - 比如~/.tmux.conf
以普通用户身份在子 shell 中执行该语句?
答案1
感谢 @jordanm 为我指明了正确的方向,我得到了一个可行的解决方案。
- 文档可在
info coreutil 'install invocation'
基本上,当您将文件移动到最终目的地时,GNUinstall
命令提供了许多有关管理文件的选项。
只需创建一个临时文件temp.txt
,然后运行
install temp.txt final/final.txt --owner=regular_user --mode=755