تم تغيير قيود الوصول بواسطة android. تقييد الوصول إلى البيانات. آلية فرض قيود الوصول

30.07.2020

تحت التحكم بالاندرويديقول "تم تغيير قيود الوصول"

"لقد تم تغيير قيود الوصول." غالبًا ما تظهر هذه الرسالة على شاشاتهم. أصحاب الهواتف الذكية من عائلات طرازات Moto X وMoto G وNexus. يظهر هذا التنبيه بين الحين والآخر في شريط تمرير الإشعارات ثم يختفي. علاوة على ذلك، فإن المشكلة ليست بسبب خطأ في البرامج أو الأجهزة الخاصة بجهاز Android، بل هي مجرد رسالة بسيطة من وظيفة مكالمة الطوارئ الموجودة على phone e. على الرغم من أن هذا الإشعار غير ضار على الإطلاق، إلا أنه يزعج المستخدمين بل ويخيفهم. في الواقع، بالنسبة للأشخاص غير المطلعين، فإن عبارة "تم تغيير قيود الوصول" يمكن أن تعني أي شيء - بما في ذلك حظر نقل البيانات أو خدمة صوتية.

هل هناك طريقة للتخلص من " تغيرت قيود الوصول"؟ لا. هل يجب أن تتفاعل معها بطريقة معينة؟ في بعض الأحيان يكون الأمر يستحق ذلك. إذا فقدت القدرة على إرسال الرسائل القصيرة أو استقبال المكالمات، فقد تؤدي عملية إعادة التشغيل البسيطة إلى حل المشكلة. قد تظهر أيضًا رسالة خطأ إذا استخدمت بطاقة SIM معيبة أو قمت بتغيير البطاقات في الفتحات كثيرًا على مدار اليوم. ينبثق الإشعار أيضًا عند تغيير الشبكة، على سبيل المثال. من 2G إلى 3G أو 3G إلى 4G والعكس. وكل هذا يظهر بشكل أساسي عند استخدام بيانات الهاتف المحمول ويختفي عند الاتصال به شبكات الواي فاي. بشكل عام المشكلة الرئيسية هي فقدان الشبكة أو التحول من 3G إلى 2G - للمستخدمين الذين يحتاجون شبكة المحمولمع إمكانية نقل البيانات بسرعة عالية.

كيفية التخلص من إشعار "تم تغيير قيود الوصول" على نظام Android الهاتف الذكي ه؟

الطريقة الأولى: حظر تلقي الإشعارات الهاتف باستخدام تطبيق طرف ثالث
قبل استخدام هذه الطريقة، تحقق لمعرفة ما إذا كان جهاز Android الخاص بك يحتوي على ميزة مدمجة لإيقاف تشغيل الإشعارات. قد تكون هذه الميزة متاحة لـ هاتف ذكي يعمل بنظام التشغيل Android 5.0 Lollipop و6.0 Marshmallow، ولكن قد لا توفر بعض إصدارات النظام إمكانية الوصول إليه.

  1. انتقل إلى الإعدادات - >> الأصوات والإشعارات - >> التطبيقات.
  2. قم بالتمرير لأسفل وانقر على "الهاتف"؛
  3. حدد إيقاف تشغيل الإشعارات.
  4. إذا كانت هذه الوظيفة في الخاص بك لا يوجد هاتف، سيتعين عليك استخدام تطبيقات الطرف الثالث.

إذا كنت قد قمت بتجذير جهاز Android الخاص بك الهاتف الذكي، فيمكنك التعامل بسهولة مع المشكلة. يمكنك تنزيل التطبيقات التي من شأنها حظر إشعار "لقد تغيرت قيود الوصول". للقيام بذلك عليك أن تفعل الخطوات التالية:

  1. قم بتنزيل تطبيق يحظر الإشعارات - على سبيل المثال، Notify Block
  2. افتح التطبيق (سيُطلب منك منح حق الوصول إلى الإشعارات)، امنح حق الوصول المطلوب بالنقر فوق "موافق"
  3. بعد ذلك، في التطبيق، تحتاج إلى إلغاء تحديد خانة الاختيار "إخفاء تطبيقات النظام"؛
  4. قم بالتمرير لأسفل وانقر على الهاتف (com.android.phone).

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

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

  1. قم بتثبيت Notify Clean وافتحه
  2. قم بالتمرير لأسفل وانقر فوق الهاتف
  3. انقر على "تم تغيير قيود الوصول"؛
  4. أعد تشغيل جهازك وتأكد من حظر الإشعارات على جهازك.

ماذا تفعل إذا كان الهاتف الذكي أو الجهاز اللوحي الذي يعمل بنظام Android يعرض رسالة "تم تغيير قيود الوصول"

يمنح كائن التكوين "الدور" مجموعة من الحقوق للعمليات (الإجراءات) على كائنات التكوين.

دور "الحقوق الكاملة".

هذا مجرد دور (غير محدد مسبقًا) يتم فيه التحقق من كافة أنواع الحقوق لجميع كائنات التكوين.

