اذهب إلى المحتوى

محمد أحمد العيل

الأعضاء
  • المساهمات

    308
  • تاريخ الانضمام

  • تاريخ آخر زيارة

  • عدد الأيام التي تصدر بها

    27

كل منشورات العضو محمد أحمد العيل

  1. استخدم أداة apt-cahce على النّحو التّالي: sudo apt-cache search traceroute ستظهر مجموعة من الحزم مع وصف لكلّ منها، اختر الحزمة الّتي يُناسب وصفها البرنامج الّذي تبحث عنه.
  2. أسهل طريقة هي استخدام الأمر التّالي في سطر الأوامر: mysqldump -h HOST_OR_IP -d -u USER -pPASSWORD DATABASE_NAME > export.sqlحيث: HOST_OR_IP : اسم المستضيف أو عنوان IP الخادومUSER : اسم المستخدمPASSWORD : كلمة السّرّDATABASE_NAME : اسم قاعدة البياناتانتبه لخيّار d- فهو الّذي يجعل الأمر يقتصر على مخطّط قاعدة البيانات.
  3. يوجد سجلّ عمليّات أداة apt في المسار: /var/log/apt/history.logبالنسبة لسجلّ الحزم المثبَّتة عن طريق dpkg فهو موجودة في المسار: /var/log/dpkg.log
  4. لتغيير الرسالة الترحيبية بعد الاتّصال عن طريق SSH غيّر محتوى الملفّ etc/motd/. هذا الملف - في الإعداد الافتراضي - وصلة لملفّ var/run/motd/؛ هذا الأخير يُعاد تعيينه بعد كلّ مرّة يُسجَّل فيها الدّخول عن طريق SSH. احذف الملفّ etc/motd/ عبر الأمر (يحذف الوصلة إلى الملفّ الآخر): sudo rm /etc/motd ثم أعد إنشاءه من جديد (باستخدام nano أو أي محرّر نصوص آخر): sudo nano /etc/motdثمّ اكتُب الرسالة التي تريد. يمكن أيضًا تركه فارغًا.
  5. يجب عليك إجراء الخطوتين التاليتين: تعريف سجلّ من نوع CNAME باسم test في إعدادات DNS لديك، وجعله يُشير إلى اسم النّطاق example.com (سجلّ من نوع A).تعريف مستضيف افتراضي للموقع test.example.com وجعل var/www/example.com/public_html/test/ هو مبدأ المستند فيه Document root. راجع الدرسين: كيفية ضبط المستضيفات الافتراضية في خادوم وب Apache على أوبنتو 14.04 مقدّمة إلى مُصطَلحات وعناصر ومفاهيم نظام أسماء النطاقات.
  6. يُوفّر التّحكّم بخادوم لينكس الخاصّ بك فرصةً لتجربة أشياء جديدة والاستفادة من صلابة ومرونة هذه المنصّة الرّائعة. مع ذلك يجب على مسؤولي خواديم لينكس الانتباه إلى أنّ ميزات المنصّة لا تُغني عن التّدابير اللّازم اتّخاذها عند التّعامل مع حاسوب متّصل بالشّبكة، من أجل تأمينه وحمايته. تندرج العديدُ من الموضوعات الأمنيّة في الفئة العامة المسمّاة “أمان لينكس”، كما توجد العديد من الآراء حول مستوى الأمان المناسِب لخاودم لينكس. الفكرة الأساسيّة الّتي يجب العمل عليها هي تقرير نوعيّة الإجراءات الأمنيّة المطلوبة لحماية نظامك. قبل ذلك، ولكي تتّخذ القرارات المناسبة؛ يجب أن تعيَ الأخطار الموجودة والمقايضات الممكنة ثمّ تحدّد نقطة التّوازن بين قابليّة الاستخدام والأمان. يهدف هذا المقال إلى مساعدتك في اتّخاذ قراراتك عبر عرض بعض الإجراءات الأمنيّة الأكثر شيوعًا في البيئات الّتي تستخدم خواديم لينكس. يُرجى الانتباه إلى أنّ هذه القائمة غير شاملة ولا تتطرّق للإعدادات المنصوح بها؛ لكنّها ستُحيل إلى روابط توفّر موارد أكثر وتناقش مدى أهميّة بعض العناصر في نُظُم مختلفة. استخدام الجدران النّاريّة Firewalls لمنع الوصول ضبط وإعداد جدار ناريّ إحدى الخطوات الأسهل الّتي ينبغي تطبيقها في عمليّة تأمين الخادوم. تعمل الجدارن النّارية كحاجز بين شبكة الإنترنت وخادومك الخاصّ؛ حيثُ تُراقب حركة البيانات من وإلى الخادوم، ثمّ تقرّر السّماح لها بالمرور أو منعها. تعتمد الجدران النّاريّة في قراراتها (السّماح بمرور بيانات أو منعها) على قواعد يضبطها مدير النّظام. في العادة، يستعمل الخادوم بضع منافذ Ports للخدمات المُرخَّصة بينما تبقى بقيّة المنافِذ غير مستعملة ويجب أن توضع وراء جدار ناريّ يمنع جميع الطّلبات الموّجهة عبر هذه المنافذ من الوصول. تسمح لك الجدران النّاريّة بتجاهل البيانات الّتي لا تنتظر توجيهها إليك، وفي بعض الحالات تقييد الوصول إلى الخدمات الفعليّة الموجودة في النّظام. تُوفّر قواعد الجدران النّاريّة المعدّة بطريقة صحيحة أساسًا جيّدًا لتأمين الشّبكة. نستعرض في الفقرات التّاليّة بعض برامج الجدران النّاريّة. 1- UFW يهدف UFW (اختصار ل Uncomplicated FireWall، أي جدار ناريّ غير معقّد) إلى توفير حماية جيّدة دون الاعتماد على صيّاغة معقَّدة للقواعد كما تفعل بقيّة الحلول. UFW هو في الواقع، مثله مثل أغلب الجدران النّاريّة على لينكس، برنامج للتّحكّم في الجدار النّاري المُضمَّن في نواة لينكس، والمسمَّى Netfilter. يُعدّ UFW حلًّا سهلًا لغير المعتادين على استخدام الجدران النّاريّة على لينكس؛ وهو عمومًا حلّ جيّد. يُمكن الحصول على معلومات أكثر عن UFW، ومعرفة كيفيّة تفعيله وضبطه عبر اتّباع هذا الرّابط. 2- IPTables ربّما يكون IPTables الجدار النّاري الأكثر شهرة في لينكس. IPTables هو الآخر وسيلة لإدارة Netfilter. يتوفّر برنامج IPTables منذ زمن بعيد، وتعرَّض للكثير من التّدقيق خلال هذه الفترة للتّأكّد من أمانه. توجد نسخة مخصّصة للإصدار 6 من عناوين IP، تُسمّى IP6Tables. ستلاقي على الأرجح إعدادات تتضمّن IPTables أثناء إدارة خواديم لينكس. قد تكون صيّاغة القواعد صعبة الفهم من الوهلة الأولى، إلّا أنّ IPTables يبقى أداةً قويّة يُمكن إعدادها عن طريق مجموعة قواعد مرنة جدًّا. يشرح هذا الدّرس إعداد بعض قواعد IPTables على توزيعتيْ أوبنتو ودبيان؛ في ما تجد في الرّابط التّالي شرحًا لاستخدام IPTables على توزيعات CentOS، وFedora و RHEL. 3- IP6Tables يُستخدَم IPTables للتّعامل مع قواعد تتضمّن عناوين IP من الإصدار الرّابع IPv4؛ إذا كان الإصدار السّادس IPv6 مفعّلًا على خادومك فيجب أن تنتبه أيضًا إلى إصدار IPTables المكافئ: IP6Tables. يحتفظ الجدار النّاري المضمَّن في نواة لينكس، Netfilter، بجداول منفصلة لكلّ من البيانات المنقولة عبر IPv6 وIPv4. من هذا المنطلق، تتحدّد القواعد المطبَّقة على حزمة بيانات بإصدار IP المستخدَم. يعني هذا، بالنّسبة لمدير النّظام، أنّه يتوجّب إعداد مجموعة قواعد جديدة خاصّة بالإصدار 6 من عناوين IP، عندما يكون مفعَّلًا. تتشارك قواعد IP6Tables نفس الصّيّاغة مع قواعد IPTables؛ وهو ما يعني أنّ إضافتها لين يُشكّل مشكلًا كبيرًا. ينبغي فقط الانتباه إلى أنّ القواعد يجب أن تُطابق البيانات المُمرَّرة عبر IPv6 حتى تعمل بالطّريقة المطلوبة. 4- NFTables يُعدّ IPTables المعيار Standard في عالم الجدران النّاريّة على بيئات لينكس منذ بعض الوقت، على الرّغم من ذلك أُضيف مؤخَّرًا جدار ناريّ جديد يُدعى NFTables إلى نواة لينكس. يقف خلف الجدار الجديد نفس الفريق الّذي يُطوِّر IPTables. ويهدف - على الأمد الطّويل - إلى الحلول محلّ IPTables. يُحاول جدار NFTables مراعاة صيّاغة أكثر قابليّة للقراءة من صيّاغة IPTables، ويدعم قواعد تتعامل مع كلا الإصداريْن IPv4 وIPv6 في نفس الأداة. يُتوقَّع أن يكون NFTables حاضرًا على معظم أو كلّ توزيعات لينكس في الأمد القريب، لذا يُستحسَن محاولة التّعوّد على استخدامه. استخدام SSH للولوج الآمن عن بعد ستحتاج لطريقة للدّخول عن بعد، إن لم تكن لديك فرصة الوصول المباشر إلى الخادوم. الإجراء المتبَّع في هذه الحالة للدّخول بشكل آمن هو استخدام بروتكول معروف يُسمَّى SSH (اختصار لSecure SHell). يُوفّر SSH التّعميّة من طرف إلى طرف End-to-end encryption، إمكانيّة تمرير بيانات غير مؤمَّتة عبر اتّصال آمن، إعادة توجيه الخادوم X (واجهة المستخدِم الرّسوميّة عبر الشّبكة)، وأكثر. بالمختصر إذا أردت الاتّصال عن بعد بخادومك فيجب أن يكون SSH خيّارك الأوّل. على الرّغم من أنّ بروتوكول SSH نفسه آمن جدًّا وتعرَّض للكثير من التّدقيقات الأمنيّة، إلّا أنّ خيّارات الإعداد يُمكن أن تُعزّز أو - على العكس - تقوِّض أمان الخدمة. سنناقش هذا الأمر أدناه. 1- كلمة السّرّ في مقابل مفاتيح SSH لتسجيل الدّخول يُتيح SSH العديد من طرق الاستيثاق Authentication؛ أشهر طريقتيْن هما كلمة السّرّ ومفتاح SSH. كلمة السّرّ، من بين الخيّارين أعلاه، هي الأيسَر للمستخدم ولكنّها في نفس الوقت الأقلّ أمانًا. يسمح الاستيثاق عن طريق كلمة السّرّ لمحاولي التّسلّل باستمرار تخمين كلمة السّر إلى أن يُعثَر على الكلمة المُناسبة. تُسمّى آليّة الاختراق هذه بهجمات القوّة القاسيّة Brute force attack ويُمكن تشغيلها آليًّا بيُسر عن طريق بعض الأدوات البرمجيّة. على الجانب الآخر، تعمل مفاتيح SSH على توليد زوج من المفاتيح، عموميّ وسرّي. يُنشَأ مفتاح عموميّ Public key ليُستعمَل في تحديد هويّة المستخدِم، ويُمكن تشاركه دون مشاكل. لا يُمكن استعمال المفتاح العموميّ لأغراض أخرى غير تعريف مستخدِم، والسّماح بالولوج بمفتاح سرّي Private key موافق للمفتاح العموميّ المستعمَل. ينبغي أن لا يُنشَر المفتاح السّريّ، حيث يُستخدَم في التحقّق من المفتاح العموميّ المُصاحِب له. المبدأ هوّ أن تُضيف مفتاح SSH العموميّ الخاصّ بك إلى الخادوم وسيُسمح لك بالولوج باستعمال المفتاح السّري المُصاحِب للمفتاح العموميّ المُضاف إلى الخادوم. هذه المفاتيح على درجة من التّعقيد تجعل استخدام هجمات القوّة القاسيّة لتخمينها غير عمليّ. إضافةً لذلك، يمكن تحديد عبارة سرّ Passphrase طويلة إلى المفتاح السّرّيّ وهو ما يعني أمانًا أكبر. راجع هذا الدّرس لمعرفة المزيد حول الاتّصال عن طريق على خادوم أوبنتو SSH. الرّابط التّالي يشرح كيفيّة توليد مفاتيح SSH على خادومك. 2- إعداد fail2ban لحظر عناوين IP الخبيثة تُساعد أداة fail2ban في تأمين إعدادات SSH، ومن ثَمَّ الأمان العامّ للخادوم. تعمل fail2ban على مراقبة السّجلّات Logs لتحديد إمكانيّة أن يكون من يُحاول الاتّصال عبر SSH غيرَ مصرَّح له بالدّخول؛ في هذه الحالة يعمل fail2ban على حظر حركة البيانات القادمة من عنوان IP المُستخدَم. يسمح إعداد إستراتيجيّة صحيحة لاستخدام fail2ban بتحديد الأجهزة الّتي تحاول باستمرار - دون نجاح - الولوج إلى الخادوم، وإضافة قواعد للجدار النّاريّ لتجاهل حركة البيانات القادمة من هذه الأجهزة لفترة من الوقت. تُستعمل هذه الطّريقة دائمًا لعرقلة هجمات القوّة القاسيّة، إذ أنّ المهاجِم سيحتاج عندما يُحظَر، للانتظار بعض الوقت قبل معاودة الكرّة. يكفي هذا الأمر عادةً لإحباط من يحاول الدّخول عبر هذه الهجمات. يُمكن التّعرّف في الرّابط على كيفيّة ضبط fail2ban على أوبنتو. توجد أيضًا أدلّة مشابهة لكل من Debian وCentOS. ضبط نظام للكشف عن التّطفّل Intrusion Detection System لكشف عمليّات الدّخول غير المرخَّصة يجب الانتباه إلى وجوب إعداد آليّة لكشف الاستخدام غير المرخَّص. يُمكن أن تعدّ تدابير وقائيّة لكنك تحتاج أيضًا إلى معرفة هل نجحت هذه التّدابير أم لا. تعمل أنظمة الكشف عن التّطفّل، IDS، على تجميع معطيات عن الإعدادات والملفّات عندما يكون النّظام في وضعيّة يُعرف بأنّها جيّدة؛ ثمّ يُجري النّظام مقارنات بالمعطيات المُسجّلة لرصد تغييرات على الملفّات أو الإعدادات. سنرصد في ما يلي بعض أنظمة الكشف عن التّطفّل. 1- Tripwire يُعدّ Tripwire أحد أنظمة الكشف عن التّطفّل الأكثر شهرة. يُنشئ Tripwire قاعدة بيانات بملفّات النّظام ويحمي ملفّات الإعداد والملفّات التّنفيذيّة بمجموعة من المفاتيح. تُشعِر عمليّاتُ تشغيل Tripwire التّاليّةُ لتعيين تفاصيل الإعداد وتحديد الاستثناءات بأيّ تحريف يحصُل للملفّات الّتي يُراقبها. يُقدّم Tripwire نموذجًا مرِنًا لإعداد السّيّاسات يسمح بتشكيل خواصّه لتتلاءم مع بيئة العمل. يُمكن بعدها ضبط Cron ليُشغّل Tripwire دوريًّا؛ بل ويُمكن إعداد إشعارات تُرسَل عبر البريد الإلكترونيّ عند وجود أنشطة غير طبيعيّة. اقرأ المزيد عن إعداد Tripwire. 2- Aide برنامج Aide هو خيّار آخر لأنظمة الكشف عن التّطفّل. يُشبه Aide في عمله Tripwire؛ حيثُ ينشئ قاعدة بيانات ثمّ يقارن الوضعيّة الحاليّة للنّظام مع قيّم محفوظة أثناء وجود النّظام في وضعيّة جيّدة. عند ملاحظة أي اختلاف يُمكن للبرنامج إشعار مسؤول النّظام. يوفّر كلّ من Aide وTripwire حلولًا متشابهة لنفس المشكل. راجع التّوثيق Documentation وجرّب الاثنين ثم اختر ما يُناسبك. اقرأ الدّليل التّالي لمعرفة كيف تستخدم Aide لكشف التّطفّل. ### 3- Psad يختلف برنامج Psad عن البرنامجيْن السّابقيْن من حيث إنّه يهتمّ بجزء مختلف من النّظام. بدلًا من مراقبة ملفّات النّظام، فإن Psad يُراقب سجلّات الجدار النّاريّ لمحاولة رصد النّشاطات غير الطّبيعيّة. على سبيل المثال، إذا وُجد من يبحث عن ثغرات Vulnerabilities في النّظام عن طريق فحص المنافذ Ports فإنّ Psad يُمكن أن يرصُد هذا النّشاط ويغيّر قواعد الجدار النّاريّ ديناميكيًّا لحظر المستخدِم المعنيّ. يُمكن لهذا البرنامج تسجيل مستويات عديدة للتّهديدات ثمّ يعتمد في تجاوبه مع التّهديدات على خطورة المشكل الّذي يواجهه. توجد أيضًا إمكانيّة إرسال بريد لمدير النّظام. اقرأ الدّرس التّالي للمزيد حول استخدام برنامج Psad. ### 4- Bro برنامج Bro هو وسلة أخرى لضبط نظام كشف عن التّطفّل يعتمد على حركة البيانات في الشّبكة. Bro هو في الأصل إطار عمل Framework لمراقبة الشّبكة؛ يُمكن استخدامه كنظام للكشف عن التّطفّل أو لأغراض أخرى مثل تجميع إحصائيّات عن الاستخدام، التّحرّي عن المشاكل أو التّعرّف على أنماط Patterns معيَّنة. يُقسًّم نظام Bro إلى طبقتيْن. الطّبقة الأولى تُراقب النّشاطات وتُولّد أحداثا Events. أمّا الطّبقة الثّانيّة فتشغّل الأحداث المُولَّدة تبعًا لسيّاسات تُملي ما يتوجّب عمله. يُمكن لهذه الطّبقة إرسال تحذيرات، تنفيذ أوامر، مجرّد تسجيل الحالة أو إجراءات أخرى. يشرح الدّليل التّالي كيفيّة استخدام Bro لكشف التّطفّل. ### 5- RKHunter لا يعدّ برنامج RKHunter - تقنيًّا - برنامجًا للكشف عن التّطفّل، إلّا أنّه يعمل بنفس المبادئ الّتي تستخدمها أنظمة الكشف عن التّطفّل المعتمدة على مراقبة ملفّات النّظام، مثل Tripwire وAide. يهدف RKHunter في الأساس إلى كشف برامج Rootkits (برامج تُساعد المهاجمين في إخفاء ما ينفّذونه من عمليّات على النّظام) والبرمجيّات الخبيثة Malwares المعروفة. على الرّغم من ندرة الفيروسات على لينكس إلّا أنّ البرمجيّات الخبيثة وبرامج Rootkits موجودة ويُمكن أن تُصيب الخادوم وتُعطي إمكانيّة ولوج مستمرّ لمستغلّي الثّغرات. يُنزّل RKHunter قائمة بالثّغرات المعروفة ويتأكّد من عدم وجودها على النّظام؛ كما أنّه يحذّر مدير النّظام في حال كشف إعدادات غير آمنة في بعض التّطبيقات الشّائعة. يوجد في الرّابط التّالي دليل لاستخدام RKHunter على أوبنتو. General Security Advice تُساعد الأدوات المذكورة أعلاه في تأمين أجزاء من نظامك، إلّا أنّ الأمان لا يأتي فقط من إعداد أداة ثمّ نسيانها. يظهر الأمان في بعض العقليّات؛ ويمكن أن يتحقّق عبر الاجتهاد، التّدقيق والانخراط في عمليّة التّأمين. توجد بعض القواعد الّتي يُساعد اتّباعها في وضعك على الطّريق الصّحيح للاستخدام الآمن لنظامك. 1- انتبه إلى التّحديثات وحدّث الخادوم بانتظام يُعثر على الثّغرات طول الوقت وفي كلّ أنواع البرامج الّتي يمكن أن تكون لديك على الخادوم. يؤدّي مطوّرو التّوزيعات على العموم عملًا جيّدًا في الاطّلاع على آخر الثّغرات الأمنيّة والحرص على إرسال تحديثاتها إلى المستودعات Repositories؛ إلّا أنّ توفّر التّحديثات الأمنيّة في المستودَع لا يعني أنّ الخادوم آمن ما لم تُنزّلها وتثبّتها عليه. على الرّغم من أن الخواديم تستفيد من إصدارات مجرَّبَة جيّدًا، إلّا أنّ التّرقيعات الأمنيّة يجب أن تُعدَّ حرِجة ويجب تثبيتها فور صدورها. تُوفّر العديد من التّوزيعات قوائم بريديّة خاصّة بالأخبار الأمنيّة ومستودعات أمنيّة منفصِلة لتنزيل التّرقيعات الأمنيّة. 2- كن حذِرًا عند تنزيل برامج من خارج القنوات الرّسميّة يلتصق الكثير من المستخدمين بالبرامج المتوفّرة في المستودعات الرّسميّة لتوزيعاتهم، كما أنّ أغلب التّوزيعات تُوفّر حزمًا Packages موَقَّعة Signed. يُمكن عمومًا للمستخدمين الوثوق في مطوّري التّوزيعات والتّركيز على التّهديدات الأمنيّة في البرامج المُتحصَّل عليها من خارج المستودعات الرّسميّة للتّوزيعة. يُمكن أن تثق في الحزم القادمة من التّوزيعة الّتي تستخدمها أو من مواقع ويب رسميّة، لكن انتبه إلى إمكانيّة وجود خطر أمنيّ، إلّا إذا كنت تدقّق كل جزء من البرامج بنفسك. يرى الكثيرون أنّ مستوى الخطر هذا مقبول. على العكس من ذلك، يمكن للبرامج المتحصَّل عليها من مستودعات عشوائيّة أو من مستودعات PPA (اختصار لPersonal Package Archives، أرشيف حزم شخصية) يُشرف عليها أشخاص أو منظَّمات غير معروفة، يمكن أن تكون خطرًا محدِقا. لا توجد قاعدة عامّة، ولكن يمكن عدّ أغلب البرامج المتوفّرة في المستودعات غير الرّسميّة آمنة؛ لكن يجب الحذر والانتباه إلى وجود خطر في كلّ مرة تثق في طرف ثالث. تأكّد من قدرتك على شرح السّبب الّذي يجعلك تثق في مصدر البرنامج. في النّهاية الخطر على أمان نظامك مشكل أكبر من عدم توفّر بعض وسائل الرّاحة في التّعامل مع النّظام. 3- اعرف خدماتك وعرّف حدود استخدامها على الرّغم من أنّ الهدف الأساسيّ من تشغيل خادوم هو توفير خدمات، إلّا أنّه يجب تحديد الخدمات المُشغّلة على الجهاز وعدم تشغيل خدمات لا تحتاجها. انظُر إلى كلّ خدمة مُفَعَّلة على أنّها ناقل للخطر؛ وحاول التّخلّص من كلّ ناقل خطر حسب استطاعتك بحيث لا تؤثّر على الوظائف الّتي تُريد توفيرها عبر الخادوم. يعني هذا أنّك يجب أن تُعطّل خادوم العرض X إذا لم توجد شاشة متّصلة بالخادوم ولم تكن تشغِّل أي برامج رسوميّة (برامج الويب لا تدخل في هذا التّصنيف). يُمكن اتّخاذ إجراءات مشابهة في مجالات أخرى؛ لا تستخدمُ طابعة؟ عطِّل خدمة lp. لا تشارك الملفّات مع وندوز؟ عطِّل خدمة samba. توجد طرق عديدة لمعرفة الخدمات المُشغَّلة على جهازك. يعرض المقال التّالي لطريقة إنشاء قائمة بالخدمات المُفَعَّلة. 4- لا تستخدم FTP، استعِض عنه بSFTP. قد تكون هذه النّقطة من أكثر الأمور صعوبة للتّطبيق على كثير من المستخدمين؛ لكن بروتوكول FTP غير آمن منذ بداياته. كلّ معلومات الاستيثاق تُرسل في نصوص صِرفة (غير معمّاة) Plain-text، وهو ما يعني أنّ باستطاعة كلّ من يراقب الاتّصال بين الجهاز المحلّي وبين الخادوم معرفة بيانات الاستيثاق. توجد حالات قليلة يُمكن أن يكون فيها استخدام FTP مبرَّرا. إذا كنت تشغّل مرآة تنزيل عموميّة، مجهولة وللقراءة فقط؛ فFTP ربّما يكون خيّارًا مناسِبا. يُمكن أيضًا استخدام FTP عند نقل ملفّات بين حاسوبيْن موجوديْن في شبكتيْن محميتْن بجدار ناريّ، وتثق في أن الشّبكتيْن آمنتان. يجب أن تستخدم في أغلب الحالات الأخرى بديلًا آمنًا. تأتي حزمة SSH ببروتكول بديل يُسمَّى SFTP، يُستخدَم بنفس طريقة استخدام FTP ويوفّر نفس درجة الأمان الّتي يُوفّرها بروتوكول SSH. يشرح درس كيف تستخدِم SFTP لنقل الملفّات بأمان إلى خادوم بعيد طريقة التّعامل مع SFTP. 5- اضبُط سيّاسات حسّاسة لأمان المستخدمين توجد عدّة خطوات يُمكن تطبيقها لتأمين النّظام عند إدارة المستخدِمين. الاقتراح الأوّل هو تعطيل دخول المستخدِم الجذر Root user. يُعدّ حساب المستخدِم الجذر مقصِدًا جذّابًا لمحاولات التّسلّل نظرًا لوجوده على كلّ الأنظمة المتوافقة مع معيار POSIX، وللامتيّازات اللّامحدودة الّتي يتمتّع بها في النّظام. تبدو فكرة تعطيل دخول المستخدم Root، بعد إعداد الوصول عن طريق sudo أو إذا كنت مرتاحًا مع أمر su، تبدو فكرةً جيّدة. لا يوافق الكثيرون على هذه الفكرة؛ جرّب جدوائيّتها بالنّسبة لك. توجد إمكانيّة تعطيل الدّخول عن بعد لحساب root ضمن إعدادات SSH، كما يُمكن تعطيل الدخول للحساب الجذر محلّيًا. يُمكن أيضًا إضافة تقييدات على الحساب ضمن ملف الإعداد etc/securetty/، أو ضبط برنامج Shell للمستخدم الجذر بحيث يُشير إلى برنامج آخر ممّا ينتج عنه تعطيل وصول root إلى Shell. خيّار آخر يتمثّل في إعداد قواعد PAM (أو Pluggable Authentication Modules، وهي طبقة لتمكين الاستيثاق بين خدمات مختلفة على الأنظمة الشّبيهة بيونكس) لتقييد ولوج المستخدم الجذر. توفّر RedHat مقالًا رائعًا حول كيفيّة تعطيل دخول المستخدم الجذر. يتوجّب أيضًا العمل على تنفيذ سيّاسة أمنيّة يُنشَأ بموجبها حساب وحيد لكلّ مستخدم أو خدمة، ثمّ يُعطى الأذون Permissions الدّنيا اللّازمة لعمله. امنع الوصول إلى كلّ ما لا تحتاج الوصول إليه ولا تعطِ للمستخدمين امتيّازات لا يحتاجون إليها. هذه السّيّاسة مهمّة جدًّا، ففي حالة اختراق مستخدِم أو خِدمة فلن يؤدّي ذلك إلى تأثير الدومينو الّذي يسمح لمهاجمٍ بالحصول على صلاحيّات واسعة في النّظام. تُساعد طريقة التّقسيم هذه في عزل المشاكل الأمنيّة، بحيث لا يتسبّب مشكل أمنيّ لدى حساب واحد في تعريض كامل النّظام للخطر. يجب كذلك التّأكّد من تعطيل حسابات المستخدمين عندما تنقضي الحاجة إليها؛ مثلًا، عند إلغاء تثبيت برنامج. 6- انتبِه لإعداد الأذون تمثّل صلاحيّات الملفّات مصدرًا كبيرًا للجزع لدى كثير من المستخدمين؛ فقد يكون من الصّعب العثور على نقطة توازن بحيث يُمكن للمستخدِم أداء عمله دون أن يعرّض نفسه أو النّظام للخطر. يحتاج هذا الأمر إلى الانتباه والتّفكير في كلّ سيناريو ممكن. يجب التّفكير في سيّاسة أمنيّة تضبُط umask (الخاصّيّة الّتي تحدّد الأذون الافتراضيّة للملفّات والمجلّدات الجديدة) بما يُناسِب؛ الأمر الّذي يُشكّل خطوة كبيرة على الطّريق الصّحيح. المقال التّالي يتطرّق لكيفيّة ضبط umask. القاعدة العامّة هي ألّا تضبط إذن الكتابة على أي ملفّ إلّا إذا كان ذلك ضروريًّا، خصوصًا إذا أمكن الوصول للملفّ عبر الإنترنت، لما قد ينتُج عنه من عواقب. إضافةً لذلك، يجب ألّا تُعدّل على بت SGID أو SUID، إلّا إذا كنت تدرك جيّدًا ما تفعل. تحقّق أيضًا من أنّ كلّ الملفّات لديها مالِك ومجموعة. يتغيّر إعداد الأذون كثيرًا حسب الحاجة، ولكن يجب دائمًا محاولة العثور على طريقة لتلبيّة الحاجة بأقل أذون ممكن. ينبغي الانتباه إلى سهولة الخطأ في إعداد الأذون، ووجود العديد من النّصائح الخاطئة حولها على الإنترنت. كيف تؤمِّن برنامجًا تستخدمه لا يكفي حجم هذا المقال للتّطرّق لخصوصيّات تأمين كلّ نوع من البرامج أو الخدمات، إلّا أنّه توجد العديد من الدّروس والأدلّة المتاحة على الشّبكة. يجب أن تقرأ النّصائح الأمنيّة لكلّ برنامج تريد إعداده للعمل على جهازك. بالنّسبة لبرامج الخادوم الشّهيرة مثل خواديم الويب ونُظُم إدارة قواعد البيانات، توجد مواقع ويب وقواعد بيانات كاملة مخصَّصة للأمان. على العموم، يجب أن تقرأ حول تأمين كلّ خدمة قبل إعدادها وتشغيلها. خاتمة يجب أن تكون لديك الآن معرفة جيّدة بالإجراءات الأمنيّة الممكن إعدادها على خادوم لينكس. حاولنا في هذا الدّليل التّعرّض للعديد من المجالات ذات الأهميّة الكبيرة، ولكن في نهاية المطاف ستحتاج اتّخاذ قرارات بنفسك. يتوجب عليك، بوصفك مديرًا للنّظام؛ تحمّل مسؤوليّاتك في تأمين الخادوم. تأمين الخادوم ليس إجراءً يُؤدّى مرةً واحدة، لكنّه عملّية مستمرّة تتضمّن فحص النّظام باستمرار، إعداد الحلول، التحقّق من السّجلاّت والتّنبيهات، إعادة تعريف الاحتيّاجات، …إلخ. اليقظة واستمرار تقويم ومراقبة الإجراءات المتَّبعة أمور ضروريّة للحفاظ على الأمن. ترجمة بتصرّف لمقال An Introduction to Securing your Linux VPS لصاحبه Justin Ellingwood.
  7. يُمكن استخدام أمر getent لهذا الغرض: getent passwd 12حيثُ 12 معرّف المستخدِم
  8. الأمر التّالي يُثبّت PHP5 دون تثبيت خادوم ويب Apache sudo apt-get install php5-cli
  9. نعم يمكن اعتماد التّغييرات دون الحاجة لإعادة تشغيل خادوم ويب Nginx عن طريق إرسال إشارة HUP على النّحو التّالي: sudo kill -HUP pid حيثُ pid هو معرّف عمليّة Process خادوم الويب. عمل إشارة HUP يتلخّص في تشغيل عمليّات Worker جديدة بالإعدادت الحديثة وإيقاف تشغيل عمليّات Worker القديمة "بلطف".
  10. أيسر طريقة لمعرفة عنوان IP العمومي هي تنفيذ الأمر: curl ifconfig.me
  11. توجد أكثر من طريقة للحصول على نفس الشيئ في سطر الأوامر. سأفترض أنّك موجود في المجلّد المذكور وأنّ الملفّ المراد تركه هو test. إذا لم توجد مجلّدات فرعيّة1- عن طريق أمر find: find . \! -name 'test' -delete 2- عن طريق أمر rm: rm !(test) إذا وجدت مجلّدات فرعيّة (تحذف كل الملفّات الموجودة في المجلّدات الفرعيّة ما عدا الملفّ test): find ! -name 'test' -type f -exec rm -f {} +للمزيد حول أمر find راجع هذا الدّرس .
  12. إذا كنت تستخدم PDO فالدّالة التّالية تعطيك ما تبحث عنه: PDO::lastInsertId و بالنسبة لMysqli: mysqli::$insert_id يُرجى ملاحظة أنّك في الحالتيين تحصُل على معرّف السّطر اﻷخير المضاف في الاتّصال النّشط، وليس - بالضّرورة - المضاف في قاعدة البيانات عمومًا (ينبغي أن يكون هذا كافيًّا لعمل السكربت الّذي تتحّث عن عمله).
  13. نعم يمكن أن تعرِّف مستضيفات عديدة بنفس عنوان IP؛ الإجراء الأمثل في هذه الحالة لتسهيل الإدارة، هو تعريف سجلّ من نوع CNAME يُشير إلى سجلّ من نوع A: server1 IN A 111.111.111.111 www IN CNAME server1
  14. يُمكن استخدام أمر wget: wget --mirror -p --convert-links -P ./directory urlحيثُ url رابط الموقع. الخيّار mirror-- لتفعيل التّصوير المرآوي Mirroring.الخيّار p- لتنزيل الملفّات الضّروريّة لعرض صفحات الويب.الخيّار convert-links لتحويل الرّوابط إلى روابط محليّة يُمكن تصفّحها دون الحاجة للاتّصال بالموقع الأصلي.الخيّار P- لتحديد المجلّّد الّذي نحفظ فيه الموقع ومتعلّقاته.
  15. ما هو OPcache؟ يحتاج كلّ طلب Request في PHP إلى أن يُحلَّل Parsed، يُترجَم Compiled ثمّ يُنفَّذ Executed؛ لكن في حالات عديدة تؤدّي الطّلبات دائمًا إلى نفس النّتائج، وهو ما يعني أن الخادوم يكرّر في كلّ مرة الخطوات الثّلاث المذكورة دون حاجة لذلك. هنا يأتي دور أدوات التّخزين المؤقَّت للشّيفرة العمليّة Opcode (اختصار ل Operation code، وهو ناتج التّحليل ثمّ التّرجمة أي الصّيغة الّتي يُنفَّذ بها الطّلب)، ومن بينها OPcache. يتلخَّص عمل OPcache في الاحتفاظ بالشيفرة العمليّة في ذاكرة الوصول العشوائي RAM وتنفيذها - عند إعادة الطّلب - من الذّاكرة مباشرةً دون الحاجة للمرور بخطوتَيْ التّحليل والتّرجمة؛ وهو ما يعني اختصار الخطوات والتّقليل من حِمل العمل، غير الضّروريّ، على الخادوم. نفترض في هذا الدّرس وجود حزم LAMP مثبَّتة ومضبوطة على خادومك. تفعيل OPcache تأتي أداة OPcache مضمَّنةً في الإصدار 5.5 من PHP. الأمر التّالي يُظهر إصدار PHP المستخدَم: php -v عندي مثلًا: PHP 5.5.9-1ubuntu4.9 (cli) (built: Apr 17 2015 11:44:57) Copyright (c) 1997-2014 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies لاحظ السّطر الأخير: with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies يخبرنا هذا السّطر أن OPache مُثبَّت؛ وأنّ الإصدار المستخدَم هو 7.0.3. إذا اتّبعت خطوات كيف تُثبِّت وتؤمِّن phpMyAdmin على Ubuntu 14.04 فستجد أنّ OPcache مُفعَّل. للتّأكّد ننشئ ملفّ info.php (راجِع الدّرس السّابق) ثمّ ندخل إلى العنوان http://domain_or_ip/info.php حيث domain_or_ip نطاق أو عنوان IP الخادوم. في صفحة معلومات الخادوم نبحث عن بعض التّفاصيل. يُمكن ملاحظة أنّ ملفّ إعداد خادوم الويب المستخدَم هو etc/php5/apache2/php.ini/ وأنّ خادوم الويب يبحث عن ملفّات إعداد إضافيّة في المجلَّد etc/php5/apache2/conf.d/؛ تظهر ملفّات الإعداد الموجودة في هذا المجلّد ضمن خانة Additional .ini files parsed، ومن بينها الملفّ etc/php5/apache2/conf.d/05-opcache.ini/. يتحكّم هذا الملفّ في إعداد OPcache كما سنرى. إذا نزلنا أسفل الصّفحة فسنجد فقرات خاصّة ب OPcache: ما يهمّنا الآن من هذه الفقرة هو السّطر الأوّل: Opcode Caching Up and Running أي أنّ التّخزين المؤقَّت مُفعَّل ويعمل. إعداد OPcache توجد خيّارات عديدة لضبط آليّة عمل OPcache. سنتعرّض في هذه الفقرة لأهمّها. يقدّم توثيق PHP قائمة بجميع الخيّارات الموجودة. 1- حجم ذاكرة التّخزين المؤقّت تُحدّد تعليمة opcache.memory_consumption حجم الذّاكرة المخصَّصة لاستخدام OPcache، حيثُ تُخزّن الشيفرة العمليّة لسكربتات PHP. تُضاف هذه التّعليمة إلى ملفّ إعداد OPcache الموجد على المسار etc/php5/apache2/conf.d/05-opcache.ini/. نفتح الملفّ للتّحرير: sudo nano /etc/php5/apache2/conf.d/05-opcache.ini محتوى الملفّ: ; configuration for php ZendOpcache module ; priority=05 zend_extension=opcache.so ملحوظة: لتعطيل OPcache أضف علامة ; أما سطر zend_extension=opcache.so؛ ثمّ أعد تشغيل خادوم ويب Apache. ستلاحظ أنّ صفحة المعلومات لم تعد تظهر البيانات المتعلّقة ب Zend OPcache. نُضيف تعليمة opcache.memory_consumption ونحدّد قيمتها، علمًا أنّ القيمة الافتراضيّة هي 64MB. مثلًا، التّعليمة التّاليّة تحدّد حجم ذاكرة التّخزين المؤقّت ب128 ميغا بايت: opcache.memory_consumption=128 ينصح التّوثيق الرّسمي لOPcache بإعطاء قيمة 128 لهذه التّعليمة، إلّا أنّ الأمر يعتمد على قدرات خادومك ونوعيّة وعدد التّطبيقات والخدمات العاملة عليه. 2- الحدّ الأقصى لعدد الملفّات المُخزّنة تُتيح تعليمة opcache.max_accelerated_file تحديد عدد أقصى للملفّات المحتفظ بها في ذاكرة التّخزين المؤقَّت. القيمة المنصوح بها هي 4000: opcache.max_accelerated_files=4000 3- المدّة اللّازمة للتّحقّق من وجود تغيير على برنامج مُخزَّن في الذّاكرة تُحدّد تعليمة opcache.revalidate_freq مدّة زمنيّة (بالثّانيّة) يُتحقّق بعد انقضائها من وجود تغييرات على الملفّ المخزّن في ذاكرة الوصول العشوائيّ؛ إذا كان الاختبار إيجابيًّا، أي حدث تغيير، فإنّ الملفّ يُعاد تحليله وترجمته قبل أن يُخزّن من جديد. يُنصَح بقيمة 60 لهذه التّعليمة: opcache.revalidate_freq=60 ملحوظة: إضافة علامة ; في بداية سطر يعني تجاهلَه. في هذه الحالة، إذا كان السّطر يحوي تعليمة فلن تؤخَذ في الحسبان. يظهر الملفّ الآن بالمحتوى التّالي: ; configuration for php ZendOpcache module ; priority=05 zend_extension=opcache.so opcache.memory_consumption=128 opcache.max_accelerated_files=4000 opcache.revalidate_freq=60 لم يتبقّ إلا إعادة تشغيل خادوم الويب لتفعيل الخيّارات: sudo service apache2 restart ملحوظة: يمكن التّأكّد من عبر صفحة info.php حيث تظهر قيمة الخيّارات أعلاه في خانات بنفس أسماء الخيّارات. خاتمة يُساعد استخدام أداة OPcache في تحسين أداء الخادوم بشكل ملحوظ والاستفادة القصوى من موارد الجهاز. حاول - بحذر - تجربة إعدادات مختلفة وتفحّص تأثيراتها على الأداء حتى تجد الإعداد الأكثر مناسبةً لبيئة عملك. إذا أردت مواصلة التّحسين فدرس كيفيّة تثبيت وإعداد الذّاكرة المُخبّئة (Memcache) على Ubuntu خطوة جيّدة في هذا المجال.
  16. يؤدّي أمر rename هذه المهمّة. على افتراض أنّك موجود في المجلّد حيثُ توجد الملفّات: rename 's/DGACT/DGIC/' DGACT*حرف s للدّلالة على أنّنا نريد استبدال عبارة مكان أخرى (Substitution)، وDGACT العبارة المُبدَلة، وDGIC العبارة المُبدَل بها؛ ثمّ أخيرًا الملفّات الّتي نُريد تطبيق الأمر عليها، وهي في حالتنا جميع الملفّات الّتي تبدأ بDGACT.
  17. مجلَّد etc/profile.d/ موجود لهذا الغرض، حيثُ توضع به الإعدادات الموجّهة للاستخدام العامّ في النّظام.لإضافة مجلّد إلى مسار PATH بحيث يُصبح متاحًا دائمًا لكلّ المستخدمين نتبع الخطوات التّاليّة. نسجّل الدّخول لحساب المستخدم الجذر: suثمّ ننفّذ الأمر: echo 'pathmunge /usr/lib/program/bin' > /etc/profile.d/program.shيُنشئ الأمر السّابق ملفًّا في المسار etc/profile.d/program.sh/ ويكتب الأمر pathmunge /usr/lib/program/bin ضمن هذا الملفّ. تُستخدَم دالّة pathmunge على توزيعات RedHat وCentOS وFedora لإضافة مسار إلى متغيّر البيئة PATH. أصبح لدينا الآن سكريبت به أمر لإضافة المجلّد إلى متغيّر البيئة PATH. نجعل الملفّ قابلًا للتّنفيذ عبر الأمر: chmod +x /etc/profile.d/program.shلم يتبقّ الآن سوى إعادة تحميل إعدادات المستخدم الحالي لأخذ التّغييرات في الحسبان: . /etc/profile
  18. الاختلاف الأساسيّ هو في الصّياغة حيثُ يمكن كتابة: var=$(command $(command)) أما في الصيّاغة الأخر فيجب إضافة \ أمام علامة ` ليُمكن دمج أمرين معًا: var=` command \`command\``
  19. يُمكن استخدام أمر find للبحث عن هذه الملفّات ثمّ حذفها: find /Path/to/folder -type f -name "data*" -delete حيث /Path/to/folder/ مسار المجلّد الّذي توجد به الملفّات، و"*data" تعبير نمطي Regular epression للدّلالة على كلّ الملفّات الّتي تبدأ بكلمة data. خيّار delete- لحذف الملفّات. للمزيد حول find راجع درس كيف تستخدِم أمرَي find و locate للبحث عن الملفّات على Linux. ينبغي الحذر قبل استخدام خيّار delete- مع أمر find حتّى لا تقع في أخطاء.
  20. مقدّمةتُستخدم أداة Rsync - الّتي يأتي اسمها اختصارًا ل”مزامنة عن بُعد” (Remote synchronization) - لمزامنة ملفّات على الجهاز المحلّي وأخرى على الخادوم. تعتمد أداة rsync على خوارزميّة Algorithm تُقلِّل من حجم البيانات المُتبادَلة بين الطّرفين بنقل الأجزاء الّتي حَدَث فيها تغيير فقط، دون غيرها. سنغطّي في هذا الدّليل أساسيّات استخدام هذه الأداة الفعَّالة. اعتمدنا للشّرح على خادوم Ubuntu 14.04؛ ولكن يجدُر بالأمثلة المقدَّمة هنا العمل على أيّ توزيعة لينوكس حديثة. ماهيّ أداة Rsync؟أداة Rsync هيّ وسيلة مرنة للمزامنة عبر الشّبكة. يُمكن أن يُحيل الاسمُ أيضًا إلى البروتوكول المُطوَّر لاستخدام هذه الأداة. نتحدّث في هذا الدّليل عن Rsync الأداة وليس البروتوكول. تُضمَّن أداة rsync افتراضيًّا في أغلب توزيعات لينوكس؛ نظرًا لشعبيّتها وانتشار استخدامها على الأنظمة الشبيهة بيونكس Unix-like. الصّيغة القاعديّة ﻷمر rsyncمن اليسير تنفيذ أمر rsync فهو يعمل كما تعمل أوامر scp، ssh وcp. سننشئ، من أجل تجربة عمل rsync، مجلّديْن وبعض الملفّات؛ عبر الأوامر التّاليّة: cd ~ mkdir dir1 mkdir dir2 touch dir1/file{1..100}يُصبِح لدينا بعد تنفيذ هذه الأوامر مجلّدان، dir1 وdir2؛ الأوّل يحوي 100 ملفّ فارغة: ls dir1محتوى المجلّد dir1: file1 file18 file27 file36 file45 file54 file63 file72 file81 file90 file10 file19 file28 file37 file46 file55 file64 file73 file82 file91 file100 file2 file29 file38 file47 file56 file65 file74 file83 file92 file11 file20 file3 file39 file48 file57 file66 file75 file84 file93 file12 file21 file30 file4 file49 file58 file67 file76 file85 file94 file13 file22 file31 file40 file5 file59 file68 file77 file86 file95 file14 file23 file32 file41 file50 file6 file69 file78 file87 file96 file15 file24 file33 file42 file51 file60 file7 file79 file88 file97 file16 file25 file34 file43 file52 file61 file70 file8 file89 file98 file17 file26 file35 file44 file53 file62 file71 file80 file9 file99لمزامنة محتوى المجلَّديْن dir1 وdir2 الموجوديْن على نفس النّظام، ننفّذ الأمر: rsync -r dir1/ dir2خيّار r- يعني Recursive، أيّ تكراريّ؛ وهو ضروريّ لمزامنة المجلّدات. يوجد أيضًا خيّار بديل هو a-: rsync -a dir1/ dir2خيّار a-، الّذي يعني archive، هو في الواقع تجميع لخيّاريْن؛ إذ يُزامن المجلّدات (عمل r-) ويُحافِظ على الوصلات الرّمزيّة Symbolic links، ملفّات الأجهزة المُلحَقة Devices والملفّات الخاصّة، تاريخ التّعديل، المجموعة، المالِك والأذون Permissions. يُستخدم خيّار a- أكثر من خيّار r-؛ وربّما يكون الأنسب لك. 1- ملحوظة مهمّة للغايةربّما لاحظت شَرْطة مائلة Slash زائدة في نهاية المُعطى الأوّل في الأوامر أعلاه، مثلًا بعد dir1 في الأمر التّالي: rsync -a dir1/ dir2هذه الشَّرطة ضروريّة عندما نُريد نقل “محتوى المجلّد dir1“. لو لم نستخدِم الشَّرطة في نهاية اسم المجلَّد فإنّ rsync ستنقل المجلّد dir1 ومحتواه داخل dir2. سينتُج إذن مجلّدات تكون بنيتُها على النّحول التّالي: ~/dir2/dir1/[files]تأكّد دائمًا من معطيات rsync قبل تنفيذ الأمر. تُوفّر rsync طريقة للتحقّق عند تمرير خيّار n- أو dry-run--، الّذي يُحاكي عمل الأمر دون إجراء التّغييرات فعليًّا. خيّار v- (أي Verbose، مُطنِب) ضروريّ أيضًا للحصول على المُخرجات المُناسبة: rsync -anv dir1/ dir2مثال على النّتيجة: sending incremental file list ./ file1 file10 file100 file11 file12 file13 file14 file15 file16 file17 file18 . . .قارِن مُخرجات الأمر أعلاه، مع مخرجات الأمر عند حذف الشَّرطة المائلة من نهاية اسم المجلّد الأوّل: rsync -anv dir1 dir2النّتيجة: sending incremental file list dir1/ dir1/file1 dir1/file10 dir1/file100 dir1/file11 dir1/file12 dir1/file13 dir1/file14 dir1/file15 dir1/file16 dir1/file17 dir1/file18 . . .يُمكن ملاحظة أنّه في الحالة الأخيرة يُنقَل المجلَّد dir1 نفسه. انتبه إلى أنّ الأوامر الأخيرة لا تُزامِن المجلّدات إذ أنّ هذه الأوامر محاكاة ولا تُنفَّذ فعليًّا نظرًا لاستخدام خيّار n-. كيف تستخدم Rsync للمزامنة عن بعد مع خادوميُمكن - بيُسر - مزامنة الملفّات عن بعد مع خادوم إذا كانت لديك إمكانيّة الولوج عبر SSH مع وجود rsync على الجهازيْن المحلّي والبعيد. إذا أردت إعداد مفاتيح SSH، فالدّرس التّالي يشرح كيف يكون ذلك. تستطيع، بعد التّأكّد من إمكانيّة الاتّصال بين الجهازَين عبر SSH، مزامنةَ المجلَّد dir1 أعلاه بجهاز بعيد عن طريق الأمر التّالي (يُرجى ملاحظة عدم استخدام الشّرطة المائلة في آخر اسم المجلَّد، إذ أنّنا نُريد نقل المجلَّد نفسِه): rsync -a ~/dir1 username@remote_host:destination_directoryحيثُ username اسم المستخدِم على الخادوم، remote_host عنوان الخادوم، وdestination_directory مسار المجلَّد الوجهة. تُسمَّى هذه العمليّة بالدّفع Push؛ إذ تدفع بالمجلّد من الجهاز المحلّي إلى الجهاز البعيد. تُسمَّى العمليّة المُعاكسة بالسّحب Pull؛ وتُستخدَم لمزامنة مجلَّد على جهاز بعيد مع النّظام المحلّي. إن كان المجلَّد dir1 موجودًا على الجهاز البعيد فالأمر المُستخدَم لمزامنته مع الجهاز المحلّي هو: rsync -a username@remote_host:/home/username/dir1 place_to_sync_on_local_machineحيث place_to_sync_on_local_machine مكان المزامنة على الجهاز المحلّي، وhome/username/dir1/ مسار المجلَّد dir1 على الجهاز البعيد. المُعطى الأوّل في أمر rsync - مثل cp والأوامر المُشابهة - يُمثّل دائمًا المصدَر (Source)، بينما يُمثِّل المُعطى الثّاني الوجهة (Destination). خيّارات مفيدة للاستخدام في Rsyncتُتيح Rsync خيّارات عديدة للتّعديل على السّلوك الافتراضيّ للأداة. تطرّقنا في الفقرات السّابقة لأكثرها ضرورة. 1- خيّار z-إذا كنت تنقل ملفّات لم تُضغَط بعد، مثل ملفّات نصيّة، يُمكنك تقليل تبادل البيانات عبر الشّبكة بتفعيل ضغط الملفّات Compression عن طريق خيّار z-: rsync -az source destination2- خيّار P-خيّار مهمّ آخر هو P-. حيثُ يجمع بين عمل خيّاريْن آخريْن هما progress-- وpartial--. يعرِض الأوّل شريطًا بتقدّم عمليّات النّقل، أمّا الثّاني فيسمح باستكمال نقل الملفّ بعد انقطاعه: rsync -azP source destinationمثال على النّتيجة: sending incremental file list ./ file1 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101) file10 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101) file100 0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=97/101) file11 0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=96/101) …إذا أعدنا تنفيذ الأمر مرةً أخرى سنلاحِظ مخرجاتٍ أقلّ نتيجةً لعدم وجود تغييرات على الملفّات. يُوضِّح هذا المثال قابليّة rsync لاستخدام تاريخ التّعديل لتحديد وجود تعديلات من عدمها. rsync -azP source destination sending incremental file list sent 818 bytes received 12 bytes 1660.00 bytes/sec total size is 0 speedup is 0.00نُحدِّث تاريخ تعديل بعض هذه الملفّات ونلاحِظ أنّ rsync تنقل فقط الملفّات الّتي عُدِّل عليها: touch dir1/file{1..10} rsync -azP source destinationالنّتيجة: sending incremental file list file1 0 100% 0.00kB/s 0:00:00 (xfer#1, to-check=99/101) file10 0 100% 0.00kB/s 0:00:00 (xfer#2, to-check=98/101) file2 0 100% 0.00kB/s 0:00:00 (xfer#3, to-check=87/101) file3 0 100% 0.00kB/s 0:00:00 (xfer#4, to-check=76/101) . . .3- خيّار delete–لا يحذف الإعداد الافتراضيّ لrsync ملفّات من الوِجهة عند حذفها من المصدَر، إذا أردنا مزامنة مجلَّدين بحيث يتطابق محتواهما فمن الضّروريّ حذف هذه الملفّات. يوجد خيّار delete-- للتّعديل عل هذا السّلوك. من الجيّد - احترازًا - استخدام خيّار dry-run-- لاختبار الأمر والتّأكّد من عدم ضياع ملفّات. rsync -a --delete source destination4- خيّارا exclude– وinclude–يوجد أيضًا خيّار exclude-- لاستبعاد ملفّات أو مجلّدات من المزامنة. يُفرَّق بين الملفّات أو المجلّدات بفاصلة (,): rsync -a --exclude=pattern_to_exclude source destinationفي المثال أعلاه pattern_to_exclude هو نمط تتبعه الملفّات المُراد استبعادها من المزامنة. مثلًا لاستبعاد صور ذات لاحقة jpg يكون النّمط jpg.*. يوجد كذلك خيّار include لإدراج بعض الملفّات أو المجلّدات الّتي ينطبق عليها نمط الاستبعاد، لإدراجها في المزامنة: rsync -a --exclude=pattern_to_exclude --include=pattern_to_include source destinationخاتمةتُسهِّل أداة Rsync نقل الملفّات عبر الشّبكة وتُحسّن من جودة مزامنة المجلّدات الموجودة على الجهاز المحلّي. تجعل المزامنة من Rsync خيّارًا جدًّا لكثير من العمليّات على مستوى الملفّات. يسمح لك إتقان التّعامل مع rsync بتصميم عمليّات نسخ احتيّاطيّ Backup والتحكّم الدّقيق بما يُنقَل وكيف. ترجمة بتصرّف لمقال How To Use Rsync to Sync Local and Remote Directories on a VPS لصاحبه Justin Ellingwood.
  21. أمر lsof يؤدّي هذه المهمّة. يُستخدَم أمر lsof لسرد قائمة بالملفّات المفتوحة (lsof = list open files)؛ الخيّار i- يُعطي قائمة بالملفّات المفتوحة المرتبطة باتّصال عبر الشّبكة الموافقة للعنوان الموالي للخيّار. صيغة العنوان هي التّاليّة: lsof -i [IPVersion][Protocol][Host][:Port or Service]حيث IPVersion: إصدار بروتوكول IP 4 أو 6.Protocol: بروتوكول الاتّصال المستخدَم، TCP أو UDP.Host: اسم أو عنوان المستضيف.Port or Service: رقم منفَذ أو اسم خدمة.في حالتنا نُريد الملفّات المرتبطة باتّصال بالمنفَذ رقم 8080، يكون الأمر إذن: lsof -i :8080
  22. يُمثِّل الفصل بين الامتيّازات Privileges أحد المبادئ الأمنيّة الأساسيّة المُدرجَة في Linux والأنظمة الشّبيهة بيونكس Unix-like. تجسيدًا لهذا المبدأ يعمل المسخدمون العاديّون بامتيّازات محدودة لحدّ دائرة تأثيرهم على بيئتهم الخاصّة وليس على كامل نظام التّشغيل. يوجد مستخدم خاصّ يُسمّى المستخدم الجذر root user ويملك امتيّازات “المستخدم الأعلى”. حساب المستخدم الجذر هو حساب إداريّ لا توجد عليه القيود الموجودة على المستخدمين العاديّين. يُمكن للمستخدمين العاديّين تنفيذ أوامر بامتيّازات المستخدم الأعلى (المستخدم الجذر) بطرق مختلفة. سنناقش في هذا الدّليل الطّريقة الصّحيحة والآمنة للحصول على امتيّازات المستخدم الجذر، مع التّركيز على ملفّ etc/sudoers/. سنطبّق الخطوات المشروحة هنا على خادوم Ubuntu 14.04؛ يجب أن تكون هذه الخطوات صالحة لأغلب توزيعات لينوكس الحديثة. نفترض في هذا الدّرس، أنّك أكملت خطوات درس الإعداد الابتدائي لخادوم أوبنتو.سجِّل الدّخول إلى خادوم أوبنتو بحساب مستخدم عادي (غير المستخدم الجذر). كيف يمكن الحصول على امتيّازات المستخدم الجذرتوجد ثلاث طرق للحصول على امتيّازات المستخدم الجذر، تختلف في مستوى صعوبتها. 1- تسجيل الدّخول بحساب المستخدم الجذرأسهل طريقة وأكثرها مباشرة للحصول على امتيّازات root هيّ تسجيل الدّخول بدْءًا بحساب المستخدم الجذر. يكون تسجيل الدّخول عن بعد عبر SSH على النّحو التّالي: ssh root@your_IP_address_or_domainحيث your_IP_address_or_domain يمثّل عنوان IP العموميّ للخادوم أو نطاق الموقع. سيُطلب منك إدخال كلمة السّر قبل الولوج. 2- الانتقال إلى حساب المستخدم الجذر عن طريق “su”لا يُنصَح بتسجيل الدّخول إلى الخادوم بحساب المستخدم الجذر؛ إذ قد يؤدّي ذلك إلى استخدام مُدير النّظام (root) في مهامّ غير إداريّة، وهو أمر خطير أمنيًّا. الطّريقة الثّانيّة تسمح بالحصول على امتيّازات المستخدم الجذر في أيّ وقت، حال الحاجة إليها. يؤدّي أمر su، وهو اختصار لsubstitute user (أي “غيّر المستخدم”)، هذه المهمّة: suسيُطلب منك إدخال كلمة سرّ حساب المستخدم الجذر، ثمّ تنتقل بعدها إلى جلسة Shell خاصّة بالمستخدم الأعلى. للخروج من جلسة المستخدم الجذر، بعد الانتهاء من أداء المهامّ الّتي تتطلّب امتيّازات إداريّة، نفّذ الأمر التّالي: exit3- استخدام “Sudo” لتنفيذ الأوامر بحساب المستخدم الجذرالطّريقة الأخيرة، والأكثر تعقيدًا للحصول على امتيّازات root هيّ استخدام أمر sudo. يسمح أمر sudo بتنفيذ أمر واحد بامتيّازات root، دون الحاجة لإنشاء جلسة Shell جديدة. تُنفَّذ الأوامر على النّحو التّالي (تُمثِّل command_to_execute الأمر المُراد تنفيذه بامتيّازات المستخدم الجذر): sudo command_to_executeعلى عكس su، يطلب أمر sudo كلمة سرّ المستخدِم الّذي يُنفّذ الأمر وليس كلمة سرّ حساب المستخدِم الجذر. لا يعمل أمر sudo افتراضيًّا، نظرًا لتداعيّاته الأمنيّة، ويجب أن يُضبَط قبل أن يؤدّي وظائفه. إذا كنت تابعت خطوات درس الإعداد الابتدائي لخادوم أوبنتو فقد أكملت الإعدادات الأساسيّة لضبط مستخدم بامتيّازات الجذر. سنناقش في الفقرة التّاليّة كيفيّة ضبط الإعداد بتفصيل أكثر. ماهو Visudo؟يُضبَط أمر sudo عبر ملفّ يُتَوَّصل إليه عبر المسار etc/sudoers/. ملحوظة: لاتحرّر أبدًا هذا الملفّ بمحرّر نصوص عاديّ. استخدِم دائمًا أمر visudo لهذا الغرض. من المهمّ جدًّا استخدام أمر sudo لتحرير ملفّ sudoers، إذ يمكن أن يؤدّي استعمال صيغة خاطئة في هذا الملفّ إلى جعل نظام التشغيل في وضع لا يصحّ معه الحصول على امتيّازات إداريّة. يعرض أمر visudo محرّر نصوص شبيهًا بالمحرّرات العاديّة، ولكنّه يُضيف آليّة للتحقّق من صيغة التّعليمات الموجودة في الملفّ؛ تعمل عند محاولة الحفظ. تحول هذه الآليّة دون وجود أخطاء تمنع عمليّات sudo. ملحوظة: استخدِم الزرّيْن CTRL وO معًا لحفظ الملفّ ثمّ Enter للتّأكيد. للخروج اضغط زرّيْ CTRL وX. تاريخيًَا، كان أمر visudo يفتح ملفّ etc/sudoers/ في محرّر vi للنّصوص (اسم الأمر visudo هو مزيج من vi وsudo)، إلّا أنّه في أوبنتو مُعَدّ لاستخدام محرّر nano. في حال أردت العودة لاستخدام vi لتحرير ملفّ sudoers فالأمر التّالي يؤدّي هذه المهمّة sudo update-alternatives --config editorمثال على النّتيجة: There are 3 choices for the alternative editor (providing /usr/bin/editor). Selection Path Priority Status ------------------------------------------------------------ * 0 /bin/nano 40 auto mode 1 /bin/nano 40 manual mode 2 /usr/bin/vim.basic 30 manual mode 3 /usr/bin/vim.tiny 10 manual modeاختر العدد الموافق للمحرّر الّذي تريد اختيّاره. على CentOS، يمكن تغيير هذه القيمة بالتّعديل على السّطر التّالي، الموجود في ملفّ bashrc./~ (تمثّل /path/to/editor المسار إلى المحرّر المطلوب): export EDITOR=/path/to/editorلأخذ التّغييرات في الحسبان، نفِّذ الأمر: ~/.bashrcنفّذ الأمر التّالي، بعد الانتهاء من ضبط visudo، للوصول إلى ملفّ etc/sudoers/: sudo visudoكيف تحرّر ملفّ Sudoersسيظهر - بعد تنفيذ أمر visudo - ملفّ sudoers في محرّر النّصوص. أدناه ملفّ sudoers في أوبنتو 14.04 بعد حذف التّعليقات (يتضمّن الإعدادات الّتي ضبطناها في درس كيف تُضيف أو تحذف المستخدمين على خادوم أوبنتو 14.04). في CentOS يحوي الملفّ أسطرًا أكثر؛ لن نناقشَها كلَّها في هذا الدّليل. Defaults env_reset Defaults mail_badpass Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" root ALL=(ALL:ALL) ALL %admin ALL=(ALL) ALL %sudo ALL=(ALL:ALL) ALLفلنلقِ نظرة على عمل هذه الأسطر. 1- أسطر Defaultsالسّطر الأوّل Defaults env_reset يُعيد تعيين بيئة عمل الطّرفيّة من أجل حذف المتغيّرات الخاصّة بالمستخدمين من بيئة العمل. هذا الإجراء احترازيّ لمسح متغيّرات قد تكون مضرّة من جلسة sudo، Sudo session. تعليمة Defaults mail_badpass تطلب إرسال بريد إلى عنوان إلكتروني تُحدّده تعليمة أخرى (mailto) عندما يُدخل مستخدم كلمة سرّ خاطئة أثناء تنفيذ أمر sudo. هذه التّعليمة مُعطَّلة افتراضيًّا. أمّا التّعليمة الّتي تبدأ ب =Defaults secure_path فتحدّد المسارات Paths الآمنة الّتي سيُبحَث فيها عن أمر sudo. يحول هذا الإجراء دون استخدام مسارات قد تحوي برامج ضارّة. 2- أسطر امتيّازات المستخدميتعلّق السّطر الرّابع بالامتيّازات الّتي ينالها المستخدم عند تنفيذه أمر sudo. root ALL=(ALL:ALL) ALLيُشير الحقل الأوّل من السّطر إلى المستخدِم الّذي تنطبق عليه التّعليمة (المستخدِم الجذر في هذه الحالة). قيمة الحقل التّالي (ALL) تُشير إلى أنّ القاعدة تُطبَّق على جميع المستضيفات Hosts.الحقل الثّالث يُعيّن المستخدمين الّذين يُمكن للمستخدم المحدّد في الحقل الأوّل من السّطر (root في هذه الحالة) تنفيذُ أوامر بامتيّازاتهم. قيمة ALL تعني “كلّ المستخدمين”.الحقل الرّابع يُعيّن مجموعات المستخدمين Groups الّتي يُمكن للمستخدم المحدّد في الحقل الأوّل من السّطر (root في هذه الحالة) تنفيذُ أوامر بامتيّازاتهم. قيمة ALL هنا تعني “كلّ المجموعات”.الحقل الأخير يُشير إلى الأوامر الّتي ينال المستخدم المحدّد في الحقل الأوّل من السّطر امتيّاز تنفيذها بامتيّازات إداريّة. قيمة ALL هنا تعني “جميع الأوامر”.يُمكن تفسير السّطر على النّحو التّالي: لدى المستخدم root امتيّاز تنفيذ sudo على أي أمر بشرط تقديمه لكلمته للسّر. 3- أسطر امتيّازات مجموعات المستخدمينيُشبه السّطران الأخيران سطرَ امتيّازات المستخدِم، لكنّها تحدّد امتيّازات مجموعة من المستخدمين. تُشير الكلمات الّتي تسبقها علامة % إلى أسماء مجموعات مستخدمين. نلاحِظ أن مجموعة المستخدمين admin يُمكنها تنفيذ أيّ أمر بامتيّازات أي مستخدم على جميع المستضيفات؛ أمّا مجموعة admin فلديها، زيّادةً على امتيّازات مجموعة admin، إمكانيّة تنفيذ أوامر بامتيّازات أي مجموعة مستخدمين. كيف تضبُط قواعد مخصَّصةنتناول، بعد التّعرف على الصّيغة العامة لقواعد ملفّ sudoers، في هذه الفقرة طريقة إنشاء قواعد جديدة. 1- كيف تُنشئ كِنى Aliasesيُمكن تنظيم ملفّ sudoers عن طريق تجميع بعض التّعليمات بواسطة كِنى مختلفة. يُنشئ المثال التّالي ثلاث مجموعات مستخدمين (تعليمة User_Alias)، بعضويّات متداخلة: User_Alias GROUPONE = abby, brent, carl User_Alias GROUPTWO = brent, doris, eric, User_Alias GROUPTHREE = doris, felicia, grantيجب أن يبدأ اسم المجموعة بحرف كبير Capital letter. يُمكننا الآن إنشاء قاعدة في ملفّ sudoers تسمح لأعضاء المجموعة GROUPTWO تحديث قاعدة بيانات apt-get : GROUPTWO ALL = /usr/bin/apt-get updateإن لم نُحدّد مستخدمًا أو مجموعة مستخدمين يُنفّذ بامتيّازاتها الأمر، فإن sudo تأخذ المستخدم الجذر root لتنفيذ الأوامر باسمه. في المثال أدناه نمنح أعضاء GROUPTHREE صلاحيّة إيقاف وإعادة تشغيل الجهاز؛ عبر إنشاء “كنية أوامر” Command alias (تعليمة Cmnd_Alias) واستخدامها في قاعدة للمجموعة GROUPTHREE: Cmnd_Alias POWER = /sbin/shutdown, /sbin/halt, /sbin/reboot, /sbin/restart GROUPTHREE ALL = POWERأنشأنا في السّطر الأوّل كنية باسم POWER تحوي أوامر لإيقاف وإعادة تشغيل الجهاز. ثمّ نعطي لأعضاء المجموعة GROUPTHREE امتيّاز تنفيذ هذه الأوامر. توجد أيضًا إمكانيّة إنشاء كنية بأسماء مستخدمين لتنفيذ الأوامر بامتيّازاتهم (Runas_Alias)، ثمّ إبدال جزء القاعدة الّذي يحدّد المستخدم الّذي لديه صلاحيّة تنفيذ الأمر بكنية أسماء المستخدمين. Runas_Alias WEB = www-data, apache GROUPONE ALL = (WEB) ALLفي المثال السّابق، أنشأنا كنية WEB لتنفيذ أوامر بامتيّازات www-data أو apache؛ ثمّ قاعدة تسمح لكلّ عضو في GROUPONE بتنفيذ أوامر بامتيّازات العضوَيْن المذكورَيْن. يجب الانتباه إلى أنّه في حال وجود تناقض بين قاعدتَيْن في ملفّ sudoers فإنّ القاعدة الأخيرة هيّ الّتي ستُطبَّق. 2- كيف تؤمِّن القواعدتوجد طرُق عدّة لتمكين تحكّم أكبر حول كيفيّة تفاعل sudo مع المستخدم. إذا أردنا مثلًا السّماح للمستخدمين بتنفيذ أمر updatedb، وهو أمر آمِن نسبيًّا، بامتيّازات المستخدم الجذر دون الحاجة لإدخال كلمة سرّ root فالقاعدة التّاليّة تؤدّي هذه المهمّة: GROUPONE ALL = NOPASSWD: /usr/bin/updatedbيظهر في القاعدة أعلاه وسم tag هو NOPASSWD والّذي يعني أنّه لن يُطلَب من المستخدم إدخال كلمة سرّ root. يوجد وسم آخر مصاحِب هو PASSWD (سلوك افتراضيّ) والّذي يطلُب إدخال كلمة السّر. ينطبق الوسم على بقيّة القاعدة ما لم يُذكر توءَمُه بعده. يُمكِن أن نجد قاعدةً على الشّكل التّالي مثلًا: GROUPTWO ALL = NOPASSWD: /usr/bin/updatedb, PASSWD: /bin/killيوجد وسم آخر مهمّ هو NOEXEC والّذي يُستخدم لمنع السّلوك غير الآمن لبعض البرامج. على سبيل المثال؛ تسمح بعض البرامج، مثل less، بتنفيذ أوامر أخرى داخل واجهتها: less fileحيثُ file اسم ملفّ يُنفَّذ عليه أمر less. الآن يُمكن تنفيذ أمر بنفس الصّلاحيّات الّتي نفّذنا بها less على النّحو التّالي (حيثُ command_to_run اسم أمر): !command_to_runلمنع هذا الأمر من الحصول، يُمكن كتابة قاعدة كالتّالية: username ALL = NOEXEC: /usr/bin/lessمعلومات متفرّقةنعرض في هذه الفقرة لمعلومات إضافيّة مفيدة عند التّعامل مع أمر sudo. إذا حدّدت مستخدمين، أو مجموعة مستخدمين، لتنفيذ أوامر بامتيّازاتهم عبر تعليمة Runas_Alias في ملفّ الإعداد؛ فيُمكنك تنفيذ أوامر بامتيّازات هؤلاء المستخدمين عن طريق خيّار u- أو g- على التّوالي: sudo -u run_as_user command sudo -g run_as_group commandحيثُ run_as_user وrun_as_group اسم المستخدم أو مجموعة المستخدمين على التّوالي، و command الأمر المُراد تنفيذه. يحفظ أمر sudo بعد استخدامه تفاصيلَ الاستيثاق Authentication (كلمة السّرّ) في الطّرفيّة الّتي نُفِّذ فيها لفترة من الوقت. يعني هذا أنّك لن تحتاج لإعادة كتابة كلمة السّرّ في كلّ مرّة تستخدم فيها sudo، ما لم تنقضِ فترة الحفظ. إن أردت تصفير المؤقّت، لأغراض أمنيّة مثلًا، نفّذ الأمر التّالي: sudo -kإذا رغبت في معرفة الامتيّازات المُعيَّنة للحساب الّذي تستخدمه فخيّار l- يعطيك هذه المعلومة: sudo -lسيعرض الأمر قائمة بالقواعد الّتي تعني حساب المستخدم ضمن ملفّ etc/sudoers/، وهو ما يُعطي فكرة جيّدة عن المسموح وغير المسموح به لمستخدم عند تنفيذ sudo. يحدُث أن تنسى كتابة sudo أمام أمر تريد تنفيذه بامتيّازات إداريّة، ممّا يؤدّي إلى فشل الأمر. يوجد الاختصار التّالي لتفادي كتابة الأمر مجدّدًا: sudo !!علامة التّعجّب مرّتين تعني “أعد تنفيذ الأمر الأخير”، وبما أنّها مسبوقة ب sudo فالأمر يُصبح “أعد تنفيذ الأمر الأخير بامتيّازات إداريّة”. إذا كنت تتمتّع بحسّ الفكاهة فيُمكنك إضافة تعليمة Defaults insults إلى ملفّ sudoers؛ عمل هذه التّعليمة يتلخّص في كتابة تقريع (بالإنجليزيّة) عندما يُخطئ المستخدم في كلمة السرّ عند تنفيذ أوامر بsudo: sudo visudoأضف التّعليمة التّاليّة بعد تعليمات Defaults الأخرى: Defaults insultsلتجربة الإعداد الأخير، نمسح كلمة السّرّ المحفوظة حتّى نتأكّد من أنّ sudo سيطلُب إدخال كلمة السّرّ: sudo -kثمّ ننفّذ الأمر التّالي، ونكتب كلمة سرّ خاطئة في المرّة الأولى: sudo lsمثال على النّتيجة: [sudo] password for demo: # أدخِل كلمة سرّ خاطئة Your mind just hasn't been the same since the electro-shock, has it? [sudo] password for demo: My mind is going. I can feel it.خاتمةيجب أن يكون لديك بعد إكمال هذا الدّرس فهمٌ جيّد لأساسيّات التّعامل مع ملفّ sudoers وطريقة قراءة وتعديل هذا الملفّ؛ إضافةً إلى معرفة طُرُق الحصول على امتيّازات إداريّة. تذكّر أنّه يوجد سبب لعدم منح امتيّازات المستخدم الأعلى للمستخدمين العاديّين؛ لذا من المهمّ جدًّا فهم آليّة عمل أيّ أمر قبل تنفيذه بامتيّازات root. لا تستهِر في التّعامل مع الصّلاحيّات الإداريّة، وتعلّم أفضل الطّرق لاستخدام هذه الأدوات لتلبيّة حاجاتك. احظُر أي ميزة لا ترى حاجة لاستخدامها. ترجمة بتصرّف لمقال How To Edit the Sudoers File on Ubuntu and CentOS لصاحبه Justin Ellingwood.
  23. نفترض أنّك تريد البحث عن كلمة one وإبداله بtwo ضمن ملفّ باسم file1 وحفظ النّاتج في ملفّ باسم file2. الأمر التّالي يؤدّي هذه المهمّة: sed 's/one/two/g' file1 > file2 خيّار s للاستبدال (Substitute)؛ و g لتطبيق الأمر على كامل الملفّ، أيّ في كل مرة يجد فيها كلمة one وليس فقط أوّل مرة. علامة < تُستخدم لحفظ نتيجة الأمر قبلها في ملفّ جديد. راجع درس مقدّمة إلى إعادة توجيه الإدخال/الإخراج (i/o) في لينكس . إذا أردنا إحداث التّغيرات في الملفّ نفسه (أي تغيير محتوى الملفّ بحيث تحلّ two مكان one) نستخدم خيّار i-: sed -i 's/one/two/g' file
  24. يُمكن استخراج الصّوّر الموجودة في الملفّ بفكّ ضغطه. تدلّ tar أنّ مجموعة من الملفّات مجموعة ضمن نفس الملفّ، أما gz فتعني أنّ المجلَّد المُجمَّع قد ضُغِظ. الأمر التّالي يفكّ ضغك ملفّ باسم images.tar.gz ثمّ يستخرج ما به: tar -xvzf images.tar.gz خيّار x- للدّلالة أنّنا نريد فك ضغط ملفّ وليس ضغطه.خيّار v- لإظهار أسماء ومسارات الملفّات المستخرَجة.خيّار z- لأنّ الملفّ من gzip (امتداد gz.).خيّار f- اسم ومسار الملفّ المضغوط. يجب أن يكون هذا الخيّار هو دائمًا الأخير ضمن خيّارات أمر tar، مباشرةً قبل اسم الملفّ.
  25. الأمر التّالي يطبع لائحة بكلّ أسماء المستخدمين: cut -d: -f1 /etc/passwd يحوي ملفّ etc/passwd/ معلومات أساسيّة حول حسابات المستخدمين، مثل معرّف المستخدم User ID، معرّف المجموعة Group ID، المجلّد الشخصيّ للمستخدم، وغيرها. الملفّ عبارة عن أسطر يحوي كلّ واحد منها سبعة حقول يُفصَل بينها بنقطتيْن عموديّتيْن (:). يمثّل الحقل الأوّل اسم المستخدم. يُستخدم أمر cut لاستخراج جزء من أسطر في ملف نصّي: الخيّار d- يُحدّد الفاصل بين الأعمدة، أي أنّ الأمر عندما يجد نقطتيْن عموديّتيْن سيعتبر ما بعدهما عمودا (حقلًا) جديدًا. الخيّار f- يعني الحقل (العمود) أو الحقول التي نُريد الاحتفاظ بها من الملفّ. يهمّنا هنا الحقل الأوّل، أي اسم المستخدِم. بالنّسبة لإضافة أو حذف مستخدمين أحيل إلى درس كيف تُضيف أو تحذف مستخدمين على خادوم Ubuntu 14.04.
×
×
  • أضف...