بسم الله الرحمن الرحيم
السلام عليكم ورحمة الله وبركاته
كيف نعرف هل سكربت بايثون تم تشغيله من خلال مستخدم root ؟
كيف نعرف هل سكربت بايثون تم تشغيله من خلال مستخدم root أي من خلال إستخدام صلاحياته مثلا من خلال sudo أو تم تشغيل من خلال مستخدم عادي؟
علينا أن نعرف اولا أن النظام لينكس لا يعرف الأسماء مثلا مستخدم إسمه yucef و مستخدم إسمه root هو فقط يعرف رقم ال ID الخاص بالمستخدم .
في نظام لينكس كل مستخدم عادي له رقم فريد يختلف عن الأخرين وغالبا يبدأ من رقم ألف 1000 وأعلى أما مستخدم روت رقم ال ID الخاص به هو الرقم صفر 0 .
لهذا إذا عرفنا كيف نحصل على هذا الرقم نكون عرفنا إذا المستخدم الذي يشغل
البرنامج هو مستخدم root او لا وهذا ممكن من خلال ()os.getuid إختصار ل get
user id وبعدها نستفيد من الأمر على حسب حاجتنا .
مثلا نلاحظ في الصور في الأسفل عملت سكربت إذا لم يتم تشغيله بصلاحيات root أي إذا كان( if ) رقم ال ID الخاص بالمستخدم الذي شغل السكربت لا يساوي رقم صفر 0 يخرج من خلال دالة exit ويعرض جملة محددة أما غير ذلك(else) أي إذا كان رقم ال ID هو صفر يطبع كلمة hello .
مع الملاحظة ممكن أيضا إستبدال الشرط مثلا بشرط إذا كان رقم ال ID هو رقم ألف 1000 او أكبر 1000=< لأن هناك مستخدي الخدمات يكون رقم ال ID الخاص بهم أعلى من صفر وأصغر من ألف غالبا في كل التوزيعات رقم ال ID للمستخدم العادي يبدأ من رقم ألف وأعلى ,على العموم نضع ما نحتاجه هو فقط مجرد مثال لاكن من المهم معرفة هذه الامور لهذا أذكر هذه الامور على الرغم من أننا لن نحتاجها.
مثلا نلاحظ في الصور في الأسفل عملت سكربت إذا لم يتم تشغيله بصلاحيات root أي إذا كان( if ) رقم ال ID الخاص بالمستخدم الذي شغل السكربت لا يساوي رقم صفر 0 يخرج من خلال دالة exit ويعرض جملة محددة أما غير ذلك(else) أي إذا كان رقم ال ID هو صفر يطبع كلمة hello .
مع الملاحظة ممكن أيضا إستبدال الشرط مثلا بشرط إذا كان رقم ال ID هو رقم ألف 1000 او أكبر 1000=< لأن هناك مستخدي الخدمات يكون رقم ال ID الخاص بهم أعلى من صفر وأصغر من ألف غالبا في كل التوزيعات رقم ال ID للمستخدم العادي يبدأ من رقم ألف وأعلى ,على العموم نضع ما نحتاجه هو فقط مجرد مثال لاكن من المهم معرفة هذه الامور لهذا أذكر هذه الامور على الرغم من أننا لن نحتاجها.
ملاحظة ممكن الإستغناء عن else كما في الصور قي الاسفل اظن من يقرأ يجب ان يعرف أساسيات بايثون .