وما يميزه عن الأدوار الأخرى هو وجود حق «الإدارة».

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

قيود الوصول على مستوى السجل

أمان مستوى الصف (RLS) - تقييد مستوى السجل.

تتيح لك آلية قيود الوصول إلى البيانات إدارة حقوق الوصول ليس فقط على مستوى كائنات بيانات التعريف، ولكن أيضًا على مستوى كائنات قاعدة البيانات. يمكن استخدام الكائنات التالية لتقييد الوصول إلى البيانات:

  • الأدوار,
  • معلمات الجلسة،
  • الخيارات الوظيفية،
  • الوحدات المشتركة المميزة,
  • الكلمة الرئيسيةمسموح به في لغة الاستعلام.

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

التنفيذ الفني لقيود الوصول في 1C

1C ينشئ طلبًا إلى نظام إدارة قواعد البيانات (DBMS). تضيف مجموعة الخادم قسمًا إلى الطلب، والذي يحتوي على نص شرط تقييد الوصول عبر RLS، ثم يتم إرسال هذا الطلب إلى نظام إدارة قواعد البيانات (DBMS)، ويتم إرجاع البيانات المستخرجة إلى عميل 1C.


هذه الآلية ستعمل لأي طلب من العميل:

مثل هذا التنفيذ للآلية يؤثر بشكل كبير على الأداء.

طرق لتجاوز قيود الوصول.

في العمليات الكبيرة كثيفة الاستخدام للموارد (معالجة إعادة نشر المستندات، على سبيل المثال)، يمكن نقل جزء من التعليمات البرمجية إلى الوحدات المميزة.

أ) وحدة مميزة - هذا وحدة مشتركةمع علامة "المتميز" في الخصائص.

خصوصيته هي أن التعليمات البرمجية الموجودة فيه يتم تنفيذها دون أي تحكم في حقوق الوصول، بما في ذلك RLS.


ب) أيضاً متميزيمكن تشغيل الوضع لوحدات كائن الوثيقة. ويتم ذلك في خصائص الوثيقة، العلم

  • معاملة مميزة عند إجراء
  • الوضع المميز عند إلغاء المعاملة


ب) الطريقة وضع الامتياز ()

يسمح لك أمر النظام بجعل جزء من التعليمات البرمجية لأي وحدة مميزة.

من السطر التالي من التعليمات البرمجية، سيتم تشغيل وضع التنفيذ المميز.

سيعمل حتى يتم تعطيل هذا الوضع أو حتى نهاية الإجراء / الوظيفة

(حقيقي)؛

// سيتم تنفيذ أي تعليمات برمجية هنا بدون التحكم في الحقوق وRLS

تعيين الوضع المميز(كذب )؛ // أو نهاية الإجراء / الوظيفة

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

إذا كان في إجراء أو وظيفة تستدعي طريقة تعيين الوضع المميز(خطأ) قام بأكثر من استدعاءات الأسلوب تعيين الوضع المميز(صحيح)، فيُطرح الاستثناء

وظيفة الوضع المميز() تُرجع True إذا كان الوضع المميز لا يزال مُمكّنًا، وFalse إذا تم تعطيله تمامًا. ولا يقوم هذا بتحليل عدد إعدادات الوضع المميز في وظيفة معينة.

سيتم أيضًا تنفيذ جميع الإجراءات والوظائف المطلوبة في الوضع المميز.


من الممكن أيضًا بدء جلسة مميزة. هذه جلسة يتم فيها إنشاء الوضع المميز منذ بداية النظام. علاوة على ذلك، أثناء تشغيل الطريقة الوضع المميز() سيُرجع دائمًا True، والقدرة على تعطيل الوضع المميز غير مدعومة. فقط المستخدم الذي لديه حق الوصول إلى الحقوق الإدارية(حق الإدارة). يمكنك بدء جلسة باستخدام المفتاح سطر الأوامرإطلاق تطبيق العميل UsePrivilegedMode أو معلمة سلسلة اتصال قاعدة المعلومات prmod .


السؤال الذي يطرح نفسه بطبيعة الحال: لماذا إذن يتم إعداد قيود الوصول على الإطلاق إذا كان من الممكن تجاوزها بسهولة؟

الوضع الآمن.

نعم، يمكنك كتابة معالجة خارجية باستخدام وضع التنفيذ المميز وتفريغ البيانات/التالفة. ولمنع ذلك، يحتوي النظام على طريقة سياق عام

SetSafeMode().

الوضع الآمن، من بين أمور أخرى، يتجاهل الوضع المميز.

ويجب ضبطه قبل استدعاء البرنامج العلاجات الخارجيةأو إجراءات ووظائف التصدير من وحداتها.

عند تنفيذ عمليات محظورة، يتم طرح استثناء في وقت التشغيل.

بالإضافة إلى ذلك، يمكنك تعطيل القدرة على التشغيل بشكل تفاعلي للمستخدمين على مستوى إعدادات الدور. التقارير الخارجيةوالمعالجة.

إعداد قيود الوصول

