هو LaunchD Daemon أفضل طريق للذهاب للقراءة / الكتابة إلى الملفات المميزة في الكاكاو؟

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

سؤال

لدي تطبيق يجب أن أكون قادرا على الكتابة إلى أي ملفات تفضيلات مضيفية للمستخدم / الموجة الحالية (والذي يتطلب امتيازات المسؤولين في المرافق المركبات لكل تفضيلات مرجعية) وأيضا تمكين / تعطيل وكيل إطلاق Launchd عبر Plist (قابل للكتابة فقط عن طريق الجذر).

أنا استخدم SFAuthorizationView لتطلب من المستخدمين المصادقة كمسؤول قبل تغيير هذه القيم.

أحاول أن أقرر أفضل طريقة للقيام بالتغيير الفعلي لهذه القيم.

يبدو أن خيار المخررة الرخيص هو استخدامها AuthorizationExecuteWithPrivileges() و mv أو defaults, إما عن طريق Blauthentication أو إنشاء شيء مماثل نفسي. الجانب السلبي لهذا لا يحصل على قيمة العودة لأي تطبيق سطر الأوامر أنا أعدم، بالإضافة إلى بعض الأخطاء الباطنية الفردية التي واجهتها (مثل الحصول على خطأ A -60008 في مواقف معينة). ينصح بشدة بهذا التفاح، بوضوح، لكن يبدو أن الناس يفعلون ذلك ولديهم بعض النجاح.

يبدو أن خيار المخربكي الثاني هو كله إنشاء تطبيق مساعد مع مجموعة بت Suid و --self-repair الخيار كما تمت مناقشته في أماكن مختلفة. هذا يبدو ممكنا، ولكن كما أنه ليس أقل مشكلة أقل من الخيار الثالث.

الخيار الثالث هو إنشاء مرحلة كاملة launchd الخفي الذي سيتم تشغيله كجذر والتواصل مع طلبي عبر مأخذ. يبدو أن هذا هو القليل من المبالك لقراءة وكتابة بعض الملفات المعدودة، ولكن من الممكن أيضا أن أجد استخدامات أخرى لأسفل الطريق، ولن تكون الخفي الوحيد لتطبيقي، لذلك لا يبدو من غير المعقول فقط أضف آخر.

أنا أفكر في تعديل هذا عينة من الرموز لأغراض بلدي.

سؤالي:

  1. هل يبدو خيار TaunchD Daemon كأفضل طريق للذهاب لهذا، أم أنه يوجد طريق أسهل بكثير؟

  2. هل استخدم أي شخص آخر الكود كأساس لشيء مماثل، وهل يرى أي شخص أي مشاكل صارخة معها في عداد المفقودين؟ لقد استخدمتها بنجاح في تطبيق اختبار، لكنني سأكون فضوليا لسماع رأيك في ذلك.

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

المحلول

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

  2. لا توجد خبرة ث / الرمز، لكنها تعتمد على bettereAuthorizationsample، لذلك هذه بداية لطيفة.

نصائح أخرى

هناك أيضا openauth API، والتي تتيح لك فتح الملفات التي تتطلب امتيازات الجذر.

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