Configuration File
ملف CFG (ملف الإعدادات) هو ملف نصي يحفظ إعدادات التطبيقات والألعاب والأنظمة. لا يوجد معيار واحد لصيغة CFG — نفس الامتداد تستخدمه مئات التطبيقات بقواعد بنية مختلفة تماماً. صفحة مرجعية فقط في FileDex.
تحويل ملفات CFG غير متاح — CFG اصطلاح تسمية وليس صيغة واحدة. استخدم محرر نصوص لقراءة ملفات الإعدادات وتعديلها مباشرة.
أسئلة شائعة
ما هو ملف CFG وكيف أفتحه؟
ملف CFG (ملف الإعدادات) هو ملف نصي يحفظ إعدادات التطبيقات والألعاب والأنظمة. لا يوجد معيار واحد لصيغة CFG — نفس الامتداد تستخدمه مئات التطبيقات بقواعد بنية مختلفة. افتحه بأي محرر نصوص: Notepad على Windows أو TextEdit على macOS أو VS Code على أي نظام. المحتوى دائماً نص قابل للقراءة.
كيف أعدّل ملف autoexec.cfg في Counter-Strike 2؟
افتح ملف autoexec.cfg بمحرر نصوص من مجلد cfg داخل مجلد اللعبة في Steam. كل سطر أمر طرفي مستقل — مثلاً sensitivity "1.6" لحساسية الماوس أو bind "mwheeldown" "+jump" لربط عجلة الماوس بالقفز. احفظ الملف وأعد تشغيل اللعبة. إذا لم تعمل التغييرات، تأكد أنك تُعدّل النسخة الصحيحة في المجلد الذي يقرأه Steam.
ما الفرق بين ملف CFG وملف INI؟
كثير من ملفات CFG تستخدم صيغة INI — أقسام [Section] مع أزواج key=value — لكن CFG أوسع. ملفات Source Engine في الألعاب تحتوي أوامر طرفية وليست أزواج key=value. ملفات Cisco IOS تستخدم بنية هرمية. ملفات Kconfig في نواة Linux تستخدم صيغة CONFIG_OPTION=y. امتداد .ini يُشير تحديداً لاتفاقية الأقسام والمفاتيح بينما .cfg لا يضمن أي بنية معينة.
هل ملفات CFG آمنة للتحميل من الإنترنت؟
ملفات CFG نص صريح ولا تستطيع تنفيذ شيفرات برمجية بذاتها. الخطر يعتمد على التطبيق: ملفات Source Engine تُنفَّذ كأوامر طرفية عند تحميلها في اللعبة — ملف autoexec.cfg محمّل قد يُعيد ربط المفاتيح أو يُغيّر الإعدادات. افحص أي ملف CFG محمّل في محرر نصوص قبل استخدامه.
لماذا حلّ TOML محل ملفات CFG في المشاريع الحديثة؟
ملفات CFG/INI تفتقر لمواصفات رسمية ونظام أنواع — كل القيم نص خام. TOML أنشأه Tom Preston-Werner عام 2013 بمواصفات مُحددة تدعم أعداداً صحيحة وتواريخ ومنطقية وجداول متداخلة مع مجموعة اختبارات. Python استبدلت setup.cfg بـ pyproject.toml ولغة Rust تبنّت Cargo.toml منذ إصدارها الأول.
كيف أحمي كلمات المرور في ملفات CFG؟
لا تحفظ كلمات المرور أو مفاتيح API في ملفات CFG كنص صريح. استخدم متغيرات البيئة (environment variables) أو مدير أسرار مثل HashiCorp Vault أو AWS Secrets Manager. إن كان لا بد من استخدام ملف CFG، أضفه إلى ملف .gitignore لمنع إيداعه في المستودع بالخطأ. إيداع واحد بالخطأ يكشف بيانات الاعتماد في تاريخ Git بشكل دائم.
لماذا لا تعمل التغييرات التي أجريتها على ملف CFG؟
أغلب التطبيقات تقرأ ملفات CFG عند بدء التشغيل فقط — أعد تشغيل التطبيق بعد الحفظ. بعض الألعاب تُعيد كتابة ملف CFG عند الخروج فتمسح تعديلاتك — عدّل الملف واللعبة مغلقة واجعله للقراءة فقط (read-only) إن استمرت المشكلة. تأكد أيضاً أنك تُعدّل النسخة الصحيحة من الملف في المجلد الذي يقرأه التطبيق.
ما يميز .CFG
امتداد CFG. هو على الأرجح أكثر امتداد ملفات غموضاً في عالم الحوسبة. مئات التطبيقات تستخدمه دون أي اتفاق على المحتوى الداخلي. ملف database.cfg بصيغة INI (مفتاح-قيمة) لا يشبه ملف autoexec.cfg في Counter-Strike 2 الذي يحتوي أوامر طرفية، ولا يشبه ملف إعدادات موجّه Cisco IOS الذي يعتمد على مستويات المسافة البادئة.
اكتشف التفاصيل التقنية
لم تنشر أي جهة معايير مواصفات لصيغة CFG. لا يوجد نوع MIME مسجّل في IANA سوى text/plain. لا يوجد توقيع PRONOM لأنه لا توجد بايتات تعريفية يمكن مطابقتها. السياق — المجلد الذي يحتوي الملف والتطبيق الذي أنشأه — هو الطريقة الوحيدة الموثوقة لفهم محتوى ملف CFG.
خمس عائلات بنية مختلفة بامتداد واحد
صيغة INI تستخدم رؤوس [Section] مع أزواج key=value في كل سطر. التعليقات تبدأ بـ # أو ;. هذه الصيغة يقرأها مكتبة configparser في Python. ملفات MySQL وPHP وGit تتبع هذا النمط.
[database]
host = localhost
port = 3306
password = secret
محرك Source من Valve يعامل ملفات CFG. كنصوص أوامر طرفية تُنفَّذ سطراً بسطر. الأمر bind يربط مفتاحاً بفعل، وexec يُحمّل ملف CFG. آخر. ألعاب Counter-Strike 2 وHalf-Life 2 وPortal وDota 2 تستخدم هذه الصيغة.
// autoexec.cfg — إعدادات CS2 مخصصة
cl_interp_ratio "2"
rate "786432"
bind "mwheeldown" "+jump"
محرك Quake يستخدم أوامر seta وset لتعيين متغيرات وحدة التحكم. شركة id Software أسّست هذا التقليد عام 1996 مع لعبة Quake الأصلية.
Cisco IOS يستخدم بنية هرمية تعتمد على المسافة البادئة. أمر interface GigabitEthernet0/1 يُتبع بأوامر فرعية بمسافة بادئة تنطبق على هذا المنفذ.
Kconfig يستخدم صيغة CONFIG_OPTION=y في نظام بناء نواة Linux وBuildroot.
ثقافة autoexec.cfg في عالم الألعاب
كل لاعب Counter-Strike جاد يملك ملف autoexec.cfg شخصياً — ملف أوامر طرفية يُنفَّذ تلقائياً عند بدء اللعبة. يحتوي إعدادات معدّل البيانات الشبكي وحساسية الماوس ونقطة التصويب وربط المفاتيح.
هذه العادة بدأت مع Quake عام 1996 عندما اكتشف اللاعبون أن تعديل config.cfg يمنحهم تحكماً في إعدادات غير متاحة من قوائم اللعبة. بحلول Counter-Strike 1.6 أصبحت مشاركة ملفات autoexec.cfg ممارسة معتادة في مجتمعات اللاعبين المحترفين. لاعبو CS2 المحترفون ينشرون إعداداتهم، والمتابعون يقلّدونها ويعدّلونها.
في منطقة الخليج العربي — حيث CS2 من أشهر الألعاب التنافسية في السعودية والإمارات — يتداول اللاعبون ملفات autoexec.cfg عبر Discord وتويتر. الإعدادات الأكثر أهمية للاعبين في المنطقة:
rate "786432"— عرض النطاق الشبكي بالبايت في الثانيةcl_interp_ratio "1"— نسبة التقحيم لدقة إصابة الهدفsensitivity "1.6"— حساسية الماوسbind "mwheeldown" "+jump"— ربط عجلة الماوس بالقفز
محرك Source يقرأ config.cfg للإعدادات الافتراضية ثم يُنفّذ autoexec.cfg الذي يتجاوز أي إعداد سابق. هذه البنية ثنائية الملفات تسمح بإعادة الإعدادات الافتراضية بحذف autoexec.cfg دون فقدان إعدادات اللعبة الداخلية.
لماذا لا يوجد معيار
ملفات CFG سبقت عصر المواصفات الرسمية لصيغ الملفات. عندما احتاج مطوّرو Unix في أوائل الثمانينيات لحفظ إعدادات التطبيقات، كتبوا محلل نصوص بسيط وحفظوا المخرجات كملف .cfg. لم يكن هناك تنسيق بين التطبيقات. Microsoft فعلت الشيء ذاته مع ملفات INI. لنظام Windows 1.0 عام 1985.
غياب المعيار يستمر لأنه لا يوجد ضغط للتوحيد. كل تطبيق يملك محلل CFG الخاص به. محركات الألعاب تُعرّف قواعد أوامرها الخاصة. معدّات الشبكات تُعرّف لغة إعدادات خاصة بالشركة المصنّعة.
من INI إلى TOML: مسار التطوّر
صيغة INI من Microsoft (1985) كانت أول اتفاقية واسعة الانتشار لملفات الإعدادات. قدّمت أقسام [Section] وأزواج key=value لكنها لم تُحدَّد رسمياً.
JSON (معيار RFC 8259) قدّم إعدادات قابلة للتحليل الآلي لكن بنيته عدائية للتحرير اليدوي — فاصلة مفقودة واحدة تُعطّل الملف بالكامل ولا يدعم التعليقات.
TOML (2013، أنشأه Tom Preston-Werner مؤسس GitHub المشارك) صُمّم تحديداً لاستبدال ملفات CFG/INI. يوفر قيماً مُنمّطة (أعداد صحيحة وتواريخ ومنطقية) وجداول متداخلة ومواصفات رسمية مع مجموعة اختبارات. Python استبدلت setup.cfg بـ pyproject.toml. لغة Rust تبنّت Cargo.toml منذ إصدارها الأول.
الخطر الأمني: كلمات المرور بالنص الصريح
ملفات CFG هي مصدر متكرر لتسريب بيانات الاعتماد. كلمات مرور قواعد البيانات ومفاتيح API وبيانات SMTP تُحفظ كنص صريح في أزواج key=value:
[smtp]
password = P@ssw0rd123
عند إيداع هذه الملفات في مستودع Git بالخطأ، تصبح بيانات الاعتماد جزءاً من تاريخ المستودع بشكل دائم حتى بعد حذف الملف. الحل: استخدام متغيرات البيئة أو مدير أسرار بدلاً من حفظ كلمات المرور في ملفات CFG.
ملفات إعدادات Cisco IOS تحمل خطراً مميزاً — تحتوي عناوين IP لجميع المنافذ وسلاسل SNMP ومفاتيح VPN المشتركة مسبقاً. نسخة احتياطية واحدة مكشوفة تُعرّض البنية التحتية الكاملة للشبكة.
السلوك حسب نظام التشغيل
Windows تاريخياً يربط ملفات CFG. بالتطبيق المُنشئ. النقر المزدوج قد يفتح التطبيق بدلاً من محرر النصوص. سجل Windows (Registry) حلّ محل ملفات CFG/INI لإعدادات النظام منذ Windows 95 لكن ملفات الإعدادات على مستوى التطبيقات لا تزال موجودة.
macOS وLinux يعاملان ملفات CFG كنص عادي. أداة file تُعرّفها كـ text/plain بناءً على تحليل المحتوى لأنه لا توجد بايتات سحرية.
منصات توزيع الألعاب (Steam) تحفظ ملفات CFG في مجلدات خاصة. على Windows عادةً في مسار C:\Program Files (x86)\Steam\steamapps\common\<game>\cfg\. تعديل النسخة الخاطئة سبب شائع لشكوى "التغييرات لا تعمل".
مقارنة .CFG مع البدائل
| المقارنة | المعيار | الفائز |
|---|---|---|
| .CFG vs .INI | وضع المواصفات لا يملك أيٌّ منهما مواصفات رسمية. INI له اتفاقية ضمنية أضيق ([أقسام] مع key=value). CFG يشمل خمس عائلات بنية غير متوافقة بما فيها أوامر Source Engine وهرمية Cisco IOS وKconfig. | تعادل |
| .CFG vs .TOML | أمان الأنواع TOML v1.0.0 (مارس 2021) يُعرّف أعداداً صحيحة وعشرية ومنطقية وتواريخ ونصوصاً ومصفوفات وجداول متداخلة مع قواعد نحوية رسمية. CFG بصيغة INI يعامل كل القيم كنص خام بلا نظام أنواع. | TOML أفضل |
| .CFG vs .YAML | سهولة التحرير اليدوي صيغة key=value في CFG لا تتطلب معرفة بقواعد المسافات البادئة أو الأحرف الخاصة. المسافات البادئة الدلالية في YAML وفواصل النقطتين والتنميط الضمني (النص 'no' يتحول إلى false) تسبب أخطاء تحرير متكررة. | CFG أفضل |
| .CFG vs .JSON | دعم التعليقات JSON (RFC 8259) يمنع التعليقات صراحةً. ملفات CFG تدعم التعليقات عالمياً عبر # أو ; أو // أو ! حسب المتغيّر. ملفات الإعدادات التي يُحررها البشر تحتاج تعليقات. | CFG أفضل |
| .CFG vs .YAML | اتساق المحللات YAML يملك مواصفات رسمية (yaml.org/spec/1.2.2) ومجموعة اختبارات توافق. CFG لا يملك مواصفات، فالمحللات تختلف حسب التطبيق. محللات YAML عبر اللغات تُنتج مخرجات متطابقة لنفس المدخل. | YAML أفضل |
المرجع التقني
- نوع MIME
text/plain- المطوّر
- Various
- سنة التقديم
- 1980
- معيار مفتوح
- لا
البنية الثنائية
ملفات CFG نص صريح بلا بنية ثنائية ولا بايتات سحرية ولا ترويسة ملف. الصيغة الداخلية تعتمد كلياً على التطبيق المستهلك. النمط الأكثر شيوعاً هو أزواج key=value مفصولة بأسطر جديدة ومُجمّعة اختيارياً تحت رؤوس [Section] بصيغة INI. ملفات Source Engine تحتوي أوامر طرفية بسطر لكل أمر. ملفات Cisco IOS تستخدم بنية هرمية تعتمد على المسافة البادئة. جميع المتغيّرات موجّهة سطرياً — المحللات تعالج ملفات CFG سطراً بسطر.
نقاط الضعف
- بيانات اعتماد بالنص الصريح — ملفات CFG تحفظ كلمات مرور قواعد البيانات ومفاتيح API وبيانات SMTP كأزواج key=value غير مشفّرة. إيداعات Git بالخطأ تكشفها بشكل دائم في تاريخ المستودع
- حقن الإعدادات — التطبيقات التي تُقحم قيم CFG في أوامر أو استعلامات SQL بدون تعقيم قد تتعرض لهجمات حقن عبر قيم إعدادات مصنوعة
- اجتياز المسار عبر القيم — ملف CFG بقيمة مثل output_dir=../../etc/passwd قد يُجبر التطبيق على القراءة أو الكتابة خارج مجلده المقصود
- سلسلة exec في Source Engine — ملف .cfg محمّل يحتوي 'exec malicious.cfg' يجعل وحدة التحكم تُنفّذ ملفات إضافية قد تُعيد ربط المفاتيح أو تُغيّر إعدادات اللعبة
- كشف إعدادات Cisco IOS — ملفات CFG الاحتياطية من الموجّهات تحتوي طوبولوجيا الشبكة الكاملة وسلاسل SNMP وبيانات اعتماد خوادم المصادقة
الحماية: FileDex لا يفتح أو يُنفّذ أو يُحلل ملفات CFG. هذه صفحة مرجعية فقط. لحماية بيانات الاعتماد: استخدم متغيرات البيئة أو مدير أسرار بدلاً من إدخالات CFG بالنص الصريح. أضف ملفات .cfg الحساسة إلى .gitignore.