لا يمكن تكوين RLS إلا للحصول على الحقوق:

  • قراءة (اختيار)
  • إضافة (إدراج)
  • تغيير (تحديث)
  • يمسح

لعمليات القراءةوالحذف، يجب أن يتوافق الكائن الموجود في قاعدة البيانات مع قيود الوصول إلى البيانات.

بالنسبة لعملية الإضافةيجب أن يتوافق تقييد الوصول إلى البيانات مع الكائن المخطط كتابته في قاعدة البيانات.

لعملية التغييريجب أن يتوافق تقييد الوصول إلى البيانات مع الكائن قبل التغيير (حتى تتم قراءة الكائن) وبعد التغيير (حتى تتم كتابة الكائن).

بالنسبة لجميع الحقوق الأخرى لا يوجد مثل هذا الخيار.

دعونا نضيف قيدًا جديدًا لحق "القراءة" في دليل "التسميات". سيتم فتح قائمة الحقول التي يمكنك تكوين التقييد الإضافي لها.

وهذا يعني أنه إذا حاولت الوصول إلى الحقول المحددة، فسيتم تشغيل التقييد، ولكن إذا حاولت الوصول إلى الحقول غير المحددة، فلن يعمل التقييد.

إذا قمت بتحديد العلم " مجالات أخرى"، سيتم تكوين القيد لجميع حقول الجدول، باستثناء الحقول التي تم تعيين القيود عليها بشكل صريح.


*الميزة: للحصول على حقوق الإضافة والتغيير والحذف:

  • لا يمكن تكوين القيد إلا لجميع الحقول.
  • يمكن أن يكون هناك قيد واحد فقط.

بالنسبة إلى حق "القراءة"، يمكنك تكوين عدة شروط سيتم دمجها مع العامل المنطقي "AND".

في القيود المفروضة على كائنات قاعدة البيانات الأنواع التاليةلا يجوز استخدام كافة حقول كائن بيانات القيد الرئيسي:

  • في سجلات التراكم، يمكن أن تحتوي قيود الوصول فقط على قياسات للكائن الرئيسي للقيود؛
  • في السجلات المحاسبية، يمكن للقيود فقط استخدام قياسات الميزانية العمومية للهدف الرئيسي للقيود

إذا تم، في ظل ظروف الوصول المحدود إلى بيانات سجل التراكم المتداول، استخدام القياسات غير المدرجة في المجاميع، فعند الوصول إلى الجدول الافتراضي للدورات، لا يتم استخدام المجاميع المخزنة ويتم تنفيذ الطلب بالكامل وفقًا لـ جدول الحركة .

آلية فرض قيود الوصول.

أي عملية على البيانات المخزنة في قاعدة بيانات في 1C:Enterprise تؤدي في النهاية إلى استدعاء قاعدة البيانات مع بعض الطلبات لقراءة البيانات أو تغييرها. في عملية تنفيذ الاستعلامات إلى قاعدة البيانات، تفرض الآليات الداخلية لـ 1C:Enterprise قيودًا على الوصول. في هذه الحالة:

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

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

يتم دمج القيود المشتقة من دور واحد باستخدام عملية AND.

يتم دمج القيود المشتقة من أدوار مختلفة باستخدام عملية OR.

تتم إضافة الشروط التي تم إنشاؤها إلى استعلامات SQL التي يصل من خلالها 1C: Enterprise إلى نظام إدارة قواعد البيانات. عند الوصول إلى البيانات من خلال شروط تقييد الوصول، لا يتم إجراء فحص الحقوق (لا لكائنات بيانات التعريف ولا لكائنات قاعدة البيانات). علاوة على ذلك، فإن آلية إضافة الشروط تعتمد على طريقة تشغيل القيد المختارة "الكل" أو "المسموح به".


*الميزة: إذا كان لدى المستخدم حق الوصول إلى عدة أدوار مع قيود تم تكوينها على مستوى السجل لكائن واحد، ففي هذه الحالة تتم إضافة شروط القيود باستخدام العملية المنطقية "OR". بمعنى آخر، صلاحيات المستخدم تراكمية.

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

طريقة "كل شيء".

عند فرض قيود باستخدام طريقة "الكل"، تتم إضافة الشروط والحقول إلى استعلامات SQL حتى يتمكن 1C:Enterprise من الحصول على معلومات حول ما إذا كان قد تم استخدام البيانات المحظورة لمستخدم معين أثناء تنفيذ استعلام قاعدة البيانات أم لا. إذا تم استخدام البيانات المحظورة، فسيتم إحباط الطلب بسبب انتهاك الوصول.

يتم عرض فرض قيود الوصول باستخدام طريقة "الكل" بشكل تخطيطي في الشكل:


طريقة "مسموح بها".

عند تطبيق القيود باستخدام الطريقة "المسموح بها"، تتم إضافة الشروط إلى استعلامات SQL بحيث لا تؤثر السجلات المحظورة للمستخدم الحالي على نتيجة الاستعلام. بمعنى آخر، عند فرض قيود في الوضع "المسموح به"، يكون محظورًا لهذا المستخدمتعتبر السجلات مفقودة ولا تؤثر على نتيجة العملية الموضحة بشكل تخطيطي في الشكل:


