インストールするbashスクリプトを作成しています。そして構成いくつかのプログラム。
スクリプトを使用するにはパッケージをインストールする必要があるため、私はスクリプトをルートとして実行しています - それ自体は問題ありません(つまり、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
それとも、通常のユーザーとしてサブシェルでステートメントを実行するなど、これを処理するより良い方法はありますか?
答え1
正しい方向を教えてくれた@jordanmに感謝します。効果的な解決策を得ました。
- 文書は以下で確認できます。
info coreutil 'install invocation'
デフォルトでは、GNUコマンドはファイルを最終的な宛先に移動するときにinstall
ファイルを管理するためのさまざまなオプションを提供します。
一時ファイルを作成してtemp.txt
実行します。
install temp.txt final/final.txt --owner=regular_user --mode=755