السلام عليكم و رحمة الله و بركاته اصدقائنا الأعزاء,
اليوم سنتحدث عن موضوع حول انظمة تشغيل لينكس و هو كيفية تنفيذ و استخدام الامر sudo بدون طلب كلمة سرية.
قبل عدة أشهر و بطبيعة عملي في ادارة قواعد بيانات اوراكل و حتى يتم أخذ نسخ احتياطي لقواعد البيانات التي اديرها و حفظها في أكثر من مكان بشكل آلي, تم تغيير البرنامج الخاص بعملية النسخ الإحتياطي.
حيث أن البرنامج عندما تقوم بإنشاء مهمة للنسخ الإحتياطي وجدولتها ليتم عمل نسخ من البيانات يمكنه تنفيذ السكريبتات الخاصة بعملية النسخ الإحتياطي و التي يتم انشاءها مسبقا من قبل مدير قواعد البيانات او المسؤول عن الخادم المراد عمل نسخ احتياطي له, و بعد ان ينتهي السكريبت المجدول من التنفيذ يتم نسخ البيانات بالمسارات المحددة للمكان المراد حفظها عليها و بأكثر من نسخة حسب العدد المختار, بحيث يمكن تخزينها على Tape او على SAN Storage او غيرها من وحدات و ادوات التخزين المختلفة.
بعد انتهائي من كتابة السكريبتات التي تقوم بعملية النسخ الإحتياطي لقواعد البيانات و تجربتها لاكثر من مرة و التاكد من انها تعمل بشكل صحيح و ان النسخ الإحتياطية تعمل بشكل صحيح عن طريق إجراء عمليات استرجاع للبيانات على خوادم قواعد بيانات تجريبية, قمت بتزويد الزملاء المسؤولين عن أنظمة النسخ الإحتياطي بمسارات السكريبتات على الخوادم بحيث انهم يستطيعون اختيارها قبل نسخ الملفات المختلفة المحددة لهم و التي تنتج من خلال هذا السكريبت.
عندها قام الزملاء بتجهيز المهام و عندما قاموا بتنفيذها فشل النسخ الإحتياطي, في البداية لم أعلم منهم اي سبب معين الا ان النسخ الإحتياطي فشل. عندها دعوتهم و قمت بتجربة النسخ الإحتياطي على الخادم مباشرة بدون استخدام البرنامج و قد نجحت العملية. فثارت في تلك اللحظة شكوكي حول برنامج النسخ الإحتياطي و الموجود على خادم مستقل, حيث تعمل مثل هذه الأنظمة عن طريق تنصيب برامج (Client او Agent) على الخوادم المراد عمل نسخ إحتياطي لها تقوم بالإتصال مع البرنامج (Server) الموجود على خادم النسخ الإحتياطي و يتم تنفيذ الاوامر من خلالها (بمعنى آخر انها تعمل عن طريق برامج Client-Server Applications) .
قمت حينها بتجربة المهمة من خلال البرنامج مع الزملاء المسؤولين عن النسخ الإحتياطي, ظهر حينها خطأ لاول مرة اشاهده وهو كالآتي :
sudo: sorry, you must have a tty to run sudo
عندما قمت حينها بالبحث عن طريق الإنترنت اكتشفت بأن هذا البرنامج المسؤول عن عملية النسخ الإحتياطي يتطلب عمل sudo لان البرنامج يعمل بصلاحيات مستخدم آخر مختلف عن المستخدم الذي يقوم بتنفيذ السكريبتات الخاصة بالنسخ الإحتياطي, ولذلك يتطلب تنفذيها بالامر sudo لذلك يتطلب هذا الامر كلمة المرور الخاصة بالمستخدم الآخر.
لذا قمت بالبحث عن طريقة يتم من خلالها الغاء طلب الكلمة السرية عن تنفيذ الامر sudo و بعد البحث وجدتها .
يعتمد الامر sudo على ملف اعدادات في عمله ويمكن التعديل على هذا الملف من خلال الأمر visudo, حيث انه و بعد ان تقوم بكتابة هذا الامر سيتم فتح ملف بإستخدام معالج نصوص vi editor.
لو فرضنا بأن المستخدم المراد السماح له بتنفيذ الامر sudo بدون طلب كلمة سرية هو المستخدم technawi
سنقوم بنهاية الملف اذا لم يكن هذا المستخدم موجود بإضافة السطر التالي :
technawi ALL=(ALL) NOPASSWD: ALL
و تخزين الملف بالطريقة الإعتيادية لتخزين اي ملف بإستخدام معالج نصوص vi editor او vim, عندها سيكون المستخدم technawi قادر على تنفيذ اي امر عن طريق sudo بدون ان يتم طلب كلمة سرية منه.
لو أردنا الآن للمستخدم technawi فقط تنفيذ بعض الملفات او الاوامر و هي محددة بدون طلب كلمة سرية منه سنقوم عندها بكتابة السطر التالي (هذا السطر كمثال للأوامر التي يمكنه تنفيذها بدون كلمة سرية) :
technawi ALL=(ALL) NOPASSWD: /usr/sbin/tcpdump, /sbin/reboot
في هذه الحالة عندما يقوم المستخدم technawi بتنفيذ الأمرين (/usr/sbin/tcpdump) و ( /sbin/reboot ) فانه لن يتم طلب كلمة سرية اما باقي الأوامر فانه سيتم طلب كلمة سرية.
طبعا هنالك امور متقدمة أكثر للتعامل مع هذا الامر, اذا أحببتم الإستزادة يرجى اضافة السؤال على شكل تعليق في هذا الموضوع ليتم الإجابة عليه.
ملاحظة : للإستزادة بشان هذا الأمر يمكنكم كتابة الأمر التالي و الذي يقوم بالبحث داخل ال man pages حول الأمر sudo لمشاهدة الأمثلة و الخيارات و جميع الأمور الأخرى :
man 5 sudoers
نتمنى ان يكون الموضع قد لاقى اعجابكم.
اليوم سنتحدث عن موضوع حول انظمة تشغيل لينكس و هو كيفية تنفيذ و استخدام الامر sudo بدون طلب كلمة سرية.
قبل عدة أشهر و بطبيعة عملي في ادارة قواعد بيانات اوراكل و حتى يتم أخذ نسخ احتياطي لقواعد البيانات التي اديرها و حفظها في أكثر من مكان بشكل آلي, تم تغيير البرنامج الخاص بعملية النسخ الإحتياطي.
حيث أن البرنامج عندما تقوم بإنشاء مهمة للنسخ الإحتياطي وجدولتها ليتم عمل نسخ من البيانات يمكنه تنفيذ السكريبتات الخاصة بعملية النسخ الإحتياطي و التي يتم انشاءها مسبقا من قبل مدير قواعد البيانات او المسؤول عن الخادم المراد عمل نسخ احتياطي له, و بعد ان ينتهي السكريبت المجدول من التنفيذ يتم نسخ البيانات بالمسارات المحددة للمكان المراد حفظها عليها و بأكثر من نسخة حسب العدد المختار, بحيث يمكن تخزينها على Tape او على SAN Storage او غيرها من وحدات و ادوات التخزين المختلفة.
بعد انتهائي من كتابة السكريبتات التي تقوم بعملية النسخ الإحتياطي لقواعد البيانات و تجربتها لاكثر من مرة و التاكد من انها تعمل بشكل صحيح و ان النسخ الإحتياطية تعمل بشكل صحيح عن طريق إجراء عمليات استرجاع للبيانات على خوادم قواعد بيانات تجريبية, قمت بتزويد الزملاء المسؤولين عن أنظمة النسخ الإحتياطي بمسارات السكريبتات على الخوادم بحيث انهم يستطيعون اختيارها قبل نسخ الملفات المختلفة المحددة لهم و التي تنتج من خلال هذا السكريبت.
عندها قام الزملاء بتجهيز المهام و عندما قاموا بتنفيذها فشل النسخ الإحتياطي, في البداية لم أعلم منهم اي سبب معين الا ان النسخ الإحتياطي فشل. عندها دعوتهم و قمت بتجربة النسخ الإحتياطي على الخادم مباشرة بدون استخدام البرنامج و قد نجحت العملية. فثارت في تلك اللحظة شكوكي حول برنامج النسخ الإحتياطي و الموجود على خادم مستقل, حيث تعمل مثل هذه الأنظمة عن طريق تنصيب برامج (Client او Agent) على الخوادم المراد عمل نسخ إحتياطي لها تقوم بالإتصال مع البرنامج (Server) الموجود على خادم النسخ الإحتياطي و يتم تنفيذ الاوامر من خلالها (بمعنى آخر انها تعمل عن طريق برامج Client-Server Applications) .
قمت حينها بتجربة المهمة من خلال البرنامج مع الزملاء المسؤولين عن النسخ الإحتياطي, ظهر حينها خطأ لاول مرة اشاهده وهو كالآتي :
sudo: sorry, you must have a tty to run sudo
عندما قمت حينها بالبحث عن طريق الإنترنت اكتشفت بأن هذا البرنامج المسؤول عن عملية النسخ الإحتياطي يتطلب عمل sudo لان البرنامج يعمل بصلاحيات مستخدم آخر مختلف عن المستخدم الذي يقوم بتنفيذ السكريبتات الخاصة بالنسخ الإحتياطي, ولذلك يتطلب تنفذيها بالامر sudo لذلك يتطلب هذا الامر كلمة المرور الخاصة بالمستخدم الآخر.
لذا قمت بالبحث عن طريقة يتم من خلالها الغاء طلب الكلمة السرية عن تنفيذ الامر sudo و بعد البحث وجدتها .
يعتمد الامر sudo على ملف اعدادات في عمله ويمكن التعديل على هذا الملف من خلال الأمر visudo, حيث انه و بعد ان تقوم بكتابة هذا الامر سيتم فتح ملف بإستخدام معالج نصوص vi editor.
لو فرضنا بأن المستخدم المراد السماح له بتنفيذ الامر sudo بدون طلب كلمة سرية هو المستخدم technawi
سنقوم بنهاية الملف اذا لم يكن هذا المستخدم موجود بإضافة السطر التالي :
technawi ALL=(ALL) NOPASSWD: ALL
و تخزين الملف بالطريقة الإعتيادية لتخزين اي ملف بإستخدام معالج نصوص vi editor او vim, عندها سيكون المستخدم technawi قادر على تنفيذ اي امر عن طريق sudo بدون ان يتم طلب كلمة سرية منه.
لو أردنا الآن للمستخدم technawi فقط تنفيذ بعض الملفات او الاوامر و هي محددة بدون طلب كلمة سرية منه سنقوم عندها بكتابة السطر التالي (هذا السطر كمثال للأوامر التي يمكنه تنفيذها بدون كلمة سرية) :
technawi ALL=(ALL) NOPASSWD: /usr/sbin/tcpdump, /sbin/reboot
في هذه الحالة عندما يقوم المستخدم technawi بتنفيذ الأمرين (/usr/sbin/tcpdump) و ( /sbin/reboot ) فانه لن يتم طلب كلمة سرية اما باقي الأوامر فانه سيتم طلب كلمة سرية.
طبعا هنالك امور متقدمة أكثر للتعامل مع هذا الامر, اذا أحببتم الإستزادة يرجى اضافة السؤال على شكل تعليق في هذا الموضوع ليتم الإجابة عليه.
ملاحظة : للإستزادة بشان هذا الأمر يمكنكم كتابة الأمر التالي و الذي يقوم بالبحث داخل ال man pages حول الأمر sudo لمشاهدة الأمثلة و الخيارات و جميع الأمور الأخرى :
man 5 sudoers
نتمنى ان يكون الموضع قد لاقى اعجابكم.
ليست هناك تعليقات:
إرسال تعليق