يتم فرض قيود الوصول إلى البيانات على كائنات قاعدة البيانات في الوقت الذي يصل فيه 1C:Enterprise إلى قاعدة البيانات.

في إصدار خادم العميل من 1C:Enterprise، يتم تطبيق القيود على خادم 1C:Enterprise.

ومع ذلك، لن يعمل هذا الخيار (مسموح به) إذا قمنا في استعلام بالإشارة إلى جدول لم يتم تكوين قيود الوصول له، ولكنه يحتوي على مراجع إلى صفوف الجدول مع القيود المكونة. في هذه الحالة ستظهر نتيجة الاستعلام "<Объект не найден>......" بدلاً من قيمة الحقل المرجعي.


إذا كنت تقوم بتطوير تقرير أو معالجة باستخدام استعلامات التكوين القياسية أو المخصصة، تحقق دائمًا من علامة "مسموح به".لكي يعمل التقرير تحت أي مستخدممع أي مجموعة من الحقوق.

في حالة قراءة كائن للبيانات من قاعدة البيانات، لا يمكن تعيين علامة "مسموح به". ولذلك فمن الضروري تكوين التحديدات لقراءة الكائنات، مع مراعاة القيود المحتملة على حقوق الوصولللمستخدم. لا توجد وسيلة للحصول على البيانات المسموح بها فقط في تكنولوجيا الكائنات.

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

الممارسة 1. منشئ الاستعلام في إعدادات RLS.

لنقم بتأليف نص قسم "أين" في الاستعلام عن الدليل. يمكنك استخدام منشئ الاستعلام.
المصمم لديه مظهر مجردة.


علامة التبويب "الجداول".

سيكون الجدول الرئيسي هو جدول الكائن الذي يتم تكوين القيد له.

يمكنك أيضًا تحديد جداول أخرى وإعداد علاقات متنوعة بينها في علامة التبويب "العلاقات".

علامة التبويب "الشروط"

هنا يمكنك تكوين شروط تقييد الوصول الفعلية

دعونا نضيف شروطًا إلى سمة "السعر" في دليل التسميات للحصول على حق "القراءة" لجميع حقول الجدول.

""التسمية حيث التسمية.السعر> 500""

دعونا نرى كيف تعمل هذه القاعدة البسيطة. يحتوي جدول الدليل على العناصر التالية:


بعد إعداد تقييد الوصول، سيعرض الجدول العناصر التي تستوفي الشرط فقط:


كما اختفت المجموعات. دعونا نغير نص القيد

“التسمية حيث التسمية.السعر> 500

أو التسمية. هذه مجموعة"

حسنا، الآن هذا ما تحتاجه.


إذا قمت بإزالة عرض حقل "الكود" في إعدادات القائمة، فسيتم عرض جميع عناصر الدليل، أي. التقييد لم ينجح. إذا قمت بتعيين حقل "الرمز" ليتم عرضه، فسيعمل التقييد.


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


إذا حاولت الحصول على التفاصيل "المقيدة" برمجيًا، فسيتم أيضًا ظهور خطأ في الوصول.


علاوة على ذلك، لن يكون من الممكن الوصول إلى أي حقول للكائن من خلال رابط، لأنه عند تلقي رابط، يقرأ النظام الكائن بالكامل، وإذا كان يحتوي على تفاصيل "مقيدة"، فلن تتم قراءة الكائن.

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

بعد إعداد تقييد الوصول، تغير عرض السطر في قائمة الحقوق - أصبح باللون الرمادي وظهر رمز.

القيود عند إعداد الوصول (RLS).

  • لا يوجد قسم ملخص.
  • لا يمكن الوصول إلى جداول التسجيل الافتراضية؛
  • لا يمكنك استخدام المعلمات بشكل صريح؛
  • يمكن استخدامها في الاستعلامات المتداخلة أي>/span> أدوات لغة الاستعلام باستثناء:
    • المشغل في التسلسل الهرمي؛
    • النتائج المقترحات؛
    • نتائج الاستعلام المتداخلة يجب ألا يحتوي على أجزاء الجدول>/span>;
    • الجداول الافتراضية، وخاصة الأرصدة والتحولات

الممارسة 2. التسميات بالسعر الحالي.

قم بتقييد الوصول إذا كنت تريد عرض العناصر بسعر حالي أكبر من قيمة معينة، على سبيل المثال، 100.

حل:

نحن نضيف قاعدة جديدة لتقييد الوصول إلى دليل "Nomenclature" مع حق "القراءة".
حدد "حقول أخرى".
في المنشئ نضيف استعلامًا متداخلاً. في ذلك، حدد جدول تسجيل المعلومات "أسعار العناصر".
لا توجد علامة تبويب "الطلب" - فهذه إحدى ميزات مصمم الاستعلام لإنشاء طلب تقييد الوصول.
في علامة التبويب "خيارات متقدمة"، قم بتعيين "أول 999999999"، تظهر علامة التبويب "الطلب".
قمنا بإعداد الترتيب حسب حقل "الفترة" بترتيب تنازلي.
ثم قمنا بإعداد اتصال بين الجدول الرئيسي والاستعلام الفرعي حسب المرجع.


