ルートに属するディレクトリ構造の所有権をbashスクリプトを実行している現在のユーザーに変更するには、スクリプトに何が必要ですか?

ルートに属するディレクトリ構造の所有権をbashスクリプトを実行している現在のユーザーに変更するには、スクリプトに何が必要ですか?

私のbashスクリプトには次の部分があります。

su root -c chown -R smithb:other /export/home/smithb/workspace/rootownsit/
exit

このディレクトリrootownsitと2つのサブディレクトリはで作成され所有されますroot。上記の内容がうまくいくと思いましたが、そうではありませんでした。私のユーザーとしてbashスクリプトを実行すると、rootパスワードの入力を求められ、rootchownパスワードを入力すると使用メッセージが表示されます。 rootownsitディレクトリとそのサブディレクトリの所有権を変更する必要があります。

答え1

これは単純な構文問題です。suターゲットユーザーのログインシェルで解析される単一の(オプションの)コマンド引数を使用します。ここでrootとして実行されるコマンドのパラメータは-cですchown。単一の引数になるように、コマンドをスクリプト内で引用符で囲みます。

su -c 'chown -R smithb:other /export/home/smithb/workspace/rootownsit/' root

組み込みコマンドはexitスクリプトを終了します。これをしたくない場合は呼び出さないでくださいexit

関連情報