如何保持在tar归档与Perl的档案::焦油setuid位?
解决方案
根据该精细源,存档::焦油::文件剥掉来自模式高位。 您可以在脚本的开始试试下面的魔法咒语(任何东西之前 可能引用档案::焦油),看看是否颠覆它:
use Archive::Tar::Constant ();
BEGIN {
local $SIG{__WARN__} = sub{};
*Archive::Tar::Constant::STRIP_MODE = sub(){ sub {shift} };
}
...
use Archive::Tar;
...
简要说明:STRIP_MODE是包含可传递原始模式,并返回应当被存储的模式的子程序的常数。它通常被设置为
sub { shift() & 0777 }
由于它是一个常数,从存档::焦油::进口恒成存档::焦油::文件和使用存在,无论它被设置为将被内联到存档::焦油::文件,因为它被编译。因此,要改变它,不断必须改变它内联之前,也就是档案::焦油::文件曾经被加载之前。
N.B。因为改变可以内联常数是容易出错(改变之后也来不及产生任何影响)时,它通常产生不能由通常的方法来禁用一个严重的警告。
其他提示
不知道,但在官方的tar命令,你需要传递的 -p 的做到这一点。
您可能想看看档案::焦油文档了解详细情况。从一个简短的一瞥,似乎
$Archive::Tar::CHMOD = 1;
应该做你想要什么,尽管文件称,上面的设置是默认的。这可能是归档::焦油剥掉高阶模式位像粘滞位。
时都创建并与存档::焦油萃取,或者您使用的标准程序焦油在一端或其他?
的存档不隶属于 StackOverflow