قوالب تقييد الوصول.

الممارسة 3. تقييد "الأطراف المقابلة" من حيث القيمة في ثابت.

لنقم بإعداد تقييد الوصول لدليل الأطراف المقابلة بناءً على القيمة المخزنة في الثابت.

بالإضافة إلى ذلك، تحتاج إلى إعداد تقييد لجميع الكائنات التي تستخدم دليل "الأطراف المقابلة" في التفاصيل.

حل

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

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

أنت الآن بحاجة إلى تكوين قيود الوصول لجميع الكائنات التي تستخدم رابط "الحسابات". دعنا نعثر عليهم باستخدام خدمة "البحث عن روابط لكائن ما".

لنقم بنسخ نص شرط RLS وتعديله قليلاً من دليل "الأطراف المقابلة". يجب أن يتم ذلك عدة مرات حيث يتم العثور على الأشياء.

أو استخدم نمط قيود الوصول لتجنب مشكلات تكرار التعليمات البرمجية.

يتم تكوين قوالب تقييد الوصول على مستوى الدور ويمكن استخدامها لأي كائن داخل الدور الذي تم تحريره.

يمكنك إضافة أي جزء من نص تقييد الوصول إلى القالب. يتم استدعاء القالب باستخدام الرمز "#". على سبيل المثال، #TemplateContractor.

من خلال # في 1C تتم كتابة التعليمات إلى المعالج المسبق. في سياق تنفيذ إعدادات تقييد الوصول، تقوم المنصة باستبدال نص استدعاء القالب بنص القالب.

دعونا نضيف النص بعد كلمة "أين" إلى قالب "قالب المقاول"، باستثناء النص الخاص بـ EtoGroup.

المعلمات في قوالب تقييد الوصول.

دعونا نواصل حل المشكلة 2.

المشكلة الآن هي أن الجدول الرئيسي في الدليل يسمى "الطرف المقابل"، في مستند "فاتورة الاستلام". يُطلق على الحقل الذي يتم فحصه في الدليل اسم "الرابط"، ويسمى في المستند "الطرف المقابل".

دعونا نغير اسم الجدول الرئيسي في نص القالب إلى "#CurrentTable"

"#CurrentTable" هي معلمة محددة مسبقًا.

ومن خلال النقطة نشير إلى رقم معلمة الإدخال - ".#Parameter(1)

"#Parameter" هي أيضًا قيمة محددة مسبقًا. يمكن أن تحتوي على عدد عشوائي من معلمات الإدخال. تتم معالجتها عن طريق الرقم التسلسلي.

في نص قيود الوصول للدليل، نشير إلى ما يلي:

بالنسبة للوثيقة ما يلي:

"بيع البضائع حيث #TemplateCounterparty ("الطرف المقابل")"

عند استدعاء قالب تقييد الوصول، يجب تمرير المعلمات إليه كسلسلة فقط، أي بين علامتي اقتباس.

الجدول الرئيسي - التسميات

نص القالب هو:

#CurrentTable حيث #CurrentTable.#Parameter(1) = #Parameter(2)

يحتوي نص القالب على جزء من النص بلغة تقييد الوصول إلى البيانات وقد يحتوي على معلمات يتم تمييزها باستخدام الرمز "#".

قد يتبع الرمز "#" ما يلي:

  • إحدى الكلمات المفتاحية:
    • معلمة متبوعة برقم المعلمة في القالب بين قوسين؛
    • CurrentTable - يشير إلى إدراج الاسم الكامل للجدول الذي تم إنشاء القيد له في النص؛
    • اسم الجدول الحالي- يشير إلى إدراج الاسم الكامل للجدول في النص (كقيمة سلسلة، بين علامتي اقتباس) الذي يتم تطبيق التعليمات عليه، في الإصدار الحالي من اللغة المضمنة؛
    • الاسمCurrentAccessRight- يحتوي على اسم الحق الذي تم تنفيذ القيد الحالي عليه: READ، ADD، INSERT، CHANGE، UPDATE، DELETE؛
  • اسم معلمة القالب - يعني إدراج قيد معلمة القالب المقابل في النص؛
  • الرمز "#" - يشير إلى إدراج حرف واحد "#" في النص.

قد يحتوي تعبير تقييد الوصول على:

  • قالب تقييد الوصول المحدد في التنسيق #TemplateName("قيمة معلمة القالب 1"، "قيمة معلمة القالب 2"،...). يتم وضع كل معلمة قالب بين علامتي اقتباس مزدوجتين. إذا كان من الضروري تحديد معلمة رمز في النص اقتباسات مزدوجةيجب استخدام علامتي اقتباس مزدوجتين.
  • الدالة StrContains (WhereWeLook، WhatWeLook). تم تصميم الوظيفة للبحث عن تكرار سلسلة WhatWeLook في سلسلة WhereWeLook. إرجاع True إذا تم العثور على التكرار وإرجاع False بخلاف ذلك.
  • عامل التشغيل + لتسلسل السلسلة.

