المحتوى عن 'تشغيل'.



مزيد من الخيارات

  • ابحث بالكلمات المفتاحية

    أضف وسومًا وافصل بينها بفواصل ","
  • ابحث باسم الكاتب

نوع المُحتوى


التصنيفات

  • التخطيط وسير العمل
  • التمويل
  • فريق العمل
  • دراسة حالات
  • نصائح وإرشادات
  • التعامل مع العملاء
  • التعهيد الخارجي
  • التجارة الإلكترونية
  • مقالات ريادة أعمال عامة

التصنيفات

  • PHP
    • Laravel
    • ووردبريس
  • جافاسكريبت
    • Node.js
    • jQuery
    • AngularJS
    • Cordova
  • HTML5
  • CSS
    • Sass
    • إطار عمل Bootstrap
  • SQL
  • سي شارب #C
    • منصة Xamarin
  • بايثون
    • Flask
    • Django
  • لغة روبي
    • إطار العمل Ruby on Rails
  • لغة Go
  • لغة جافا
  • لغة Kotlin
  • برمجة أندرويد
  • لغة Swift
  • لغة R
  • لغة TypeScript
  • سير العمل
    • Git
  • صناعة الألعاب
    • Unity3D
  • مقالات برمجة عامة

التصنيفات

  • تجربة المستخدم
  • الرسوميات
    • إنكسكيب
    • أدوبي إليستريتور
    • كوريل درو
  • التصميم الجرافيكي
    • أدوبي فوتوشوب
    • أدوبي إن ديزاين
    • جيمب
  • التصميم ثلاثي الأبعاد
    • 3Ds Max
    • Blender
  • مقالات تصميم عامة

التصنيفات

  • خواديم
    • الويب HTTP
    • قواعد البيانات
    • البريد الإلكتروني
    • DNS
    • Samba
  • الحوسبة السّحابية
    • Docker
  • إدارة الإعدادات والنّشر
    • Chef
    • Puppet
    • Ansible
  • لينكس
  • FreeBSD
  • حماية
    • الجدران النارية
    • VPN
    • SSH
  • مقالات DevOps عامة

التصنيفات

  • التسويق بالأداء
    • أدوات تحليل الزوار
  • تهيئة محركات البحث SEO
  • الشبكات الاجتماعية
  • التسويق بالبريد الالكتروني
  • التسويق الضمني
  • استسراع النمو
  • المبيعات

التصنيفات

  • إدارة مالية
  • الإنتاجية
  • تجارب
  • مشاريع جانبية
  • التعامل مع العملاء
  • الحفاظ على الصحة
  • التسويق الذاتي
  • مقالات عمل حر عامة

التصنيفات

  • الإنتاجية وسير العمل
    • مايكروسوفت أوفيس
    • ليبر أوفيس
    • جوجل درايف
    • شيربوينت
    • Evernote
    • Trello
  • تطبيقات الويب
    • ووردبريس
    • ماجنتو
  • أندرويد
  • iOS
  • macOS
  • ويندوز

التصنيفات

  • شهادات سيسكو
    • CCNA
  • شهادات مايكروسوفت
  • شهادات Amazon Web Services
  • شهادات ريدهات
    • RHCSA
  • شهادات CompTIA
  • مقالات عامة

أسئلة وأجوبة

  • الأقسام
    • أسئلة ريادة الأعمال
    • أسئلة العمل الحر
    • أسئلة التسويق والمبيعات
    • أسئلة البرمجة
    • أسئلة التصميم
    • أسئلة DevOps
    • أسئلة البرامج والتطبيقات
    • أسئلة الشهادات المتخصصة

التصنيفات

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

