باستخدام أوامر SUDO في الكاكاو والهدف C؟
-
22-09-2019 - |
سؤال
ما هي الطريقة الصحيحة لتشغيل شيء مثل $sudo touch folder_name
أو $sudo rm
من داخل Objective-C/Cocoa؟ أقوم بتغيير بعض الملفات وأتحرك حول بعض الملفات وأحتاج إلى امتيازات مرتفعة. أي عينة رمز سيكون موضع تقدير كبير. شكرًا.
المحلول
طريقة واحدة للقيام بذلك هي AuthorizationExecuteWithPrivileges()
, ، لكن هذا محبط للمسار الطبيعي للأشياء. بشكل أساسي للمثبتات ، أجمع.
شيء مثل:
AuthorizationRef auth = NULL;
OSStatus err = AuthorizationCreate(NULL, kAuthorizationEmptyEnvironment, kAuthorizationFlagInteractionAllowed, &auth);
err = AuthorizationExecuteWithPrivileges(auth, command, kAuthorizationFlagDefaults, args, NULL);
وتضيف فحصًا مناسبًا لـ err
...
انظر تفويض توثيق.
نصائح أخرى
هناك عدة طرق للقيام بذلك. أي واحد تختاره يعتمد على ما تريد القيام به. إن أبسط طريقة وأكثرها غير ضرورية هي تعيين S-bit البسيط على أداة مساعدة إضافية تتصل بها من التعليمات البرمجية الخاصة بك وتفعل ما يحتاج إلى حقوق المسؤول. ألق نظرة على BetterAuthorizationsample للحصول على أكثر الطرق الفاخرة والتعقيد لتنفيذ رمز مميز.
ال دليل برمجة خدمات التفويض يمنحك كل ما تحتاجه.