لتسهيل تحرير نص القالب، في علامة تبويب قوالب التقييد في نموذج الدور، انقر فوق الزر تعيين نص القالب. في مربع الحوار الذي يفتح، أدخل نص القالب وانقر فوق موافق.

لا يمكن تثبيتها باستخدام تعيين المعلمة ()أو شيء مماثل.

كمعلمات في في هذه الحالةالمتحدثون:

  • خيارات الجلسة
  • خيارات وظيفية

تتم قراءة معلمات الجلسة في طلب تقييد الوصول في الوضع المميز، أي دون التحكم في حقوق العمل بها.

الممارسة 4. الوصول إلى الأطراف المقابلة "الخاصة بك".

من الضروري تكوين تقييد وصول المستخدم الحالي إلى الأطراف المقابلة "الخاصة به".

يوجد دليل "المستخدمين"، ودليل "الأطراف المقابلة"، والمستندات التي تحتوي على تفاصيل "الطرف المقابل".

يجب أن يرى المستخدم الحالي البيانات فقط للأطراف المقابلة التي تم إنشاء اتصال معه.

يحتاج الاتصال أيضًا إلى التكوين.

الخيارات الممكنة:

إقامة اتصالات بين المستخدم والطرف المقابل

  • التفاصيل في دليل الأطراف المقابلة
  • سجل المعلومات

الحلول الممكنة للمشكلة:

  • يعد تخزين مستخدم في ثابت خيارًا سيئًا؛ فالثابت متاح لجميع المستخدمين.
  • إن تخزين مجموعة ثابتة من الأطراف المقابلة للمستخدم الحالي في معلمات الجلسة ليس جيدًا جدًا خيار جيد، يمكن أن يكون هناك العديد من الأطراف المقابلة
  • يعد تخزين معلمات الجلسة الخاصة بالمستخدم الحالي، ثم طلب قائمة بالأطراف المقابلة له، خيارًا مقبولاً.
  • خيارات أخرى.

حل.

دعونا نخلق المعلمة الجديدةجلسة "CurrentUser" وتسجيل ملئها في وحدة الجلسة.

لنقم بإنشاء سجل للمعلومات "امتثال المديرين والمقاولين"

لنقم بإنشاء دور جديد وفيه تقييد وصول جديد للمستند "الفاتورة".

في نص الطلب، سنقوم بربط الجدول الرئيسي بسجل المعلومات الخاص بالحساب = الحساب والمدير = &المستخدم الحالي. نوع الاتصال داخلي.

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

التحقق - القيود تعمل

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

الممارسة 5. تاريخ حظر التغييرات.

من الضروري تنفيذ القيود المفروضة على تحرير البيانات في وقت سابق تحديد التاريخحظر التغييرات.
تحتاج إلى تقييده للمستخدمين.

لنقم بإنشاء سجل معلومات "تواريخ حظر التغييرات" مع البعد المستخدم، تاريخ الحظر المصدر.

دعونا نبني منطق الحل بهذه الطريقة:

  • إذا لم يتم تحديد مستخدم، ينطبق الحظر على جميع المستخدمين
  • فإذا كان هناك قيد لجميع المستخدمين، وتقييد لمستخدم معين، فإن القيد ينطبق على مستخدم معين، وعلى الآخرين حسب المبدأ العام.

من الواضح أنه يمكن تكوين مثل هذا القيد لكائنات قاعدة البيانات التي لها موضع ما على محور الوقت. يمكن أن يكون

  • وثائق
  • سجلات المعلومات الدورية

لنقم بإنشاء دور جديد "القيود حسب تاريخ حظر التغييرات".

فيه، بالنسبة لوثيقة "فاتورة" "التغيير" الصحيح، سنضيف تقييدًا جديدًا للوصول.

نحدد الإعداد لجميع الحقول.

ونص القيد هو:

ReceiptInvoice FROM Document.ReceiptInvoice AS ReceiptInvoice

تغيير تواريخ الحظر
من

الانضمام الداخلي (حدد
MAX (تغيير التواريخ المحظورة.المستخدم) كمستخدم
من
سجل المعلومات مواعيد حظر التغييرات AS مواعيد حظر التغييرات
أين
(تغيير التواريخ المحظورة.User = &CurrentUser
أو التواريخ ProhibitedChanges.User = VALUE(Directory.users.EmptyLink))) AS VZ_User
حسب تاريخ حظر التغييرات.User = VZ_User.User) AS NestedQuery
فاتورة استلام البرنامج. تاريخ> الاستعلام المتداخل. تاريخ الحظر

دعونا نتحقق - يعمل التقييد.

استخدام تعليمات المعالج المسبق

#إذا كان الشرط1 #ثم

طلب القطعة 1

#ElseIf Condition2 #ثم

طلب القطعة 2

#خلاف ذلك

طلب القطعة 3

#EndIf

