我有一个非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
。这可能是因为用户foo
不是group的成员bar
。chown
这意味着必须在运行之前存储许可,然后再patch
添加两行代码。patch
创建新文件,这就是为什么它拥有有效的用户凭据的原因。
解决方法:用于patch -o
创建临时文件,然后将cat
tmp文件简单地转换为原始文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句