所有者とグループを変更せずにパッチ

所有者とグループを変更せずにパッチ

root以外のユーザーが所有するファイルがあります。

# ls -l example.php
-rw------- 1 foo bar ... example.php

次のコマンドを使用してパッチを適用しました。

patch -p0 <<-EOF
--- .../example.php.orig 2012-06-20 15:07:13.000000000 +0200
+++ .../example.php  2012-06-20 15:43:05.000000000 +0200
...
EOF

ルートとして、ターゲットファイルのユーザーとグループがに変更されましたroot。ページにこれへの参照が見つかりませんman

どのような方法がありますか?以前のようにファイルの所有権を維持するsusudoまたはを使用しないでくださいchown

  • suグループを指定できないようです。
  • sudo -u foo patch ...うまくいきますが、間違ったグループが設定されました。
  • sudo -u foo -g bar patch ...返品Sorry, user root is not allowed to execute '/usr/bin/patch' as foo:bar on hostname。ユーザーがfooグループのメンバーではないためですbar
  • chown実行する前に権限を保存し、さらに2行のpatchコードを追加する必要があることを意味します。

答え1

patch新しいファイルが作成されるため、有効なユーザー資格情報が保存されます。

回避策:をpatch -o使用して一時ファイルを作成し、cattmpファイルを元のファイルにコピーするだけです。

関連情報