في الظروف، يمكنك استخدام العمليات المنطقية (و، أو، لا، وما إلى ذلك) والوصول إلى معلمات الجلسة.

يعد هذا الأسلوب في سياق إنشاء قيود الوصول مناسبًا لأنه، وفقًا للشروط، سيتم تجميع نص طلب أقصر. استعلام أبسط يقوم بتحميل النظام بشكل أقل.

الجانب السلبي هو أن مُنشئ الاستعلام لن يعمل مع مثل هذا النص.

*الخصوصية :

على عكس تعليمات المعالج المسبق للغة المضمنة في نصوص تقييد الوصول، قبل المشغل فأنت بحاجة إلى وضع تجزئة - #Then

الممارسة 6. قم بالتبديل إلى "استخدم RLS"

دعونا نكمل نظام القيود الخاص بنا بمفتاح يعمل على تشغيل/إيقاف استخدام القيود على مستوى السجل.

للقيام بذلك، أضف ثابتًا ومعلمة جلسة باسم "UseRLS".

لنكتب في وحدة الجلسة لتعيين قيمة معلمة الجلسة من قيمة الثابت.

لنضيف الكود التالي إلى كافة نصوص تقييد الوصول:

"#If &UseRLS #Then….. #EndIf"

نتحقق - كل شيء يعمل.

ومع ذلك، الآن بعد تشغيل علامة "استخدام الرادار"، لن تدخل التغييرات حيز التنفيذ على الفور. لماذا؟

لأنه يتم تعيين معلمة الجلسة عند بدء الجلسة.

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


نهاية الجزء الأول.

"لقد تم تغيير قيود الوصول." غالبًا ما تظهر هذه الرسالة على شاشات هواتفهم الذكية من قبل مالكي الأجهزة من عائلات طرازات Moto X وMoto G وNexus. يظهر هذا التنبيه بين الحين والآخر في شريط تمرير الإشعارات ثم يختفي. علاوة على ذلك، فإن المشكلة لا تنتج عن خطأ في البرامج أو الأجهزة الخاصة بجهاز Android، بل هي مجرد رسالة بسيطة من وظيفة مكالمة الطوارئ على الهاتف. على الرغم من أن هذا الإشعار غير ضار على الإطلاق، إلا أنه يزعج المستخدمين بل ويخيفهم. في الواقع، بالنسبة للأشخاص غير المطلعين، فإن عبارة "تم تغيير قيود الوصول" يمكن أن تعني أي شيء - بما في ذلك حظر نقل البيانات أو الخدمة الصوتية.

هل هناك طريقة للتخلص من " تغيرت قيود الوصول"؟ لا. هل يجب أن تتفاعل معها بطريقة معينة؟ في بعض الأحيان يكون الأمر يستحق ذلك. إذا فقدت القدرة على إرسال الرسائل القصيرة أو استقبال المكالمات، فقد تؤدي عملية إعادة التشغيل البسيطة إلى حل المشكلة. قد تظهر أيضًا رسالة خطأ إذا استخدمت بطاقة SIM معيبة أو قمت بتغيير البطاقات في الفتحات كثيرًا على مدار اليوم. ينبثق الإشعار أيضًا عند تغيير الشبكة، على سبيل المثال. من 2G إلى 3G أو 3G إلى 4G والعكس. وكل هذا يظهر بشكل أساسي عند استخدام بيانات الهاتف المحمول ويختفي عند الاتصال بشبكة Wi-Fi. بشكل عام، المشكلة الرئيسية هي فقدان الشبكة أو التبديل من 3G إلى 2G - للمستخدمين الذين يحتاجون إلى شبكة هاتف محمول ذات إمكانيات نقل بيانات عالية السرعة.

كيف تتخلص من إشعار "تم تغيير قيود الوصول" على هاتف ذكي يعمل بنظام Android؟

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


إذا كان لديك حقوق الجذر لهاتفك الذكي الذي يعمل بنظام Android، فيمكنك التعامل مع المشكلة بسهولة. يمكنك تنزيل التطبيقات التي من شأنها حظر إشعار "لقد تغيرت قيود الوصول". للقيام بذلك عليك أن تفعل الخطوات التالية:


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

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

لماذا تفعل هذا، ربما يفهم كل واحد منكم دون مطالبتي. وإليك كيف أنه صحيح تقييد الوصول إلى الملفاتفي نظام التشغيل Windows 7، لا يعلم الجميع. لذلك، سوف نقوم بتحليل هذه العملية بتفصيل كبير.

تقييد الوصول إلى الملفات والمجلدات في نظام التشغيل Windows 7

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

1. انقر بزر الماوس الأيمن على الكائن (ملف أو مجلد) وحدد "خصائص".

2. في النافذة التي تفتح، حدد علامة التبويب "الأمان". ومن هنا حقوق المستخدمين في الوصول إلى ملف محددأو المجلد.

ستعرض المنطقة العلوية جميع المستخدمين أو مجموعات المستخدمين التي تم إنشاؤها في النظام. من خلال النقر على عنصر معين، يمكنك عرض وتغيير حقوق مستخدم معين هذا الكائن. لمنع المستخدم تمامًا من "لمس" مجلد أو ملف معين، قم بإزالته من القائمة العليا.

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

