محمد أحمد العيل
-
المساهمات
308 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
27
إجابات الأسئلة
-
إجابة محمد أحمد العيل سؤال في ما الفرق بين sudo و su؟ كانت الإجابة المقبولة
يُتيح كل من الأمرين تنفيذ أوامر بصلاحيات عليا مع فروق بين الاثنين.
عند كتابة sudo أمام أمر، مثلا
sudo command
فإنك تطلب تنفيذ الأمر command بصلاحيات عليا يحددها ملف sudoers. يستخدم مديرو الأنظمة ملف sudoers لإعطاء مستخدم أو مجموعة مستخدمين صلاحيات إدارية غير متاحة للحسابات العادية. عند استخدام أمر sudo تُطلَب كلمة مرور المستخدم الذي نفذ الأمر.
بالنسبة لأمر su فإنه يمكن من الانتقال إلى مستخدم آخر (فتح جلسة Shell جديدة داخل الجلسة الحالية):
su userستُطلب منك كلمة مرور المستخدم user. يمكن أيضا تنفيذ أمر بصلاحيات المستخدم user دون فتح جلسة Shell، مثلا:
su user -c command
في المثال أعلاه ننفذ الأمر command بصلاحيات المستخدم user.
ملحوظة: عند تنفيذ أمر su دون خيارات تنتقل إلى المستخدم الجذر.
-
إجابة محمد أحمد العيل سؤال في رسالة خطأ Could not reliably determine the server's fully qualified domain name عند إعادة تشغيل Apache؟ كانت الإجابة المقبولة
هذا تحذير سببه عدم ذكر قيمة لتعليمة ServerName في إعدادات Apache. للتخلّص من رسالة الخطأ نفّذ الأمر التّالي الّذي يُنشئ ملفًّا للإعداد ويُضيف إليه سطرًا يحوي قيمة لتعليمة ServerName:
echo "ServerName localhost" | sudo tee /etc/apache2/conf-available/fqdn.conf
اعتمد ملفّ الإعداد:
sudo a2enconf fqdn
ثمّ أعد تحميل Apache لأخذ التّغييرات في الحسبان:
sudo service apache2 reload
-
إجابة محمد أحمد العيل سؤال في ما هو عمل الأمر "!! apt-get install" على أوبنتو؟ كانت الإجابة المقبولة
تدلّ كتابة علامة التّعجّب !! مرّتين على طلب إعادة تنفيذ آخر أمر. جرّب التّالي مثلًا:
echo "Abderrzak" !!
سيُستعاض في المثال أعلاه عن !! بالأمر echo المنفَّذ قبلها. بالعودة إلى الأمر :
sudo apt-get install !!
فربّما يكون المستخدم حاول تنفيذ أمر مّا ولكنّه وجد أنّه غير مثبَّت على النّظام فثبّته مع الاختصار؛ على النّحو التّالي مثلًا:
program
بما أنّ البرنامج غير مثبَّت تظهر رسالة بالهيئة التّاليّة:
The program 'program' is currently not installed. You can install it by typing: sudo apt-get install program
فيثبّته عن طريق الأمر:
sudo apt-get install !!
-
إجابة محمد أحمد العيل سؤال في مالفرق بين خادوم وسيط وخادوم وسيط عكسي؟ كانت الإجابة المقبولة
أوّلًا الخادمان وسيطان Proxy، أيّ أنّ الخادوم في كلتا الحالتيْن يؤدّي وظيفة لحاسوب آخر.
يوجد نوعان من الخواديم الوسيطة:
خادوم وسيط لإعادة التّوجيه Forwarding proxy server: ويُطلَق عليه عادةً خاجوم وسيط دون ذكر إعادة التّوجيه. من جهة يوجد العميل (A) وفي الجهة الأخرى يوجد الخادوم (C) الّذي يُريد العميل الوصول إليه، والخادوم الوسيط بينهما (B). يتّصل A ب B لكي يصِل إلى C. في حالة وسيط لإعادة التّوجيه فإنّ العميل A يجب أن يُعدَّ للاتّصال بالخادوم الوسيط B ويطلُب منه الاتّصال ب C وإرسال نتيجة الطّلب إليه. يُستخدَم هذا النّوع من الوسطاء كثيرًا في المؤسّسات لمنع الموظّفين من زيارة مواقع محدّدة. كما يُستخدَم لتجاوز الحظر أيضًا (موقع ممنوع في الدّولة X، تستخدم خادومًا وسيطًا في دولة Y لا تمنع هذا الموقع لتجاوز الحظر). خادوم وسيط عكسيّ Reverse proxy server: يوجد لدينا نفس المخطَّط في الحالة السّابقة: من جهة يوجد العميل (A) وفي الجهة الأخرى يوجد الخادوم (C) الّذي يُريد العميل الوصول إليه، والخادوم الوسيط بينهما (B). لكن الفرق هنا أنّ العميل A لا يحسّ بوجود C، بالنّسبة له يوجد فقط B (الخادوم الوسيط). يُرسل العميل طلباته إلى الخادوم الوسيط (دون أن يكون على علم بأنّ هذا الخادوم وسيط) الّذي يُحيلها إلى الخادوم C؛ ثمّ يُعيد الخادوم الوسيط إرسال الإجابة على الطّلب إلى العميل بعد تلقّيها من الخادوم C. تُستخدَم الخواديم الوسيطة العكسيّة للوصول إلى خواديم موجودة خلف جدار ناريّ أو لتوزيع الحمل بين خواديم عديدة. -
إجابة محمد أحمد العيل سؤال في لماذا تظهر رسالة الخطأ No manual entry for cd عند أمر man cd؟ كانت الإجابة المقبولة
تُقسَّم أوامر Shell إلى نوعين:
أوامر داخليّة (مضمّنة): توجد هذه الأوامر(أو الدّوالّ) ضمن Shell نفسه الّذي يُنفّذها مياشرةً. أوامر خارجيّة: وهي برامج (سكربتات) توجد خارج Shell. عند استدعاء أمر من هذه الأوامر فإنّ Shell يبحث عن البرنامج ثمّ ينفّذه. يُحدّد متغيّرالبيئة PATH المسارات الّتي يبحث فيها Shell عن الأوامر الخارجيّة. أمر cd مثال على الأوامر الدّاخليّة وecho مثال على الأوامر الخارجيّة.
لا توجد فقرات بالنّسبة للأوامر الدّاخليّة ضمن الدّليل (Manual) وعليه تظهر رسالة الخطأ المذكورة عند تنفيذ أمر:
man cdيُمكن الحصول على المساعدة في استعمال cd عبر اﻷمر:
help cd
-
إجابة محمد أحمد العيل سؤال في كيف أحذف مجموعة ملفات ضمن مجلد واستبقاء واحد منها عن طريق سطر الأوامر؟ كانت الإجابة المقبولة
توجد أكثر من طريقة للحصول على نفس الشيئ في سطر الأوامر. سأفترض أنّك موجود في المجلّد المذكور وأنّ الملفّ المراد تركه هو test.
إذا لم توجد مجلّدات فرعيّة 1- عن طريق أمر find:
find . \! -name 'test' -delete
2- عن طريق أمر rm:
rm !(test)
إذا وجدت مجلّدات فرعيّة (تحذف كل الملفّات الموجودة في المجلّدات الفرعيّة ما عدا الملفّ test):
find ! -name 'test' -type f -exec rm -f {} +للمزيد حول أمر find راجع هذا الدّرس .
-
إجابة محمد أحمد العيل سؤال في كيف أعرض قائمة بجميع المستخدمين على خادم لينكس؟ كانت الإجابة المقبولة
الأمر التّالي يطبع لائحة بكلّ أسماء المستخدمين:
cut -d: -f1 /etc/passwd
يحوي ملفّ etc/passwd/ معلومات أساسيّة حول حسابات المستخدمين، مثل معرّف المستخدم User ID، معرّف المجموعة Group ID، المجلّد الشخصيّ للمستخدم، وغيرها. الملفّ عبارة عن أسطر يحوي كلّ واحد منها سبعة حقول يُفصَل بينها بنقطتيْن عموديّتيْن (:). يمثّل الحقل الأوّل اسم المستخدم.
يُستخدم أمر cut لاستخراج جزء من أسطر في ملف نصّي:
الخيّار d- يُحدّد الفاصل بين الأعمدة، أي أنّ الأمر عندما يجد نقطتيْن عموديّتيْن سيعتبر ما بعدهما عمودا (حقلًا) جديدًا. الخيّار f- يعني الحقل (العمود) أو الحقول التي نُريد الاحتفاظ بها من الملفّ. يهمّنا هنا الحقل الأوّل، أي اسم المستخدِم.
بالنّسبة لإضافة أو حذف مستخدمين أحيل إلى درس كيف تُضيف أو تحذف مستخدمين على خادوم Ubuntu 14.04.
-
إجابة محمد أحمد العيل سؤال في هل يصح الانتقال بين حسابات المستخدمين في سطر أوامر لينكس؟ كانت الإجابة المقبولة
يوجد أمر su لهذا الغرض.
يُساعد الأمر whoami (مَن أنا؟) في عدم الخلط بين المستخدِمين حيثُ يُظهر اسم الحساب الجاري استخدامُه.
في المثال التّالي نُظهِر اسم المستخدِم الحالي (user1) عن طريق whoami ثمّ ننتقل إلى الحساب user2 عن طريق أمر su (ستُطلب منك كلمة سرّ هذا الحساب)، ونتأكّد من الحساب الّذي نستخدمه (user2) ثمّ نخرج من هذا الحساب عبر الأمر exit لنعود إلى الحساب الأوّل (user1).
$ whoami user1 $ su - user2 Password: $ whoami user2 $ exit
إذا أردت الانتقال إلى الحساب الجذر (root) فلا داعيَّ لتحديد اسم المستخدِم:
$ whoami user1 $ su - Password: $ whoami root
-
إجابة محمد أحمد العيل سؤال في ماذا يعني متغير النظام PATH؟ كانت الإجابة المقبولة
المتغيّر PATH واحد من متغيرات كثيرة تُعرف بمتغيّرات البيئة Environment variables. بالمختصر، متغيّرات البيئة هي مجموعة من المتغيّرات تؤثّر قيّمها على سلوك البرامج أثناء تنفيذها. مثلا قيمة متغيّر البيئة HOME تحدّد مسار المجلّد الشخصي للمستخدم. إذا أراد برنامج حفظ ملفّ في المجلّد الشخصي للمستخدِم الّذي يُشغله فكلّ ما عليه هو النّظر في قيمة متغيّر البيئة HOME.
بالنسبة لمتغيّر البيئة PATH، فالهدف منه تحديد المسارات الّتي يبحث فيها النظام عن برامج أو أوامر. نفترض أنّ أمرًا باسم command يوجد على المسار usr/bin/. إذا كان المسار المذكور موجودًا البيئة PATH فتكفي كتابة command في سطر الأوامر لتنفيذ الأمر. أمّا إذا لم يكن موجودًا فيجب كتابة كامل المسار usr/bin/command/ لتنفيذ الأمر.
يُستخدم الأمر printenv لعرض كلّ متغيّرات البيئة الموجودة في النّظام.
printenvلعرض محتوى متغيّر بيئة واحج فقط يُمرّر اسم المتغيّر للأمر:
printenv PATHالنّتيجة عندي (تتغيّر من جهاز لآخر):
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/java-1.7-oracle/binملحوظة أخيرة: تُكتب متغيّرات البيئة دائمًا بأحرف كبيرة.
-
إجابة محمد أحمد العيل سؤال في ما الّذي تدلّ عليه الأعداد في صفحة Man على Linux؟ كانت الإجابة المقبولة
تُحيل هذه الأعداد إلى الفصل أو المقطع ضمن التّوثيق حيثُ توجد هذه الأوامر. يُمكن معرفة فصول التّوثيق عند تنفيذ الأمر man man. هذه الفصول هيّ:
1: برامج أو أوامر Shell. 2: نداء للنّظام System call. 3: دوّال مكتبة C. 4: ملفّات خاصّة. 5: صيّغ ملفّات واصطلاحات. 6: ألعاب. 7: متفرّقات. 8: أدوات لإدارة النّظام.
-
إجابة محمد أحمد العيل سؤال في كيف أقوم باستخراج عنواين IP من ملفات Log؟ كانت الإجابة المقبولة
هذا يعتمد على نوعيّة وهيئة السّجلّات Logs الّتي تُريد استخراج عناوين IP منها.
مثلا في سجلّاّت Apache يوجد عنوان IP في العمود الأوّل من كل سطر ضمن ملفّ السّجلّ. في هذه الحالة يُمكن استخراج عنوان IP عن طريق الأمر التّالي:
cut -d ' ' -f 1 logFile > ips.txtيُستخدم أمر cut لاستخراج جزء من أسطر في ملف نصّي.
الخيّار d- يُحدّد الفاصل بين الأعمدة، أي أنّ الأمر عندما يجد مسافة سيعتبر ما بعدها عمودا جديدًا.
الخيّار f- يعني الحقل (العمود) أو الحقول التي نُريد الاحتفاظ بها من الملفّ. في حالة سجلّات Apache يوجد عنوان IP في العمود الأوّل، لذا نُحدّد الرّقم 1.
logFile هو اسم الملّف الّي نُريد استخراج العناوين منه.
نحتفظ بنتيجة تنفيذ الأمر في ملفّ باسم ips.txt
يُمكن أيضًا استخدام grep وتعبير نمطي Regex لاستخراج عنوان IP كما يلي:
grep -oE '.*([0-9]{1,3}[\.]){3}[0-9]{1,3}*'الخيّار o- لاستبقاء جزء السّطر الّذي يُوافق التّعبير النمطي فقط.
توجد ملحوظة في الطّريقة الأخيرة. عادة يوجد إصدارُ المتصفّح في السجلّات، إن كان رقم الإصدار مكوَّنًا من 4 خانات فسيظهر محتوى السّطر الموجود بين عنوان IP ورقم إصدار البرنامج في النّتيجة. يُمكِن التّغلب على هذا الأمر باستبقاء أول مطابقة للتّعبير النمطي فقط في كلّ سطر، ولكن في هذه الحالة من الأفضل استخدام cut (على كلّ حال استخدامُ cut يستغل موارد أقلّ من الجهاز).
مثال على الملحوظة الأخيرة (سطر من سجلّ Apache لديّ في المدوَّنة )
197.241.75.122 - - [31/Mar/2015:10:49:02 -0600] "GET /2013/03/%D8%B1%D8%B3%D8%A7%D9%84%D8%A9-%D8%AE%D8%B7%D8%A3-grub-error-no-such-partition-grub-rescue/ HTTP/1.1" 304 174 "https://www.google.com/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) MxNitro/1.0.0.300
في آخر السّطر يوجد رقم إصدار مكوِّن في متصفّح المستخدِم (MxNitro/1.0.0.300). صيغة هذا الرّقم تُوافق هيئة عنوان IP ولكنّه ليس عنوان IP.