هو LaunchD Daemon أفضل طريق للذهاب للقراءة / الكتابة إلى الملفات المميزة في الكاكاو؟
-
13-09-2019 - |
سؤال
لدي تطبيق يجب أن أكون قادرا على الكتابة إلى أي ملفات تفضيلات مضيفية للمستخدم / الموجة الحالية (والذي يتطلب امتيازات المسؤولين في المرافق المركبات لكل تفضيلات مرجعية) وأيضا تمكين / تعطيل وكيل إطلاق Launchd عبر Plist (قابل للكتابة فقط عن طريق الجذر).
أنا استخدم SFAuthorizationView
لتطلب من المستخدمين المصادقة كمسؤول قبل تغيير هذه القيم.
أحاول أن أقرر أفضل طريقة للقيام بالتغيير الفعلي لهذه القيم.
يبدو أن خيار المخررة الرخيص هو استخدامها AuthorizationExecuteWithPrivileges()
و mv
أو defaults
, إما عن طريق Blauthentication أو إنشاء شيء مماثل نفسي. الجانب السلبي لهذا لا يحصل على قيمة العودة لأي تطبيق سطر الأوامر أنا أعدم، بالإضافة إلى بعض الأخطاء الباطنية الفردية التي واجهتها (مثل الحصول على خطأ A -60008 في مواقف معينة). ينصح بشدة بهذا التفاح، بوضوح، لكن يبدو أن الناس يفعلون ذلك ولديهم بعض النجاح.
يبدو أن خيار المخربكي الثاني هو كله إنشاء تطبيق مساعد مع مجموعة بت Suid و --self-repair
الخيار كما تمت مناقشته في أماكن مختلفة. هذا يبدو ممكنا، ولكن كما أنه ليس أقل مشكلة أقل من الخيار الثالث.
الخيار الثالث هو إنشاء مرحلة كاملة launchd
الخفي الذي سيتم تشغيله كجذر والتواصل مع طلبي عبر مأخذ. يبدو أن هذا هو القليل من المبالك لقراءة وكتابة بعض الملفات المعدودة، ولكن من الممكن أيضا أن أجد استخدامات أخرى لأسفل الطريق، ولن تكون الخفي الوحيد لتطبيقي، لذلك لا يبدو من غير المعقول فقط أضف آخر.
أنا أفكر في تعديل هذا عينة من الرموز لأغراض بلدي.
سؤالي:
هل يبدو خيار TaunchD Daemon كأفضل طريق للذهاب لهذا، أم أنه يوجد طريق أسهل بكثير؟
هل استخدم أي شخص آخر الكود كأساس لشيء مماثل، وهل يرى أي شخص أي مشاكل صارخة معها في عداد المفقودين؟ لقد استخدمتها بنجاح في تطبيق اختبار، لكنني سأكون فضوليا لسماع رأيك في ذلك.
المحلول
launchd
هو بالتأكيد الأفضل والأكثر أمانا للذهاب: ستحتاج إلى حزمة مثبت للحصول على مساعدك في مكانه. هل تأكد من أن المساعد الخاص بك يفعل وما يمكن أن يفعل شيئا على الإطلاق باستثناء تحرير الملفات التي ترغب في استهدافها.لا توجد خبرة ث / الرمز، لكنها تعتمد على bettereAuthorizationsample، لذلك هذه بداية لطيفة.
نصائح أخرى
هناك أيضا openauth
API، والتي تتيح لك فتح الملفات التي تتطلب امتيازات الجذر.