النافذة " معلمات إضافيةحماية":

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

يمكنك الآن تغيير حقوق المستخدم للوصول إلى كائن معين دون قيود.

قيم إذن الوصول

دعونا نلقي نظرة فاحصة على معنى حقوق المستخدم المحددة:

  • التحكم الكامل - كل شيء بسيط للغاية هنا: يُسمح لك بإجراء جميع العمليات على الكائن، بما في ذلك تغيير الإذن وتصبح مالك الكائن.
  • التغيير – يختلف عن الفقرة السابقة حيث أنه يسمح بإجراء العمليات الأساسية فقط مع الكائن، أي. قراءة وتعديل وإنشاء وحذف كائن. لا يُسمح بتغيير إذن الكائن الحالي ويصبح مالكه.
  • قراءة وتنفيذ- يتحدث عن نفسه: يمكنك عرض محتويات الكائن وتشغيل البرامج.
  • قائمة محتويات المجلد– كما هو الحال في الفقرة السابقة، فيما يتعلق بالأدلة فقط.
  • القراءة - يُسمح فقط بعرض الكائن.
  • الكتابة – يسمح لك بإنشاء الملفات وكتابة البيانات إليها.
  • أذونات خاصة- هذه هي الأذونات التي يتم تعيينها من خلال النقر على زر "خيارات متقدمة".
توصيات خاصة عند تحديد حقوق الوصول إلى الملفات والمجلدات
  • وأنصحك بالانتباه إلى ما يلي:
  • إذا قمت بتحديد خانة الاختيار للحصول على إذن ذي أولوية أعلى، فسيتم تحديد خانات الاختيار الخاصة بالأذونات التابعة تلقائيًا.
  • تعيين الإذن على "الرفض" يحتوي على المزيد أولوية عاليةمن "السماح".
  • من خلال تغيير أذونات الدليل، ستتغير أذونات كافة الكائنات الفرعية (المجلدات والملفات) تلقائيًا أيضًا.
  • إذا لم تكن بعض الأذونات متوفرة، فهذا يعني أنها موروثة من المجلد الأصلي.
  • إذا لم يكن لديك الحق في تغيير الأذونات، فلن تكون جميع مربعات الاختيار متاحة لك.
  • عند تغيير أذونات المجموعات (على سبيل المثال: "المسؤولون"، "المستخدمون"، "النظام")، ستتغير الأذونات المقابلة لجميع مستخدمي هذه المجموعة تلقائيًا.
  • لا تقم بتغيير أذونات مجموعة "النظام"؛ فقد يؤدي ذلك إلى تعطيل عمل نظام التشغيل.

عند تغيير الأذونات لكائن معين، كن حذرًا وحذرًا. لا تقم بتغيير عدة أذونات مرة واحدة؛ تأكد من التحقق من وظائف النظام بعد إجراء التغييرات.

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

هذا الخياريحمل اسم "العمليات في التطبيقات"، فهو ليس حتى خيارًا، ولكنه برنامج محدد. فقط هو غير مدرج في قائمة التطبيقات الأخرى. لا يمكن استدعاؤه إلا بطريقتين.

الطريقة الأولى هي استخدام قاذفة بديلة. ننصحك باستخدام Nova Launcher. وإليك ما عليك القيام به:

1. أولاً، ابحث عن مساحة فارغة على سطح المكتب لديك وانقر عليها لإظهار قائمة فرعية. من كل ما هو مدرج فيه، حدد "الاختصار":

2. من جميع الاختصارات المتاحة، تحتاج إلى تحديد "الإجراءات الحالية":

3. من قائمة الإجراءات، انقر على "الإعدادات":

5. وبالفعل في هذه الإعدادات يمكنك العثور على الخيار أو البرنامج "العمليات في التطبيقات". انقر عليها.

بعد ذلك، سيظهر اختصار يسمى "الإعدادات" على سطح المكتب. بالنقر عليه، سيتم دائمًا فتح نافذة بها برنامج لإدارة التطبيقات. بالإضافة إلى ذلك، يمكنك الآن إدارة جميع أذونات أي تطبيق.

الطريقة الثانية للوصول إلى برنامج Application Actions هي استخدام أداة مساعدة بسيطة تسمى QuickShortcutMaker. ويمكن العثور عليه وتنزيله في متجر التطبيقات جوجل بلايسوق.

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

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

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

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

شيء آخر مفقود من هذا البرنامج هو أنه يقوم بنفسه بإعلام التطبيق بتعطيل هذه الميزة أو تلك. قد ينسى بعض المستخدمين أيضًا أنهم قاموا بتعطيل شيء ما ويعتقدون أن التطبيق نفسه هو المسؤول.

أود أن أشير إلى أنه تم بالفعل تنفيذ خيار مماثل واستخدامه في البرامج الثابتة البديلة CyanogenMod، وعمله لا يتطلب أي تعديلات جدية.