كيف يمكنني الحفاظ على القليل Setuid في أرشيف القطران مع أرشيف بيرل :: القطران؟

StackOverflow https://stackoverflow.com/questions/580653

  •  06-09-2019
  •  | 
  •  

سؤال

أنا أستخدم بيرل الأرشيف :: القطران وحدة. يحافظ على أذونات الملف ولكن لا يحافظ على القليل اللزج. في الطرف الآخر حيث استخراج الأرشيف، تختفي جميع البتات اللزجة. أعتقد أن نظام التشغيل UNIX / Linux يخزن هذه البتات اللزجة في مكان آخر. كيف يمكنني جعل الأرشيف الحفاظ على البتات اللزجة أيضا؟

باستخدام التبديل -p إلى القطر يحافظ عليه ولكن كيف أفعل ذلك باستخدام الأرشيف :: القطرانب أنا أستخدم وحدة بيرل على كلا الجانبين.

هل كانت مفيدة؟

المحلول

وفقا للمصدر المناسب، أرشيف :: ملف TAR :: ملفات من البتات العالية من الوضع. يمكنك تجربة التعويذ السحري التالي في بداية البرنامج النصي الخاص بك (قبل أن يكون أي شيء قد أشار إلى الأرشيف :: TAR) ومعرفة ما إذا كان هذا يفسد ذلك:

use Archive::Tar::Constant ();
BEGIN {
    local $SIG{__WARN__} = sub{};
    *Archive::Tar::Constant::STRIP_MODE = sub(){ sub {shift} };
}
...
use Archive::Tar;
...

Explanation موجز: Strip_Mode هو ثابت يحتوي على روتين فرعي يمكن اجتياز وضع RAW وإرجاع الوضع الذي يجب تخزينه. وعادة ما يتم ضبطها على

sub { shift() & 0777 }

لأنها ثابتة، مستوردة من الأرشيف :: TAR :: ثابت في الأرشيف :: ملف TAR :: ملف واستخدامه، مهما تم ضبطه سيتم إبزيمه في أرشيف :: TUR :: ملف كما هو مجمعة. لذلك لتغييره، يجب تغيير الثابت قبل أن ينطوي، وهذا هو، قبل أن يتم تحميل ملف الأرشيف :: TAR :: الملف من أي وقت مضى.

ملاحظة: نظرا لأن تغيير ثابت غير قابل للإخلاء عرضة للخطأ (تغييره بعد فوات الأوان حتى يكون لديك أي تأثير)، فإنه يولد عادة تحذيرا شديدا لا يمكن تعطيله بالوسائل المعتادة.

نصائح أخرى

لست متأكدا، ولكن على قيادة القطران الرسمي، تحتاج إلى المرور -p. لجعل هذا يحدث

قد ترغب في إلقاء نظرة على الأرشيف :: وثائق القطران للحصول على التفاصيل. من لمحة موجزة، يبدو ذلك

$Archive::Tar::CHMOD = 1;

يجب أن تفعل ما تريد، على الرغم من أن الوثائق تدعي أن الإعداد أعلاه هو الافتراضي. قد يكون هذا الأرشيف :: شرائط القطران قبالة أجزاء وضع الدرجة العليا مثل القليل اللزج.

هو الأرشيف الذي تم إنشاؤه واستخراجه مع الأرشيف :: القطران، أو هل تستخدم برنامج القطران القياسي في نهاية واحدة أو أخرى؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top