cp -a 保留非 root 用户的所有权

cp -a 保留非 root 用户的所有权

当我从非 root 用户调用时cp -a 1 2,所有权被保留,尽管文件1属于另一个用户。我的理解是,这是不可能的。

到底是怎么回事?

答案1

确保cp二进制文件没有设置用户标识位设置...

$ ls -l /bin/cp /tmp/badcp1
-rwxr-xr-x 1 root root 103K Jul  1 11:59 /bin/cp
-rwsr-xr-x 1 root root 103K Jul  1 11:59 /tmp/badcp1
   ^

...并且它没有被分配任何特殊能力:

$ getcap /tmp/badcp2 
/tmp/badcp2 = cap_chown,cap_fowner+eip

如果其中一项属实,这个问题是一个好的开始。

相关内容