Patch
不更改所有者和組的更新檔
我有一個非 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 和目標文件使用者和組都更改為
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
。這可能是因為 userfoo
不是 group 的成員bar
。chown
意味著必須在執行之前儲存權限patch
,添加另外兩行程式碼。
patch
創建新文件,這就是它擁有有效使用者憑據的原因。解決方法:使用
patch -o
創建臨時文件,然後簡單地cat
將 tmp 文件轉換為原始文件。