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
。
どのような方法がありますか?以前のようにファイルの所有権を維持するsu
、sudo
またはを使用しないでください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
使用して一時ファイルを作成し、cat
tmpファイルを元のファイルにコピーするだけです。