تمّ العثور على 4 نتائج

  1. في الدروس السابقة ألقينا نظرة عامة على تهجير Active Record وكيفية إنشائه كما وتعلمنا أوامر التهجير وسنتابع في هذا الدرس ما بقي من هذه السلسلة التعليمية حول تهجير Active Record. 4 تشغيل التهجير Running Migration Rails توفر مجموعة من مهام bin/rails لتشغيل مجموعة التهجيرات التي تريدها. إن أول مهام التهجير bin/rails التي ستستعملها سيكون غالبًا rails db:migrate. و هذا هو أبسط صور التهجير حيث يقوم بتشغيل دوال change و up لكل التهجيرات التي لم تقم بتشغيلها بعد. و سيقوم بالإغلاق إن لم يُكن لديك تهجيرات من هذا النوع. عدا ذلك سيقوم بتشغيل التهجيرات بالترتيب طبقًا لتوقيته. لاحظ أن تشغيل أمر db:migrate سيقوم بتشغيل الأمر db:schema:dump و هذا سوف يقوم بتحديث ملف db/schema.rb ليوافق تركيب قاعدة بياناتك. إذا قُمت بتحديد نُسخة version معينة، فإن Active Record سيقوم بعمل التهجيرات اللازمة (باستخدام دوال change و up و down) حتى يصل للنسخة المرغوبة. يُعبر عن النسخة باستخدام أرقام توضع في إسم ملف التهجير، فإذا أردت أن تقوم بالتهجير لنُسخة 20080906120000 قُم بتشغيل: $ bin/rails db:migrate VERSION=20080906120000 إذا كانت النُسخة المرغوبة تحمل رقم أعلى من الرقم السابق فإن التهجير سيقوم بتشغيل دوال change أو up. و يقوم بعمل التهجيرات حتى يصل إلى رقم النُسخة المرغوبة. أما إذا كانت النسخة المرغوبة تحمل رقمًا أعلى فإن التهجير سيقوم بتشغيل دالة down حتى تصل إلى رقم النُسخة، لكنه لن يقوم بعمل تهجير لها(لأن ذلك سيؤدي إلى نُسخة أقل من المرغوبة). 4.1 العودة للوراء باستخدام rollback سيتحتم عليك أحيانًا العودة بالتهجير للوراء (لاحظ الفرق بينه و بين العكس). مثال: إذا أردت أن تقوم بتصحيح خطأ قُمت به، فبدلًا من تتبع رقم النُسخة المرتبطة بذلك التهجير، يُمكنك تشغيل هذا الكود: $ bin/rails db:rollback إن أمر rollback سيقوم بعكس دالة change أو تشغيل دالة down. أما إذا أردت أن تعود لأكثر من تهجير يُمكنك تحديد عدد المرات التي ستعمل فيها الدالة rollback عن طريق STEP. مثال: $ bin/rails db:rollback STEP=3 هذا سوف يعكس 3 تهجيرات. إن أمر db:migrate:redo يُعتبر إختصار لأمر rollback و لكنه سيعود بك لنقطة البداية مُجددًا. و يُمكنك تعيين عدد الخطوات به أيضًا باستخدام STEP، مثال: $ bin/rails db:migrate:redo STEP=3 إن دالة db:migrate يُمكنها أي شيئ تقوم به أوامر bin/rails ولكنهم أكثر مُلائمة عندما لا تحتاج لتحديد النُسخة التي تعمل عليها بدقة. 4.2 تهيئة قاعدة البيانات Setup Database أمر rails db:setup سيقوم بصنع قاعدة البيانات و تحميل الإسكيما و تزويدها ببياناتها الأولية. 4.3 إعادة تهيئة قاعدة البيانات Resetting Database لإعادة التهيئة استخدم أمر rails db:reset ثم قُم باستعمال أمر التهيئة من جديد. و هذان الأمران يُمكن استبدالهما بدالة rails db:drop db:setup 4.4 تشغيل تهجيرات محددة Running Specific Migrations إذا كُنت تريد إجراء عملية تهجير محددة سواء للأمام up أو للخلف down. فيُمكنك إستخدام أمر db:migrate:up أو db:migrate:down و لكن سيتوجب عليك تحديد تعيين رقم نُسخة التهجير الذي ترغب بعمله، مثال: $ bin/rails db:migrate:up VERSION=20080906120000 في المثال السابق سيقوم Active Record بالتأكد من وجود هذا التهجير مُسبقًا أم لا. فإن لم يكن موجودًا من قبل فسيقوم بتشغيل دالة change أو دالة up. أما إذا كان موجودًا بالفعل فلن يقوم بشيء. 4.5 تشغيل التهجير في بيئات عمل مختلفة different environments تلقائيًا يتم تشغيل bin/rails db:migrate في بيئة development. ويُمكنك استعمال هذا الأمر RAILS_ENV لتحديد بيئة العمل التي ترغب بعمل التهجير عليها، في الكود التالي سنقوم بعمل التهجيرات على بيئة test: $ bin/rails db:migrate RAILS_ENV=test 4.6 تغيير ناتج (خارج – Output) التهجير إن التهجير تلقائيًا يقوم بإخبارك بالمهام التي يفعلها و الوقت الذي قد يأخذه، فإذا قُمت باستخدام تهجير لصنع جدول أو إضافة قاموس، فإن الناتج سيكون هكذا: == CreateProducts: migrating ================================================= -- create_table(:products) -> 0.0028s == CreateProducts: migrated (0.0028s) ======================================== و هُناك العديد من الدوال المتوفرة داخل ملفات التهجير تساعد بمعرفة هذا الأمر: الدالة غرضها suppress_message يقوم بتحديد جزء من الكود block و يقوم بإخراج رسالة تحتوي على ما بهذا الكود. say يقوم هذا الأمر بحفظ نص رسالة و تقديمها كما هي. و سيقوم مُتغير من نوع Boolean بتحديد ظهور الرسالة من عدمه say_with_time يقوم بتحديد وقت مُعين لظهور الرسالة، و إذا كان الكود المكتوب يُخرج رقم integer فإنه يُعامله على أنه عدد الصفوف المُتأثرة. على سبيل المثال، فإن هذا التهجير: class CreateProducts < ActiveRecord::Migration[5.0] def change suppress_messages do create_table :products do |t| t.string :name t.text :description t.timestamps end end say "Created a table" suppress_messages {add_index :products, :name} say "and an index!", true say_with_time 'Waiting for a while' do sleep 10 250 end end end سوف يُنتج هذه المُخرجات == CreateProducts: migrating ================================================= -- Created a table -> and an index! -- Waiting for a while -> 10.0013s -> 250 rows == CreateProducts: migrated (10.0054s) ======================================= أما إذا أردت من Active Record ألا يُخرج أي شيئ فيُمكنك استخدام أمر rails db:migrate VERBOSE=false 5 تغيير التهجيرات الموجودة مُسبقًا إذا قُمت بارتكاب خطأ ما أثناء كتابتك للتهجير، و قُمت بتشغيل التهجير. فلا يُمكنك تعديل التهجير ثًم تشغيله من جديد. لأن Rails لن تفعل شيئًا عند كتابة الأمر rails eb:migrate لأنك بالفعل قُمت بتشغيله من قبل. لذلك عليك استخدام أمر العودة rollback بكتابة bin/rails db:rollback ثُم تعديل التهجير ثُم تشغيله من جديد. بوجه عام، تعديل التهجيرات السابقة ليس أمرًا جيدًا، لأنه سيتسبب لك بالكثير من العمل، أنت و من يعملون معك على قاعدة البيانات. خصيصًا إن تم تشغيل هذا التهجير على أجهزة السيرفرات بالفعل. فبدلًا من عمل ذلك يُمكنك كتابة تهجير جديد وظيفته هي تغيير الأخطاء أو عمل التعديلات اللازمة. فإن تعديل تهجير مكتوب حديثًا أسهل من تعديل تهجير تم تشغيله على الأجهزة فعلًا. يُمكنك إستخدام أمر العاكس revert الذي تحدثنا عنه هُنا مُسبقًا. 6 إهمال الإسكيما Schema Dumping 6.1 ماهي ملفات الإسكيما؟ إن التهجيرات، ليست هي المُتحكمة بالإسكيما الخاصة بقاعدة بياناتك. إن هذا الأمر (التحكم) يعود إلى ملفات db/schema.rb أو ملف SQL. و تلك الملفات تولد من Active Record عن طريق مُعاينة قاعدة البيانات. وإن تلك الملفات ليست مُصممة ليتم التعديل عليها، بل هي تُظهر و تُمثل حالة قاعدة البيانات. ليس هُناك حاجة لعمل جزئية جديدة بتطبيقٍ ما عن طريق إعادة تشغيل جميع التهجيرات بالتطبيق. فإنه من الأسهل و الأسرع إضافة وصف تلك الجزئية للإسكيما الحالية لقاعدة البيانات. هكذا تكون قاعدة البيانات الإختبارية على سبيل المثال، بحيث يتم إهمال الملفات الحالية لقاعدة البيانات (ملف db/schema.rb و db/structre.sql) و يتم تحميلها إلى قاعدة البيانات الإختبارية test database. إن ملفات الإسكيما مُفيدة أيضًا إذا أردت أن تلقي نظرة سريعة إلى الخصائص التي تحملها كائنات Active Record. حيث أن هذه المعلومات لا توجد في كود نموذج قاعدة البيانات و أحيانًا تكون مُنتشرة بين العديد من التهجيرات، لكن المعلومات تكون جميعها موجود في ملفات الإسكيما بشكل مُنظم. 6.2 أنواع إهمال الإسكيما schema dumps هُناك طريقتين أساسيتين لهجر/إهمال إسكيما ما. هذا يكون موجودًا داخل ملف config/application.rb عن طريق إعداد config.active_record.schema_format، و من المُمكن أن يكون ملف روبي ruby: أو sql: إذا كان من نوع روبي ruby: فإنه سيبدو مثل تهجير كبير، و ستجده داخل db/schema.rb، مثال: ActiveRecord::Schema.define(version: 20080906171750) do create_table "authors", force: true do |t| t.string "name" t.datetime "created_at" t.datetime "updated_at" end create_table "products", force: true do |t| t.string "name" t.text "description" t.datetime "created_at" t.datetime "updated_at" t.string "part_number" end end في كثير من الحالات، يتم صُنع هذه الملفات عن طريق مُعاينة قاعدة البيانات و تركيبها باستعمال الدوال المُستخدمة بصُنعها مثل create_table و add-Index و غيرهم. و لأن هذا أمر يكون مُستقل بقاعدة البيانات، فيُمكن استخدامها على أي قاعدة بيانات يدعمها Active Record. ومن فوائد هذا الأمر، أنه يُمكنك توزيع بيانات تطبيق ما على العديد من قواعد البيانات. من سلبيات ملف الإسكيما db/schema.rb أنه لا يُمكنك التعبير عن جميع مُكونات قاعدة البيانات مثل: المُشغلات/مُنشطات triggers و نقاط التحقق check constraints. بينما في التهجير يُمكنك الإستعانة بسطور SQL. و الإسكيما لا يُمكنها أن تحتوي على تلك السطور. لذلك إن إحتوت قاعدتك بيانات على مثل هذه الخصائص، فيجب عليك تحويل صيغة ملف الإسكيما إلى sql:. بدلًا من إهمال استعمال إسكيما Active Record، فإنه يُمكنك إهمال تركيب/تخطيط قاعدة البيانات بإستخدام أدوات مُعينة مثل (أمر rails db:structre:dump ) في ملف db/structre.sql. على سبيل المثال: في قواعد بيانات من نوع PostgreSQL يُمكنك إستخدام pg_dump. أما في قواعد بيانات MySQL و MariaDB فإن الملف سيظهر لك SHOW CREATE TABLE لمُختلف الجداول التي يحويها هذا الملف. 6.3 إهمال الإسكيما و التحكم بالكود المصدري source control لأن أوامر إهمال الإسكيما هي المُنحكم الرئيسي بالإسكيما الخاصة بقاعدة البيانات. لذلك يُنصح بشدة بأن تتأكد من وجودهم بلوحة تحكم المصدر الخاصة بك. إن ملف db/schema.rb يحتوي على النُسخة الحالية من قاعدة البيانات الخاصة بك. هذا يؤكد حدوث الأخطاء عند دمج العديد منها. و حل هذا الأخطاء يكون يدويًا بإبقاء النُسخة الأعلى من المدمجين. 7 Active Record و التكامل المرجعي referential integrity إن Active Record يدعي أن هُناك آلية ذكية في النماذج الخاصة بقواعد البيانات و ليس بقواعد البيانات نفسها. مثل المميزات triggers و constraints التي تضيف هذه الآلية إلى قاعدة البيانات نفسها, و لكنها ليست مُستخدمة بكثرة. التحقيقات مثل validates:foreign_key و uniqueness: true هي التي تُستخدم عن تكامل البيانات بين قواعد البيانات. فأمر dependent: في القواعد المُتصلة يسمح بتدمير الكائن المورَث عند تدمير الكائن المورِث. هذا لا يُمكن ضمان حدوثه في التكامل المرجعي بوجود تحقيقات المفاتيح الأجنبية في قاعدة البيانات. و مع ذلك فإن Active Record لا يوفر جميع الأدوات التي تعمل مُباشرةً مع هذه المميزات، لذلك فإنه يُمكنك إستخدام أمر excute لتنفيذ أوامر SQL. 8 التهجير و البيانات المرجعية seed data حتى لا ننسى أن الهدف الأساسي من خاصية التهجير و هو عمل أوامر تُعدل على الإسكيما بإستخدام أوامر ثابتة و مُتسقة. إن التهجير أيضًا يُمكن إستعماله لإضافة أو تعديل البيانات، و هذا مُفيد في قواعد البيانات الموجودة مُسبقًا التي لا يُمكن تدميرها و إعادة صُنعها. مثل تلك قاعدة البيانات الخاصة بالإنتاج: class AddInitialProducts < ActiveRecord::Migration[5.0] def up 5.times do |i| Product.create(name: "Product ##{i}", description: "A product.") end end def down Product.delete_all end end لإضاافة بيانات أولية seed data بعد صُنع قاعدة البيانات. إن Rails لديها دالة داخلية built-in تُساعد على تسهيل تلك العملية. خصيصًا عند إعادة تحميل قواعد البيانات بشكل مُتكرر أثناء التطوير و الإختبار. يُمكنك إستخدام تلك الخاصية بكتابة أكواد ruby التي تريدها في ملف db/seeds.rb ثُم تشغيل أمر rails db:seed 5.times do |i| Product.create(name: "Product ##{i}", description: "A product.") End و يُمكنك إستخدام تلك الخاصية لإعداد قاعدة بيانات فارغة من البداية. وبذلك نكون قد أنهينا هذه السلسلة المخصصة لتعلّم تهجير Active Record في إطار العمل روبي أون ريلز. المصدر: توثيقات Ruby on Rails.
  2. عملية تشفير الهاتف الذي يعمل بنظام الأندرويد عملية مهمة لحماية بياناتك من السرقة والاستغلال، ويمكن القيام بهذه العملية على الهواتف التي تحوي نظام الأندرويد الإصدار 2.3 فما فوق، بينما في العديد من الهواتف التي تعمل بالإصدار 5.0 فما فوق يُفترض أن لن تحتاج للقيام بهذه العملية لأنه يُفترض أن تكون مشفّرة تلقائيًّا. وعلى الرغم من أن جوجل قد أعلنت بأن جميع الهواتف التي ستعمل بنظام الأندرويد 5 ستكون مشفّرة تلقائيًّا بشكل أساسي منذ اللحظة الأولى لتشغيل الهاتف، وذلك في معرض إعلانها عن إطلاق نظام الأندرويد 5، إلا أنها تراجعت عن هذه السياسة بعد بضعة شهور، وادّعت الشركة بأن السبب هو أن عددًا من الهواتف التي أنتجتها مجموعة من الشركات المختلفة تتضمن مواصفات منخفضة وغير قادرة على تقديم أداء لائق في وجود التشفير. لكن عددًا من مواقع الإنترنت العالمية المختصة بمتابعة الأمور التقنية للهواتف وأنظمتها أكّدت أن السبب الحقيقي وراء تراجع جوجل عن هذه السياسة هو الأداء الهزيل الذي ظهر عليه هاتف Nexus 6 والذي افتتحت به الشركة نظام الأندرويد 5، حيث كان أداء هذا الهاتف أقل من هاتف Nexus 5 الأقدم، وذلك بسبب وجود التشفير التلقائي الكامل للبيانات، ما أجبر الشركة على التراجع وجعل وجود تقنية التشفير الكامل التلقائي للبيانات اختياريًّا لدى الشركات المنتجة للهواتف التي تعمل بهذا النظام، وذلك بحسب مواصفات كل هاتف. إن خوارزمية التشفير في أنظمة الأندرويد هي (Advanced Encryption Standard (AES بمفتاح 128 بت مبنية على نواة لينكس الأساس لنظام الأندرويد ما يجعل فك تشفير البيانات أمرًا مستبعدًا في الوقت الراهن في ظل السرعات الحالية للحواسيب وذلك لأن عدد العمليات اللازمة لكسر مفتاح بطول 128 بت هو 8 وبجانبه 37 صفرًا ، وهو ما يُطمئن مالكي الهواتف المشفرة بالنسبة لحماية بياناتهم من احتمالية الاستعادة وفك التشفير. يمكن لباقي الشركات المُصنّعة لهواتف الأندرويد أن تستخدم مفتاح تشفير 128 بت أو أعلى. ويقول Dan Schiappa المدير العام في شركة Sophos الأمنية: لم قد ترغب بتشفير هاتفك تعلّمنا في الدرس السابق طرق وأساليب قفل شاشة الهواتف التي تعمل بنظام الأندرويد، ولكن هذه الأساليب غير كافية لحماية البيانات الموجودة على الهاتف بصورة ممتازة، حيث يستطيع أي شخص لديه حاسوب وبعض الإلمام بالبرامج الخاصة بفتح الهواتف المقفلة أن يفتح قفل هذا الهاتف، ولو قام أحدهم بسرقة الهاتف فلن يشكّل قفل الهاتف أي عائق أمامه للوصول إلى كافة البيانات على الهاتف، وقد يحوي الهاتف بيانات مهمّة تتعلّق بالعمل كالحسابات المصرفية وحسابات أرباح الشركة والمراسلات الخاصة مع الشركات والزبائن وغيرها. وحتى إن كان هاتفك شخصيًّا ولا علاقة له بالعمل، فهو بالتأكيد يحوي على بريدك الإلكتروني وصورك الشخصية الخاصة جدًّا، بالإضافة إلى أي بيانات خاصة لا تريدها أن تقع بأيدي أحد حتى وإن كانت مجرّد أرقام هواتف. لذلك فمن الأفضل لك أن تقوم بتشفير الهاتف وهو ما يمنحه الحماية القصوى بحيث لن يتمكن اللص أو أي شخص تمّكن من الحصول على الهاتف بأي طريقة من الحصول على أي بيانات أو معلومات حتى ولو نجح في نسخ جميع محتويات الهاتف على حاسوبه بأي طريقة، فلن يتمكن من الاستفادة منها لأنها مشفّرة ومحمية وبحاجة إلى كلمة المرور الخاصة بك ليتمكّن من فك الشيفرة والحصول على البيانات. أيضًا أمر آخر مهم، فلو كنتَ تريد بيع الهاتف لأي سبب كان، فعليك أن تعلم بأن هناك برامج عديدة على الحاسوب وحتى على الهاتف يمكنها استعادة بياناتك كلّها حتى ولو قمت بإعادة تعيين بيانات المصنع للهاتف أو أدخلت رمز تهيئة الهاتف، فهذا لن يردع تلك البرامج من استعادة ملفاتك وبياناتك بسهولة، لذلك فإن الحل الأفضل في هذه الحالة هو تشفير الهاتف ثم تنفيذ عملية إعادة تعيين بيانات المصنع، وبذلك لن تتمكن تلك البرامج من الحصول على بياناتك، وحتى لو تمكّنت من ذلك فستكون بياناتك مشفّرة ولن يتمكّن مالك الهاتف الجديد من فك الشيفرة والاستفادة منها بأي شكل كان. أمور يجب معرفتها قبل البدء بتشفير الهاتف إن عملية تشفير الهاتف هي عملية باتجاه واحد، أي أنه لن تتمكن من العودة عن هذه العملية إلا بإعادة تعيين بيانات المصنع، وهذا سيتسبب بضياع البيانات على الهاتف ومحوها. إن عملية التشفير ستجعل الهاتف يقوم بفك تشفير البيانات التي ترغب في العمل عليها وإعادة تشفيرها بعد الانتهاء وقفل الهاتف، وهذا ما يتطلب عملًا إضافيًّا من المعالج، ما سيؤدّي إلى زيادة حرارة الهاتف وستلاحظ بعض البطء في أدائه أيضًا، وهذا ينطبق فقط على الهواتف ذات المواصفات الضعيفة بينما لن تشعر بأي تغيير في الهواتف ذات الإمكانات الجيدة. يجب التأكّد من أن البطارية ممتلئة ويُفضّل وصل الهاتف بقابس الشاحن أثناء العملية، لأنها قد تستغرق أكثر من ساعة، وذلك بحسب حجم البيانات على الهاتف. سيتوّجب عليك تحديد قفل الشاشة إمّا بكلمة المرور أو برمز PIN فقط عند اتخاذ قرار التشفير، وفي حال لم تقم بذلك ستظهر لك رسالة أثناء السير بخطوات التشفير تبلغك بضرورة القيام بذلك للمتابعة. إذا كنت قد قمت بعمل روت Root لهاتفك فيجب عليك إزالة الروت مؤقتًا لتشفير الهاتف ثم العودة مجدّدًا وعمل الروت من جديد بعد الانتهاء من عملية التشفير، لأن الروت قد يتسبب بفشل تشفير الهاتف ومحو البيانات التي عليه وقد يتسبب بمشاكل كبيرة في النظام أيضًا. لا يجب أن تتم مقاطعة العملية لأي سبب كان، وإلا فإن البيانات على الهاتف وإلا فإن البيانات على الهاتف قد تتعرض للتلف والضياع. كيفية تشفير الهاتف أولًا يجب أن نفهم بأن قائمة الضبط (الإعدادات) في هواتف الأندرويد تختلف قليلًا من إصدار لآخر وكذلك قد تختلف من نوع هاتف لآخر بحيث قد نجد خيار التشفير في بعض هواتف LG ضمن قائمة التخزين بينما قد نجدها في هواتف Samsung ضمن قائمة الحماية، لذلك يجب البحث قليلًا في هاتفك في حال لم يتطابق مع الصورة المُوّضحة في هذا الدرس. وحتى نتجنب الدخول إلى قائمة التشفير والعودة مجدّدًا بسبب عدم وضع كلمة مرور، قم بمتابعة الدرس السابق وضع كلمة مرور قبل البدء بالعملية. الآن قم الضغط على أيقونة الدخول إلى قائمة التطبيقات في الهاتف. ثم أدخل إلى أيقونة (الضبط) كما في الصورة. ثم أدخل إلى قائمة الحماية. (في بعض الهواتف قد تكون عملية التشفير موجودة ضمن قائمة التخزين). ثم اختر خيار تشفير الهاتف. في بعض الهواتف قد يكون هناك المزيد من الخيارات للتشفير كتشفير الهاتف وبطاقة التخزين معًا أو كلٌّ على حدة، هذا الأمر عائد إليك ولكننا هنا بصدد تشفير الهاتف فقط. ستظهر لك التعليمات العامة الخاصة بالتشفير. وفي حال لم تضع كلمة المرور بعد ستظهر لك رسالة تفيد بوجوب وضعها قبل البدء كما في هذه الصورة. ثم اضغط على خيار تشفير الجهاز ولا تنسَ أن تتأكّد من أن الهاتف مشحون بالكامل وموصول بقابس شحن البطارية. سيقوم الهاتف بإعادة التشغيل والبدء بعملية التشفير، قد تستغرق العملية وقتًا طويلًا. بعد الانتهاء سيقوم الهاتف بإعادة التشغيل مجدّدًا وهذه المرة سيطلب منك كلمة المرور لتتمكن من الدخول إلى الهاتف، وبهذا يكون الهاتف مشفّرًا. الأسئلة الأكثر شيوعا هل يمكن إلغاء ميزة التشفير والعودة إلى وضعية الهاتف بدون تشفير؟ في بعض الهواتف يمكن القيام بالعملية بسهولة من ذات القائمة ضمن ضبط الهاتف بحيث ستجد زر إلغاء التشفير ببساطة ولكن في هواتف أخرى لن تتمكن من إلغاء التشفير إلا بإعادة تعيين بيانات المصنع (ضبط المصنع) وهذا سيؤّدي إلى ضياع البيانات على الهاتف. إلا أن هذه الطريقة لن تنفع مع الهواتف التي تأتي مشفرة تلقائيًّا تشفير بيانات كامل والتي لا تحوي ضمن قوائم إعداداتها على خيار إلغاء التشفير لأن إعادة ضبط المصنع للهاتف ستبقي على وجود التشفير بطبيعة الحال لذلك لا يمكن إلغاء ميزة التشفير بالطرق الرسمية في هذه الحالة ولكن من الممكن القيام بذلك بطرق غير رسمية. هل يمكنني تغيير كلمة المرور أو رمز PIN بعد القيام بعملية التشفير بدون إلغاء تشفير الهاتف؟ نعم من خلال الدخول إلى قائمة قفل الشاشة وتغيير كلمة المرور بعد إدخال الكلمة القديمة أولًا وسيبقى الهاتف مشفرًا. هل يمكنني نقل الملفات بين هاتفي وحاسوبي بعد تشفير الهاتف؟ أم أن البيانات ستكون مشفرة ولن أستطيع الاستفادة منها؟ عندما ستحاول وصل الهاتف بالحاسوب سيكون عليك فتح قفل الهاتف لإتمام عملية الوصل وهذا سيؤدي إلى فك التشفير وبالتالي تستطيع أن تنقل بياناتك من الهاتف للحاسوب بسهولة ولن تكون مشفرة ما هو التشفير الكامل للقرص المستخدم في الأندرويد؟ هو تشفير جميع بيانات المستخدم الموجودة ضمن هاتف الأندرويد باستخدام مفتاح التشفير بناء على dm-crypt المستخدمة في تشفير البيانات المبينة على نواة لينوكس القوية أمنيًّا. ماذا لو نسيت كلمة المرور هل يمكنني استعادتها؟ في حالة التشفير لن تستطيع استعادة كلمة المرور بكل أسف وخصوصًا في الإصدار 5 فما فوق ولن يكون أمامك سوى إعادة الهاتف إلى ضبط المصنع وهذا سيؤدي إلى مسح بيانات الهاتف بالكامل، وقد تعمّدت جوجل ذلك لتأمين الحماية القصوى للبيانات من السرقة، ويبقى عليك تأمين حماية البيانات من الضياع وذلك عبر النسخ المتزامن للبيانات على الحاسوب أو بطاقة ذاكرة خارجية أو عبر أحد مواقع السحب الإلكترونية على الإنترنت ومن أهمّها سحابة جوجل. المصادر Google quietly backs away from encrypting new Lollipop devices by default من موقع ARS Technica Full Disk Encryption من موقع Android Are Android phones more easily hacked than iPhones من موقع USA Today How to disable encryption in Android Lollipop من موقع Android Central
  3. تعرفنا في الدرس الماضي على مفهوم حاويات لينكس (LXC)، مبدأ عملها وكيفية تثبيتها، سنشرع في هذا الدرس إلى كيفية بدء تشغيلها واستعمالها. لا يملك LXC عفريتًا (daemon) يعمل طوال الوقت، لكنه يملك مهام upstart: المهمة ‎/etc/init/lxc-net.conf: هي مهمة اختيارية تعمل فقط إذا حَدَّد الملف ‎/etc/default/lxc الخاصية USE_LXC_BRIDGE (قيمتها هي true افتراضيًا)؛ حيث تهيِّء جسر NAT لكي تستخدمه الحاويات. المهمة ‎/etc/init/lxc.conf: تعمل إذا كانت الخاصية LXC_AUTO (قيمتها true افتراضيًا) مضبوطة إلى true في ‎/etc/default/lxc؛ حيث تبحث عن القيود في المجلد ‎/etc/lxc/auto‎/‎ حيث توجد وصلات رمزية إلى ملفات الضبط للحاويات التي يجب أن تُشغَّل في وقت الإقلاع. المهمة ‎/etc/init/lxc-instance.conf: تُستخدَم من ‎/etc/init/lxc.conf للبدء التلقائي لتشغيل حاوية. التخزين يدعم LXC عدّة أنماط من التخزين لجذر نظام ملفات الحاوية؛ افتراضيًا يكون مجلدًا بسيطًا، لأنه لا يتطلب أي ضبط مسبق للمضيف طالما أن نظام الملفات فيه مساحة تخزينية كافية؛ وهو لا يتطلب أيضًا امتيازات الجذر لإنشاء المخزن، لذلك سيكون ملائمًا للاستخدام دون امتيازات؛ جذر نظام الملفات للاستخدام مع امتيازات موجود افتراضيًا في ‎/var/lib/lxc/C1/rootfs، بينما جذر نظام الملفات للحاويات التي تعمل دون امتيازات يكون في ‎~/.local/share/lxc/C1/rootfs، إذا حُدِّد lxcpath خاص في lxc.system.com، فإن جذر نظام ملفات الحاوية سيكون موجودًا في ‎$lxcpath/C1/rootfs. نسخة snapshot باسم C2 لحاوية C1 التي تُخزَّن في مجلد ستصبح حاوية overlayfs، بجذر نظام ملفات هو overlayfs:/var/lib/lxc/C1/rootfs:/var/lib/lxc/C2/delta0، أنواع التخزين الأخرى تتضمن loop، و btrfs، و LVM، و zfs. حاوية تعتمد على تخزين btrfs تبدو عمومًا مثل حاوية تعتمد على التخزين في مجلد، ويكون جذر نظام الملفات في نفس المكان؛ لكن جذر نظام الملفات يحتوي على حجم فرعي (subvolume)، لذلك تكون نسخة snapshot مُنشَأة باستخدام نسخة snapshot لحجم فرعي. جذر نظام الملفات لحاوية تستخدم LVM يمكن أن يكون أي حجم منطقي منفصل؛ اسم مجموعة الحجوم الافتراضي يمكن أن يُحدَّد في ملف lxc.conf؛ ويُضبَط نوع وحجم نظام الملفات لكل حاوية باستخدام lxc-create. جذر نظام الملفات لحاوية تستخدم zfs هو نظام ملفات zfs منفصل، وموصول في المكان التقليدي ‎/var/lib ‎/lxc/C1/rootfs، يمكن تحديد zfsroot باستخدام lxc-create، ويمكن تحديد قيمة افتراضية في ملف lxc.system.conf. المزيد من المعلومات حول إنشاء الحاويات بمختلف طرائق التخزين يمكن أن توجد في صفحة دليل lxc-create. القوالب يتطلب إنشاء حاوية عادةً إنشاء جذر نظام ملفات للحاوية؛ يفوض الأمر lxc-create هذا العمل إلى القوالب (templates)، التي تكون عادةً خاصة بالتوزيعة؛ قوالب lxc التي تأتي مع lxc يمكن أن توجد في مجلد ‎/usr/share/lxc/templates، بما فيها القوالب لإنشاء أوبنتو، ودبيان، وفيدورا، وأوراكل، وسنتوس، وجنتو بالإضافة لغيرها. إنشاء صور للتوزيعات في أغلب الحالات يتطلب القدرة على إنشاء عقد أجهزة، ويتطلب ذلك أدوات التي ليست متوفرة في بقية التوزيعات، وعادةً يستغرق هذا الأمر وقتًا طويلًا؛ فلذلك يأتي lxc بقالب download، الذي ينزل صور مبنية مسبقًا للحاويات من خادوم lxc مركزي؛ أهم حالة استخدام هي السماح بإنشاء بسيط لحاويات دون امتيازات بواسطة مستخدمين غير الجذر، الذين لن يستطيعوا ببساطة تشغيل الأمر debootstrap. عند تشغيل lxc-create، فجميع الخيارات التي تأتي بعد «--» تُمرَّر إلى القالب؛ ففي الأمر الآتي، تمرر الخيارات ‎--name و ‎--template و ‎--bdev إلى lxc-create، بينما يمرر الخيار ‎--release إلى القالب: lxc-create --template ubuntu --name c1 --bdev loop -- --release trusty يمكنك الحصول على مساعدة حول الخيارات المدعومة في حاوية معينة بتمرير الخيار ‎--help واسم القالب إلى الأمر lxc-create؛ فعلى سبيل المثال، للحصول على مساعدة حول تنزيل قالب: lxc-create --template download --help البدء التلقائي يدعم LXC تعليم الحاويات لكي تُشغَّل عند إقلاع النظام؛ ففي الإصدارات قبل أوبنتو 14.04، كان يتم ذلك باستخدام وصلات رمزية في المجلد ‎/etc/lxc/auto؛ وبدءًا من أوبنتو 14.04، يتم ذلك عبر ملفات ضبط الحاوية؛ القيد: lxc.start.auto = 1 lxc.start.delay = 5 يعني أن على الحاوية البدء عند إقلاع النظام ويجب الانتظار 5 ثواني قبل بدء تشغيل الحاوية التالية؛ يدعم LXC أيضًا ترتيب وتجميع الحاويات، وأيضًا إعادة الإقلاع وإيقاف التشغيل عبر مجموعات autostart؛ راجع صفحات دليل lxc-autostart و lxc-container.conf للمزيد من المعلومات. AppArmor يأتي LXC مع ملف ضبط AppArmor مهمته هي حماية المضيف من الإساءة العرضية للامتيازات داخل الحاوية؛ على سبيل المثال، لن تكون الحاوية قادرةً على الكتابة إلى ‎/proc/sysrq-trigger أو أغلبية ملفات ‎/sys. الملف usr.bin.lxc-start يدخل حيز التنفيذ عند تشغيل lxc-start؛ يمنع ملف الضبط lxc-start من وصل أنظمة ملفات جديدة خارج نظام ملفات الجذر الخاص بالحاوية؛ قبل تنفيذ init للحاوية، فإن LXC يطلب تبديلًا لملف ضبط الحاوية؛ افتراضيًا، هذا الضبط هو السياسة lxc-container-default المعرَّفة في ملف الضبط ‎/etc/apparmor.d/lxc/lxc-default. يمنع هذا الضبط الحاوية من الوصول إلى مسارات خطرة، ومن وصل أغلبية أنظمة الملفات. لا يمكن تقييد البرامج في الحاوية أكثر من ذلك؛ فعلى سبيل المثال، خادوم MySQL الذي يعمل ضمن نطاق الحاوية (مما يحمي المضيف) لا يمكن أن يدخل في نطاق ملف ضبط MySQL (لحماية الحاوية). لا يدخل lxc-execute ضمن سلطة AppArmor، لكن الحاوية التي يُنشِئها (spawn) ستكون مقيدةً. تعديل سياسات الحاوية إذا وجدت أن lxc-start لا يعمل بسبب تقييد في الوصول من سياسة AppArmor، فيمكنك تعطيل ملف ضبط lxc-start بتنفيذ: sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disabled/ هذا سيجعل lxc-start يعمل دون قيود، لكن ستبقى الحدود موجودةً للحاوية نفسها، وإذا أردت إزالة التقييد عن الحاوية، فعليك بالإضافة إلى تعطيل ملف الضبط usr.bin.lxc-start أن تضيف السطر: lxc.aa_profile = unconfined إلى ملف ضبط الحاوية. يأتي LXC مع سياسات بديلة للحاويات، فإذا أردت إنشاء حاويات داخل حاويات (تشعب)، فعليك استخدام ملف الضبط lxc-container-default-with-nasting بإضافة السطر الآتي إلى ملف ضبط الحاوية: lxc.aa_profile = lxc-container-default-with-nesting إذا أردت استخدام libvirt داخل الحاويات، فستحتاج إلى تعديل تلك السياسة (المعرفة في ‎‎/etc/apparmor.d/lxc/lxc-default-with-nasting) وإزالة التعليق عن السطر الآتي: mount fstype=cgroup -> /sys/fs/cgroup/**, ثم أعد تحميل السياسة. لاحظ أن سياسة التشعب للحاويات ذات الامتيازات هي أقل أمانًا من السياسة الافتراضية، حيث تسمح للحاويات بإعادة وصل ‎/sys و ‎/proc في أمكان غير قياسية، مما يتجاوز سياسة AppArmor؛ لا تملك الحاويات دون امتيازات هذا التأثير الجانبي، ﻷن جذر الحاوية لا يمكنه الكتابة إلى ملفات proc و sys المملوكة من الجذر. إذا أردت تشغيل الحاوية بملف ضبط مخصص، فبإمكانك إنشاء ملف ضبط في ‎/etc/apparmor.d/lxc، ويجب أن يبدأ اسمه بالكلمة lxc-‎ لكي يُسمَح لبرنامج lxc-start بالانتقال إليه؛ ملف lxc-default يتضمن إعادة استعمال الملف المجرد ‎/etc/apparmor.d/abstraction/lxc/container-base؛ طريقة سهلة لإنشاء ملف ضبط جديد هي فعل المثل، ثم إضافة الأذونات الإضافية في نهاية السياسة. حَمِّل الضبط الجديد بعد إنشاءه كما يلي: sudo apparmor_parser -r /etc/apparmor.d/lxc-containers سيُحمَّل هذا الضبط تلقائيًا بعد إعادة الإقلاع، ﻷنه يُقرَأ من الملف ‎/etc/apparmor.d/lxc-containers؛ وفي النهاية ولجعل الحاوية CN تستخدم ملف الضبط الجديد lxc-CN-profile، فأضف السطر الآتي إلى ملف الضبط: lxc.aa_profile = lxc-CN-profile مجموعات التحكم إن مجموعات التحكم (cgroups) هي ميزة من ميزات النواة توفر تجميع للمهام تجميعًا هيكليًا، وإسناد وتحديد الموارد لكل مجموعة تحكم؛ تُستخدَم في الحاويات للحد من الوصول إلى الأجهزة الكتلية أو المحرفية (block or character devices) وتجمِّد عمل الحاويات؛ يمكن استعمالها أيضًا لتحديد استخدام الذاكرة وإيقاف الدخل أو الخرج، وضمانة استخدام أصغري للمعالج، والسماح للحاوية بالوصول إلى معالجات محددة. افتراضيًا، سيُسند للحاوية CN ذات امتيازات مجموعةُ تحكمٍ باسم ‎/lxc/CN؛ وفي حال حدوث تضارب بالاسم (الذي قد يحدث عند استخدام lxcpaths مخصصة)، فستُضاف لاحقة «‎-n» حيث n هو رقم صحيح يبدأ من الصفر، ويُسنَد إلى اسم مجموعة التحكم. افتراضيًا، سيُسند للحاوية CN دون امتيازات مجموعة تحكم باسم CN في مجموعة التحكم الخاصة بالمهمة التي بدأت الحاوية، على سبيل المثال ‎/usr/1000.user/1.session/CN سيُمنَح جذر الحاوية ملكية المجموعة للمجلد (لكن ليس جميع الملفات)، وهذا ما سيسمح بإنشاء مجموعات تحكم فرعية. وفي أوبنتو 14.04، يستخدم LXC مدير مجموعات التحكم cgmanager لإدارة مجموعات التحكم؛ يستقبل مدير مجموعات التحكم طلبات D-Bus عبر مقبس يونكس ‎/sys/fs/cgroup/cgmanager/sock؛ يجب أن يُضاف السطر الآتي لاستخدام آمن للحاويات المتشعبة: lxc.mount.auto = cgroup إلى ملف ضبط الحاوية، مما يصل المجلد ‎/sys/fs/cgroup/cgmanager وصلًا ترابطيًا (bind-mounted) إلى الحاوية؛ ويجب على الحاوية في المقابل تشغيل وسيط إدارة مجموعات التحكم (ويتم ذلك افتراضيًا إذا كانت الحزمة cgmanager مثبتةً على الحاوية) الذي سينقل المجلد ‎/sys/fs/cgroup/cgmanager إلى ‎/sys/fs/cgroup‎/cgmanager.lower ثم سيبدأ الاستماع إلى الطلبات للوسيط على مقبسه ‎/sys/fs/cgroup ‎/cgmanager‎/sock؛ سيتأكد مدير مجموعات التحكم في المضيف أن الحاويات المتشعبة لن تستطيع «الهروب» من مجموعات التحكم المُسندَة إليها أو إنشاء طلبات غير مصرح لها بها. الاستنساخ للتزويد السريع بالحاويات، ربما تريد تخصيص حاوية تبعًا لحاجاتك ثم تُنشِئ عدَّة نسِخٍ منها؛ ويمكن فعل ذلك بالبرنامج lxc-clone. الاستنساخ إما أن يكون عبر snapshots أو بنسخ حاوية أخرى؛ فالنسخ هو إنشاء حاوية جديدة منسوخة من الأصلية، وتأخذ مساحة تخزينية مثل الحاوية الأصلية؛ أما snapshot فإنها تستخدم قدرة آلية التخزين على إنشاء snapshots لإنشاء حاوية النسخ-عند-الكتابة (copy-on-write) تُشير إلى الحاوية الأولى؛ يمكن إنشاء snapshots للحاويات المخزنة في btrfs، و LVM، و zfs، وتلك التي تكون مخزنة في مجلدات؛ حيث كل آلية تخزين لها خصوصياتها؛ فمثلًا، حاويات LVM التي ليست thinpool-provisioned لا تدعم إنشاء snapshots من snapshots؛ ولا يمكن حذف حاويات zfs مع snapshots قبل أن تُطلَق (release) جميع snapshots؛ ويجب أن يُخطط جيدًا لحاويات LVM فقد لا يدعم نظام الملفات أن يزيد حجمه. لا يعاني btrfs من تلك السلبيات، لكنه يعاني من أداء fsync منخفض يسبب جعل dpkg و apt-get أبطئ. تُنشَأ snapshots من الحاويات المخزنة في مجلدات عبر نظام الملفات؛ فمثلًا يكون لحاوية ذات امتيازات C1 جذر نظام ملفات في ‎/var/lib/lxc/C1/rootfs، وستبدأ نسخة snapshot للحاوية C1 باسم C2 بجذر نظام الملفات للحاوية C1 موصولًا للقراءة فقط في ‎/var/lib/lxc/C2/delta0؛ كل ما يهم في هذه الحالة أنه لا يفترض أن تعمل أو تحذف الحاوية C1 أثناء عمل C2؛ من المستحسن اعتبار الحاوية C1 هي حاوية أساسية واستخدام نسخة snapshot لها فقط. لنفترض أن لدينا حاوية باسم C1، فيمكن إنشاء نسخة منها باستخدام الأمر: sudo lxc-clone -o C1 -n C2 يمكن إنشاء snapshot باستخدام: sudo lxc-clone -s -o C1 -n C2 راجع صفحة دليل lxc-clone لمزيد من المعلومات. Snapshots LXC يدعم snapshots لتسهيل دعم نسخ snapshot لتطوير تكراري للحاوية؛ فعندما تعمل على حاوية C1 -وقبل إنشاء تغيير خطير وصعب العكس- يمكنك إنشاء snapshot: sudo lxc-snapshot -n C1 التي هي نسخة snapshot باسم «snap0» في مجلد ‎/var/lib/lxcsnaps أو ‎$HOME/.local ‎/share/lxcsnaps، النسخة الثانية ستُسمى «snap1» وهكذا؛ يمكن عرض النسخ الموجودة حاليًا باستخدام الأمر lxc-snapshot -L -n C1، ويمكن أن تُستعاد نسخة snapshot وتمحى حاوية C1 الحالية باستخدام الأمر lxc-snapshot -r snap1 -n C1، وبعد تنفيذ أمر الاستعادة، فستبقى النسخة snap1 موجودةً. تُدعَم snapshots لحاويات btrfs، و lvm، وzfs، و overlayfs؛ إذا استدعي الأمر lxc-snapshot على حاوية تُخزَّن في مجلد، فسيسجل خطأ وستُنشَأ نسخة copy-clone؛ وسبب ذلك أنه لو أنشأ المستخدم نسخة overlayfs snapshot لحاوية تخزن في مجلد، فسينعكس جزء من تغيرات الحاوية الأصلية على نسخة snapshot؛ إذا كنت تريد إنشاء snapshots لحاوية C1 مخزنة في مجلد، فيمكن إنشاء نسخة overlayfs للحاوية C1، ويجب ألّا تلمس C1 بعد ذلك قط، لكن يمكن أن نعدِّل overlayfs وننسخها نسخ snapshots كما نريد، أي: lxc-clone -s -o C1 -n C2 lxc-start -n C2 -d # make some changes lxc-stop -n C2 lxc-snapshot -n C2 lxc-start -n C2 # etc الحاويات العابرة «الحاويات العابرة» (Ephemeral containers) هي حاويات تستخدم لمرة واحدة فقط؛ فليكن لدينا حاوية موجودة مسبقًا باسم C1، فيمكنك إنشاء حاوية عابرة باستخدام: lxc-start-ephemeral -o C1 ستبدأ الحاوية كنسخة snapshot للحاوية C1، وستطبع التعليمات للدخول إلى الحاوية على الطرفية، وستدمر الحاوية العابرة بعد إيقاف التشغيل، راجع صفحة الدليل lxc-start-ephemeral لمزيد من الخيارات. ترجمة -وبتصرف- للمقال Ubuntu Server Guide: LXC.
  4. لا توجد طريقة لفهم وظائف التوجيه أفضل من ضبط موجِّه حقيقي، لذا سنُشغِّل موجِّه سيسكو في هذا الدرس وسنهيئه باستخدام واجهة سطر أوامر نظام تشغيل IOS؛ ثم سنسجِّل دخولنا إلى الموجه لإكمال عملية الضبط، ثم مراقبة العتاد وحالة النظام. الإعداد الابتدائي لموجه سيسكوعملية تهيئة الموجِّهات شبيهة بمثيلتها في المبدِّلات (switches). سيفحص الجهاز نفسه أولًا عبر اختبار POST (اختصار للعبارة power-on self test) للتأكد من عمل العتاد، ثم سيحاول العثور على نسخة نظام التشغيل في عدِّة مسارات، وهو مضبوطٌ لكي يبحث في أماكن بديلة إن لم يعثر على نسخة نظام التشغيل الموجودة في قرص فلاش. وبعد تحميل الضبط إلى ذاكرة الوصول العشوائي (RAM)، فإنه سيُطبِّق التعليمات الواردة في ملف الضبط في NVRAM. وهنالك خياراتٌ بديلةٌ لملفات الضبط ستُستعمَل عند الحاجة. مثالٌ على تلك الخيارات البديلة هو ميزة التثبيت التلقائي (auto install)، التي تسمح للموجه أن يحصل على عنوان IP ديناميكيًا من الشبكة -لأن الموجِّه يُقلِع دون ضبط- ثم يحاول الموجِّه أن يُحمِّل ملفات الضبط من خادم TFTP على الشبكة. وللإكمال معنا في هذا الدرس، يجب أن تتحقق من أنَّ مقبس الطاقة موصولٌ، وأنَّك قادرٌ على الاتصال إلى الموجِّه عبر الطرفيات التي ستسمح لك بمشاهدة الخرج الناتج عن نظام تشغيل IOS أثناء عملية التهيئة. ولا تنسَ أيضًا أن يكون المفتاح الطاقة مُشيرًا إلى وضع التشغيل (on)، فالموجَّهات -على عكس المبدلات- فيها مفتاحٌ خاصٌ بالطاقة. ناتج خرج الإقلاع في موجهإن لم يكن للموجِّه ملفُ ضبطٍ موجود في NVRAM، فالإجراء الاحتياطي هنا هو التثبيت التلقائي (auto install)، وإن فشل الموجِّه في هذه الخطوة، فالبديل هو الدخول إلى وضع الإعداد (setup mode). تظهر في وضع الإعداد أسئلةٌ عن ضبط النظام -كما في المبدِّلات في الطبقة الثانية- التي تُهيّء الضبط المبدئي للموجِّه. لكن نوعية الأسئلة مختلفة هنا لأننا نضبط جهازًا في الطبقة الثالثة. ليس الغرض من وضع الإعداد أن نضبط ميزاتٍ معقدةً للبروتوكولات أو ضبطًا متقدمًا للموجِّه؛ وإنما يُستعمَل لإعداده بالحد الأدنى من الضبط. إن كان للموجِّه ملفُ ضبطٍ صحيحٍ، فسيُرسِلنا إلى واجهة سطر الأوامر (Cisco CLI) في نمط EXEC؛ فافتراضيًا، يرسلنا الموجِّه إلى نمط المستخدم دون امتيازات، ثم بعد ذلك ندخل إلى نمط المستخدم ذي الامتيازات عبر إدخال الأمر enable. Setup: الضبط الابتدائييمكنك استدعاء برمجية الضبط الابتدائي عبر كتابة الأمر setup. سنحتاج إلى أن نكون في نمط الضبط بمستخدمٍ ذي امتيازات (يمكنك معرفة ذلك إذا كان في المِحَث [prompt] إشارة المربع [#]). بعد ذلك ستَدخل إلى مربع حوار ضبط الإعداد، الذي سيسألك الموافقة إذا كنت تريد ضبط الجهاز، ثم سيسألك إن كنت تريد الذهاب إلى ضبط الإدارة الأساسي (basic management setup). إذا ضغطت على No في مربع الحوار السابق الذي يسألك الدخول إلى ضبط الإدارة الأساسي، فستدخل إلى الضبط الموسَّع (extended setup) الذي يتيح لك ضبط خيارات متخصصة بالنظام. إذ أنَّ الضبط الأساسي سيسألك عدِّة أسئلة لضبط اسم المضيف، وكلمات المرور، وبعض المتغيرات الأساسية في ضبط البطاقات (interfaces)، وغيرها من الخيارات. تذكر أنَّ الضبط الافتراضي سيوضع ضمن أقواسٍ مربَّعة (أي «[]») ويمكنك ببساطة الضغط على Enter لقبول الضبط الافتراضي. تجميعة مفاتيح أخرى مهمة هي Ctrl+C التي تتيح لك إنهاء العملية الحالية لتبدأ من جديدٍ في أيّ وقت. فعند الضغط على Ctrl+C، ستعود إلى نمط EXEC بمستخدمٍ ذي امتيازات ويمكنك إكمال ضبط الموجِّه من هناك. ملخص ضبط البطاقاتإذا ضغط على Yes في مربع الحوار الذي يسألك عن الدخول إلى ضبط الإدارة الأساسية، فستُسأل سؤالًا آخر إذا ما كنت تريد رؤية ملخص ضبط البطاقات الحالي؛ إذا ضغطت على Yes، فسترى شيئًا شبيهًا بما يلي، حيث تُعرَض قائمة بالبطاقات مع حالتها في الطبقتين الأولى والثانية. فمثلًا، تملك بعض البطاقات عنوان IP. والناتج المعروض هنا هو ناتج الأمر sh ip int brie: Interface IP-Address OK? Method Status Protocol BRI0 unassigned YES NVRAM administratively down down BRI0:1 unassigned YES unset administratively down down BRI0:2 unassigned YES unset administratively down down FastEthernet0 192.168.0.65 YES NVRAM up up FastEthernet1 unassigned YES NVRAM administratively down down FastEthernet2 unassigned YES unset down down FastEthernet3 unassigned YES unset down down FastEthernet4 unassigned YES unset up down FastEthernet5 unassigned YES unset up down FastEthernet6 unassigned YES unset up up FastEthernet7 unassigned YES unset up up FastEthernet8 unassigned YES unset up up FastEthernet9 unassigned YES unset down down NVI0 192.168.0.65 YES unset up up Tunnel1 10.10.1.65 YES NVRAM up up Tunnel2 10.10.2.65 YES NVRAM up up Vlan1 192.168.65.192 YES NVRAM up upميزة Cisco AutoSecureقد تجد من ضمن الأسئلة التي ستُسأل عنها أسئلةً متعلقةً بتفعيل AutoSecure، التي هي ميزةٌ أمنيةٌ متوفرة في نسخٍ معيّنة من نظام التشغيل، تسمح لك بتقليل تعقيد تأمين الموجه ومعرفة الأوامر اللازمة لذلك، عبر إنشاء هذا الأمر الذي يؤتمت عملية ضبط تلك المزايا الأمنية؛ أي أنَّ تلك الميزة مكان جامعٌ لتأمين موجِّهك وتحسين السياسات الأمنية الحالية. وبالإجابة بنعم (yes) على السؤال المتعلق بتفعيل AutoSecure، فإنك ستُفعِّل AutoSecure، الذي يعني تنفيذ الأمر auto secure وبه تبدأ عملية تأمين الموجِّه. وتلك الأداة صارمةٌ جدًا وستحاول ضمان أكبر قدر من الحماية عن طريق (على سبيل المثال) تعطيل الخدمات العامة، وتعطيل الخدمات التي تعمل على مستوى البطاقة (interface)، وتفعيل أشياء مثل تشفير كلمات المرور، والتسجيل (logging)، والتحقق من أنَّ وجود كلمات مرور لموجِّهك، والتأكد من أنَّ SSH مضبوطٌ ضبطًا صحيحًا؛ وتُعطَّل أيضًا ميزة الإدارة عبر SNMP إن لم تكن مستخدمة. وتحاول تطبيق ميزات متعلقة بمكافحة التنصت واعتراض اتصالات TCP (أي TCP intercept) ومهلة فقدان اتصالات TCP. إنها أداةٌ شاملة، وعليك تفعيلها إذا كنت تعرف تمامًا ما هي تبعات ذلك. مراجعة سكربت الإعداد واستخدامهوبشكلٍ شبيهٍ بمربعات حوار الضبط في المبدِّلات، تنتهي هذه العملية بإظهار الموجِّه للسكربت التي أُنشِئ اعتمادًا على أجوبتك، متبوعًا بقرارك إن كنت تريد تريد العودة إلى المِحث دون الحفظ، أو بالعودة إلى أول الأسئلة مُعيدًا الضبط مرةً أخرى، أو حفظ الضبط والعودة إلى المِحَث. تسجيل الدخول إلى موجه سيسكوبعد إنهاء الضبط كما في الخطوة السابقة، يمكنك العودة إلى المِحَث وإعادة ضبط الموجِّه، أو إجراء المزيد من الضبط. الموجِّه هو جهاز يعمل بنظام IOS، أي أنه شبيه بالمبدِّلات في كونه يحتوي على نمط EXEC، الذي فيه نمطين فرعيين: نمط المستخدم دون امتيازات، ونمط المستخدم ذو الامتيازات. يمكنك الانتقال من نمط المستخدم العادي إلى نمط المستخدم ذي الامتيازات عبر استعمال الأمر enable. ويمكنك الخروج من نمط المستخدم ذي الامتيازات عبر الأمر disable، أو تسجيل الخروج كليًا بالأمر logout، والأمر exit يفعل المِثَل أيضًا. لاحظ أيضًا -وبما يشابه المبدلات- أنَّه يمكنك معرفة نمط المستخدم العادي من إشارة «أكبر من» (<) في المِحَث، بينما نمط المستخدم ذو الامتيازات يُعرَف بإشارة المربع (#). Router> Router> enable Password: Router#قائمة بالأوامر التي يمكن تنفيذها على الموجهات بنمط المستخدم العادييمكنك استعمال إشارة الاستفهام (?) بجميع مستويات الامتيازات وبجميع أنماط الضبط لعرض قائمة بالأوامر التي يمكنك استعمالها في ذاك النمط؛ لاحظ أنك تستطيع التمرير إلى الأسفل لوجود الكلمة «More»، يمكنك الضغط على زر المسافة للتمرير صفحةً بصفحة، أو الضغط على زر Enter (أو Return في بعض لوحات المفاتيح) للتمرير سطرًا بسطر، أو بإمكانك استعمال الزر Q للخروج، أو عبر التجميعة Ctrl+C. Router>? Exec commands: <1-99> Session number to resume access-enable Create a temporary Access-List entry access-profile Apply user-profile to interface clear Reset functions connect Open a terminal connection crypto Encryption related commands. disable Turn off privileged commands disconnect Disconnect an existing network connection dot11 IEEE 802.11 commands emm Run a configured Menu System enable Turn on privileged commands exit Exit from the EXEC --More--تختلف قائمة الأوامر بناءً على نسخة وميزات نظام التشغيل، وستختلف تبعًا لامتيازات الوصول وأنماط الضبط؛ فمثلًا، هنالك قائمةٌ محدودةٌ من الأوامر التي تستطيع تنفيذها في نمط المستخدم دون امتيازات تسمح لك بمراقبة عمل الموجِّه، بينما يمكنك في نمط المستخدم ذي الامتيازات أن تدخل إلى مختلف مستويات الضبط وتنفِّذ أوامر تتعلق بالصيانة. قائمة بالأوامر التي يمكن تنفيذها على الموجهات بنمط المستخدم ذي الامتيازاتهذه قائمة مبسطة وجزئية بالأوامر المتوفرة في نمط المستخدم ذي الامتيازات الظاهرة بكتابة علامة استفهام في المحث؛ لاحظ أنَّ الأمر configure متوفرٌ في القائمة، وهو يسمح لك بالذهاب إلى نمط الضبط؛ وأيضًا الأمر copy، الذي يسمح بنسخ صور نظام التشغيل أو ملفات التشغيل من وإلى الموجِّه؛ وهنالك الأمر erase لمسح الصور من نظام الملفات. Router#? Exec commands: <1-99> Session number to resume access-enable Create a temporary Access-List entry access-profile Apply user-profile to interface access-template Create a temporary Access-List entry archive manage archive files auto Exec level Automation beep Blocks Extensible Exchange Protocol commands bfe For manual emergency modes setting calendar Manage the hardware calendar cd Change current directory clear Reset functions clock Manage the system clock cns CNS agents configure Enter configuration mode connect Open a terminal connection copy Copy from one file to another crypto Encryption related commands. debug Debugging functions (see also 'undebug') delete Delete a file dir List files on a filesystem disable Turn off privileged commands disconnect Disconnect an existing network connection --More--أمر إظهار نسخة نظام التشغيلنحن الآن جاهزون لنخطي خطوةً إلى ضبط وإدارة الموجِّهات الخاصة بنا؛ ربما أحد أهم الأوامر من حيث إظهار إمكانيات الجهاز هو الأمر show version؛ وهو شبيه بالأمر الخاص بمبدلات الطبقة الثانية؛ حيث يُظهِر النسخة الحالية من نظام التشغيل ويعرض قائمة بالميزات، ويُظهِر نظام التشغيل الموجود في ذاكرة ROM الذي يُستخدم كنظام بديل إن لم يكن النظام الرئيسي متوفرًا. ويُعرَض أيضًا زمن تشغيل الموجِّه (uptime)، وكذلك المواصفات الفيزيائية بما في ذلك مقدار ذاكرة RAM، والبطاقات الفيزيائية (physical interfaces) في الموجِّه، ومقدار ذاكرة NVRAM، وذاكرة فلاش، وقيمة المُعامل «Configuration register». Router#sh ver Cisco IOS Software, C181X Software (C181X-ADVENTERPRISEK9-M), Version 12.4(24)T6, RELEASE SOFTWARE (fc2) Technical Support: http://www.cisco.com/techsupport Copyright (c) 1986-2011 by Cisco Systems, Inc. Compiled Tue 23-Aug-11 05:42 by prod_rel_team ROM: System Bootstrap, Version 12.3(8r)YH12, RELEASE SOFTWARE (fc1) Router uptime is 1 day, 2 hours, 38 minutes System returned to ROM by Reload Command System restarted at 17:27:50 EET Wed Nov 28 2012 System image file is "flash:c181x-adventerprisek9-mz.124-24.T6.bin" This product contains cryptographic features and is subject to United States and local country laws governing import, export, transfer and use. Delivery of Cisco cryptographic products does not imply third-party authority to import, export, distribute or use encryption. Importers, exporters, distributors and users are responsible for compliance with U.S. and local country laws. By using this product you agree to comply with applicable laws and regulations. If you are unable to comply with U.S. and local laws, return this product immediately. A summary of U.S. laws governing Cisco cryptographic products may be found at: http://www.cisco.com/wwl/export/crypto/tool/stqrg.html If you require further assistance please contact us by sending email to export@cisco.com. Cisco 1812 (MPC8500) processor (revision 0x400) with 236544K/25600K bytes of memory. Processor board ID XXXXXXXXXXX, with hardware revision 0000 10 FastEthernet interfaces 1 ISDN Basic Rate interface 62720K bytes of ATA CompactFlash (Read/Write) Configuration register is 0x2102التحقق من الضبط الأساسي للموجهللتحقق من الضبط المبدئي للموجِّه، فعادةً ما تُستعمَل أوامرٌ مثل show running، الذي يعرض كل الضبط الحالي، ثم يمكنك البحث عن القطع التي تريد التحقق منها؛ قد يكون هذا أمرًا مرهقًا وغير فعال، لذلك يمكنك إظهار أقسام معيّنة من الضبط الحالي. Router#sh run Building configuration... Current configuration : 3807 bytes ! ! Last configuration change at 19:41:49 EET Thu Nov 29 2012 by admin ! NVRAM config last updated at 19:43:50 EET Thu Nov 29 2012 by admin ! version 12.4 service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption ! hostname Router ! boot-start-marker boot-end-marker ! logging message-counter syslog logging buffered 65535 enable secret 5 $1$kqJ2$BwXEBY.OC1Fzj4QvofZXx/ ! no aaa new-model clock timezone EET 2 ! ! dot11 syslog ip source-route ! ! ip cef no ip domain lookup ip domain name cisco.com ip name-server 172.16.4.10 no ipv6 cef ! multilink bundle-name authenticated ! ! --More--فيمكنك مثلًا استعمال الكلمة المفتاحية ‏(interface) لعرض الضبط المتعلق ببطاقة معيّنة فقط. Router#sh run int fa 0 Building configuration... Current configuration : 186 bytes ! interface FastEthernet0 description ### Sales Dept. ### ip address 192.168.0.1 255.255.255.0 duplex auto speed auto endيمكنك أيضًا استخدام show run | in options مما يعرض الأسطر التي تحتوي كلمةً مُحدَّدة مثل «password»؛ وبهذا، نرى أنَّه لم تُضبَط أيّة كلمات مرور؛ والسطر الوحيد الذي تم إظهاره والذي يحتوي الكلمة «password» هو سطر service password-encryption. Router#sh run | in password service password-encryptionيمكنك أيضًا استعمال الأمر show running | section لعرض أقسامٍ كاملة؛ على سبيل المثال قسم line، الذي يعرض الأقسام التي تتعلق بالطرفيات أو VTYs ...إلخ. يمكنك أيضًا استعمال b ‏(begin) مما يُظهِر الضبط الذي يبدأ بكلمة مفتاحية معيّنة. فسيعرض الأمر الآتي الضبط الذي يبدأ بالكلمة line وكل شيء يقع تحته. Router#sh run | b line line con 0 line aux 0 line vty 0 4 exec-timeout 0 0 privilege level 0 login local transport preferred ssh transport input ssh transport output all ! ntp server 172.16.4.10 endيمكنك تطبيق ما سبق على بقية الأوامر؛ على سبيل المثال، الأمر show ip int brie سيعرض كل البطاقات وحالتها وعناوين IP المُسنَدة إليها؛ لكنك يمكننا استعمال الأنبوب (pipe) لعرض البطاقات التي لم يُسنَد إليها عنوان IP بالبحث عن الأسطر التي تحتوي على الكلمة المفتاحية unassigned. Router#sh ip int brie | in unassigned BRI0 unassigned YES NVRAM administratively down down BRI0:1 unassigned YES unset administratively down down BRI0:2 unassigned YES unset administratively down down FastEthernet1 unassigned YES NVRAM administratively down down FastEthernet2 unassigned YES unset down down FastEthernet3 unassigned YES unset down down FastEthernet4 unassigned YES unset up down FastEthernet5 unassigned YES unset up down FastEthernet6 unassigned YES unset up up FastEthernet7 unassigned YES unset up up FastEthernet8 unassigned YES unset up up FastEthernet9 unassigned YES unset down downوكما ترى، البطاقة Fa0 ليست في القائمة، وكذلك Vlan1، التي تملك عنوان IP. ترجمة -وبتصرّف- للمقال Starting a Router.