- trixie-backports 4.30.2-1~bpo13+1
- testing 4.30.2-1
- unstable 4.30.2-1
| FILE-HIERARCHY(7) | file-hierarchy | FILE-HIERARCHY(7) |
الاسم¶
file-hierarchy - نظرة عامة على هرمية نظام الملفات
الوصف¶
تُنظَّم أنظمة التشغيل التي تستخدم مدير النظام والخدمات systemd(1) بناءً على تسلسل هرمي لنظام الملفات مستوحى من UNIX، وتحديداً التسلسل الهرمي الموصوف في مواصفة File System Hierarchy[1] و hier(7)، مع توسعات متنوعة، موثقة جزئياً في XDG Base Directory Specification[2] و XDG User Directories[3]. تصف صفحة الدليل هذه مجموعة فرعية أكثر تعميماً، وإن كانت دنيا ومحدثة من هذه المواصفات، والتي تحدد بصرامة أكبر الاقتراحات والقيود التي يضعها systemd على التسلسل الهرمي لنظام الملفات. لاحظ أن هذا المستند لا يحاول تعريف هيكل المجلدات بشكل شامل، بل يوثق فقط هيكلاً أساسياً لشجرة المجلدات، يمكن للموزعين (downstreams) توسيعه. وبسبب ذلك، لا تُغطى المجلدات التقليدية مثل /usr/include/ أو /var/spool/، على الرغم من أنه قد يكون (أو لا يكون) من المنطقي جداً تضمينها في هيكل نظام تشغيل منشور فعلياً.
يمكن الاستعلام عن العديد من المسارات الموصوفة هنا باستخدام أداة systemd-path(1).
البنية العامة¶
/
/boot/
/efi/
/etc/
/home/
/root/
/srv/
/tmp/
إذا وجدت التطبيقات متغير البيئة $TMPDIR مضبوطًا، فيجب عليها استخدام المجلد المحدد فيه بدلًا من /tmp/ (انظر environ(7) و IEEE Std 1003.1[4] للتفاصيل).
بما أن /tmp/ متاح لمستخدمي النظام الآخرين، فمن الضروري ألا تُنشأ الملفات والمجلدات الفرعية تحت هذا المجلد إلا باستخدام mkstemp(3)، و mkdtemp(3)، وما شابهها من الاستدعاءات. لمزيد من التفاصيل، انظر استخدام /tmp/ و /var/tmp/ بأمان[5].
بيانات وقت التشغيل¶
/run/
/run/log/
/run/user/
موارد نظام التشغيل المقدمة من المورد¶
/usr/
/usr/bin/
/usr/lib/
/usr/lib/arch-id/
للاستعلام عن $libdir للمعمارية الرئيسة للنظام، استدعِ:
systemd-path system-library-arch
/usr/share/
لاحظ أن الموارد الموضوعة في هذا المجلد عادة ما تكون تحت ملكية مشتركة، أي أن حزمًا مختلفة متعددة قد قدمت واستهلكت هذه الموارد، على قدم المساواة، دون مالك رئيس واضح. وهذا يجعل الأمور مختلفة بشكل منهجي عن /usr/lib/، حيث لا تكون الملكية مشتركة عمومًا.
/usr/share/doc/
/usr/share/factory/etc/
/usr/share/factory/var/
بيانات النظام المتغيرة والمستمرة¶
/var/
/var/cache/
/var/lib/
/var/log/
/var/tmp/
إذا وجدت التطبيقات متغير البيئة $TMPDIR مضبوطًا، فيجب عليها استخدام المجلد المحدد فيه بدلًا من /var/tmp/ (انظر environ(7) للتفاصيل).
تنطبق نفس القيود الأمنية المطبقة على /tmp/: يجب استخدام mkstemp(3)، و mkdtemp(3)، وما شابهها من الاستدعاءات. لمزيد من التفاصيل حول هذا المجلد، انظر استخدام /tmp/ و /var/tmp/ بأمان[5].
نظم ملفات النواة وواجهة برمجة التطبيقات الافتراضية¶
/dev/
/dev/shm/
/proc/
/proc/sys/
/sys/
/sys/fs/cgroup/
روابط رمزية للتوافقية¶
/bin/, /sbin/, /usr/sbin/
/lib/
/lib64/
/var/run/
المجلد المنزلي¶
قد ترغب تطبيقات المستخدم في وضع ملفات ومجلدات في المجلد المنزلي للمستخدم. يجب أن تتبع البنية الأساسية التالية. لاحظ أن بعض هذه المجلدات مقننة أيضًا (وإن كان بشكل أضعف) بواسطة مواصفات مجلد الأساس XDG[2]. تُعرَّف مواقع إضافية لموارد المستخدم عالية المستوى بواسطة xdg-user-dirs[3].
~/.cache/
~/.config/
~/.local/bin/
~/.local/lib/
~/.local/lib/arch-id/
~/.local/share/
~/.local/state/
صلاحية الكتابة¶
صلاحية الكتابة لغير ذوي الامتيازات¶
تفتقر العمليات غير ذوي الامتيازات عمومًا إلى صلاحية الكتابة في معظم أجزاء الهرمية.
الاستثناءات للمستخدمين العاديين هي /tmp/، و /var/tmp/، و /dev/shm/، بالإضافة إلى المجلد المنزلي $HOME (الذي يوجد عادة تحت /home/) ومجلد وقت التشغيل $XDG_RUNTIME_DIR (الموجود تحت /run/user/) الخاص بالمستخدم، وكلها قابلة للكتابة.
بالنسبة لعمليات النظام غير ذوي الامتيازات، فإن /tmp/، و /var/tmp/، و /dev/shm/ فقط هي القابلة للكتابة. إذا احتاجت عملية نظام غير ذوي امتيازات إلى مجلد خاص قابل للكتابة في /var/ أو /run/، فيوصى إما بإنشائه قبل التخلي عن الامتيازات في كود الخدمة الخلفية، أو إنشائه عبر أجزاء tmpfiles.d(5) أثناء الإقلاع، أو عبر توجيهات StateDirectory= و RuntimeDirectory= في وحدات الخدمة (انظر systemd.unit(5) للتفاصيل).
يجب وصل /tmp/، و /var/tmp/، و /dev/shm/ بـ nosuid و nodev، مما يعني أن وضع set-user-id وأجهزة الأحرف أو الأجهزة الكتلية الخاصة لا تُفسر في تلك النظم للملفات. بشكل عام لا يمكن وصلها بـ noexec، لأن برامج متنوعة تستخدم تلك المجلدات للأكواد المولدة ديناميكيًا أو المحسنة، ومع هذا العلم ستتعطل حالات الاستخدام تلك. استخدام هذا العلم مقبول في المنشآت ذات الأغراض الخاصة أو الأنظمة حيث تكون جميع البرمجيات التي قد تُثبت معروفة ولا تتطلب مثل هذه الوظائف. انظر مناقشة nosuid/nodev/noexec في mount(8) و PROT_EXEC في mmap(2).
نقص صلاحية الكتابة في الأنظمة المخصصة للقراءة فقط وأثناء استعادة النظام¶
كما لوحظ أعلاه، تعمل بعض الأنظمة مع هرميتي /usr و /etc موصولتين للقراءة فقط، مع السماح بصلاحية الكتابة فقط أثناء ترقيات الحزم ربما. الأجزاء الأخرى من الهرمية تُوصل عمومًا للقراءة والكتابة (خاصة /var و /var/tmp)، ولكنها قد تكون للقراءة فقط عندما تعيد النواة وصل نظام الملفات للقراءة فقط استجابة للأخطاء، أو عندما يُقلع النظام في وضع القراءة فقط لأغراض الاستعادة. إلى المدى المعقول، يجب أن تكون التطبيقات مستعدة للتنفيذ بدون صلاحية كتابة، بحيث لا يمنع الفشل في حفظ بيانات غير ضرورية في /var/cache/ أو الفشل في إنشاء ملف سجل مخصص تحت /var/log التطبيق من العمل، على سبيل المثال.
مجلد /run/ متاح منذ أبكر وقت للإقلاع وهو قابل للكتابة دائمًا. يجب استخدامه لأي بيانات وقت تشغيل ومقابس، بحيث لا تكون صلاحية الكتابة إلى /etc أو /var مطلوبة، على سبيل المثال.
أنواع العقد¶
تدعم نظم ملفات Unix أنواعًا مختلفة من عقد الملفات، بما في ذلك الملفات العادية، والمجلدات، والروابط الرمزية، وعقد أجهزة الأحرف والأجهزة الكتلية، والمقابس و FIFOs.
يوصى بشدة بأن يكون /dev/ هو الموقع الوحيد الذي تُوضع تحته عقد الأجهزة. وبالمثل، يجب أن يكون /run/ هو الموقع الوحيد لوضع المقابس و FIFOs. يمكن استخدام الملفات العادية، والمجلدات، والروابط الرمزية في جميع المجلدات.
يجب أن تتوقع التطبيقات أن سياسة أمنية قد تُفرض على نظام يطبق هذه القواعد.
حزم النظام¶
يجب على مطوري حزم النظام اتباع قواعد صارمة عند وضع ملفاتهم في نظام الملفات. تسرد الجدول التالي المواقع الموصى بها لأنواع محددة من الملفات التي يقدمها المورد.
جدول 1. مواقع
ملفات
المورد
لحزم
النظام
| مجلد | الغرض |
| /usr/bin/ | الملفات التنفيذية للحزمة التي يجب أن تظهر في مسار بحث الملفات التنفيذية $PATH، والمجمعة لأي من المعماريات المدعومة المتوافقة مع نظام التشغيل. لا يوصى بوضع ملفات ثنائية داخلية أو ملفات ثنائية لا تُستدعى عادةً من الصدفة في هذا المجلد، مثل الملفات الثنائية للخدمات الخلفية. بما أن هذا المجلد مشترك مع معظم الحزم الأخرى في النظام، يجب توخي الحذر الشديد لاختيار أسماء فريدة للملفات الموضوعة هنا، بحيث لا يحتمل أن تتضارب مع ملفات الحزم الأخرى. |
| /usr/lib/arch-id/ | المكتبات المشتركة العامة للحزمة. كما هو موضح أعلاه، كن حذرًا من استخدام أسماء عامة جدًا، واختر أسماءً فريدة لمكتباتك لوضعها هنا لتجنب تضارب الأسماء. |
| /usr/lib/package/ | موارد المورد الساكنة والخاصة بالحزمة، بما في ذلك الملفات الثنائية والمكتبات الخاصة، أو أي نوع آخر من بيانات المورد المخصصة للقراءة فقط. |
| /usr/lib/arch-id/package/ | موارد المورد الخاصة الأخرى للحزمة التي تعتمد على المعمارية ولا يمكن مشاركتها بين المعماريات. لاحظ أن هذا لا يشمل عمومًا الملفات التنفيذية الخاصة لأن الملفات الثنائية لمعمارية معينة يمكن استدعاؤها بحرية من أي معمارية نظام أخرى مدعومة. |
قد تُثبَّت ملفات مورد ساكنة إضافية بملكية مشتركة في هرمية /usr/share/ في المواقع التي تحددها المواصفات المتنوعة ذات الصلة.
يجب استخدام المجلدات التالية بواسطة الحزمة للضبط المحلي والملفات المنشأة أثناء وقت التشغيل:
جدول 2. مواقع
الملفات
المتغيرة
لحزم
النظام
| مجلد | الغرض |
| /etc/package/ | الضبط الخاص بالنظام للحزمة. يوصى بالعودة المبدئية إلى قيم احتياطية آمنة في حال فقدان هذا الضبط، إذا كان ذلك ممكنًا. بدلًا من ذلك، يمكن استخدام جزء من tmpfiles.d(5) لنسخ أو ربط الملفات والمجلدات اللازمة رمزيًا من /usr/share/factory/ أثناء الإقلاع، عبر توجيهات "L" أو "C". |
| /run/package/ | بيانات وقت التشغيل للحزمة. يجب أن تكون الحزم قادرة على إنشاء المجلدات الفرعية اللازمة في هذه الشجرة بمفردها، لأن المجلد يُفرغ آليًا عند الإقلاع. بدلًا من ذلك، يمكن استخدام جزء من tmpfiles.d(5) لإنشاء المجلدات اللازمة أثناء الإقلاع، أو يمكن استخدام توجيه RuntimeDirectory= في وحدات الخدمة لإنشائها عند بدء تشغيل الخدمة (انظر systemd.unit(5) للتفاصيل). |
| /run/log/package/ | بيانات سجل وقت التشغيل للحزمة. كما ورد أعلاه، تحتاج الحزمة للتأكد من إنشاء هذا المجلد إذا لزم الأمر، حيث سيُفرغ عند كل إقلاع. |
| /var/cache/package/ | بيانات خبيئة الحزمة المستمرة. إذا أُفرغ هذا المجلد، يجب أن يعمل التطبيق بشكل صحيح عند الاستدعاء التالي، وإن كان ذلك ببطء ربما بسبب الحاجة لإعادة بناء أي ملفات خبيئة محلية. يجب أن يكون التطبيق قادرًا على إعادة إنشاء هذا المجلد في حال فقدانه وكونه ضروريًا. لإنشاء مجلد فارغ، يمكن استخدام جزء من tmpfiles.d(5) أو توجيه CacheDirectory= في وحدات الخدمة (انظر systemd.unit(5)). |
| /var/lib/package/ | البيانات الخاصة المستمرة للحزمة. هذا هو المكان الرئيس لوضع البيانات المستمرة التي لا تندرج تحت الفئات الأخرى المدرجة. يجب أن تكون الحزم قادرة على إنشاء المجلدات الفرعية اللازمة في هذه الشجرة بمفردها، لأن المجلد قد يكون مفقودًا عند الإقلاع. لإنشاء مجلد فارغ، يمكن استخدام جزء من tmpfiles.d(5) أو توجيه StateDirectory= في وحدات الخدمة (انظر systemd.unit(5)). |
| /var/log/package/ | بيانات السجل المستمرة للحزمة. كما ورد أعلاه، يجب أن تتأكد الحزمة من إنشاء هذا المجلد إذا لزم الأمر، ربما باستخدام tmpfiles.d(5) أو LogsDirectory= (انظر systemd.exec(5))، حيث قد يكون مفقودًا. |
حزم المستخدم¶
يجب على البرامج التي تعمل في سياق المستخدم اتباع قواعد صارمة عند وضع ملفاتها الخاصة في المجلد المنزلي للمستخدم. يسرد الجدول التالي المواقع الموصى بها في المجلد المنزلي لأنواع محددة من الملفات التي يقدمها المورد إذا ثُبت التطبيق في المجلد المنزلي. (تطبيقات المستخدم المثبتة على مستوى النظام تغطيها القواعد الموضحة أعلاه لملفات المورد.)
جدول 3. مواقع
ملفات حزمة
المورد تحت
المجلد
المنزلي
للمستخدم
| مجلد | الغرض |
| ~/.local/bin/ | الملفات التنفيذية للحزمة التي يجب أن تظهر في مسار بحث الملفات التنفيذية $PATH. لا يوصى بوضع ملفات تنفيذية داخلية أو ملفات تنفيذية لا تُستدعى عادةً من الصدفة في هذا المجلد، مثل الملفات التنفيذية للخدمات الخلفية. بما أن هذا المجلد مشترك مع معظم حزم المستخدم الأخرى، يجب توخي الحذر الشديد لاختيار أسماء فريدة للملفات الموضوعة هنا، بحيث لا يحتمل أن تتضارب مع ملفات الحزم الأخرى. |
| ~/.local/lib/arch-id/ | المكتبات المشتركة العامة للحزمة. كما ورد أعلاه، كن حذرًا من استخدام أسماء عامة جدًا، واختر أسماءً فريدة لمكتباتك لوضعها هنا لتجنب تضارب الأسماء. |
| ~/.local/lib/package/ | موارد المورد الساكنة والخاصة للحزمة، والمتوافقة مع أي معمارية، أو أي نوع آخر من بيانات المورد المخصصة للقراءة فقط. |
| ~/.local/lib/arch-id/package/ | موارد المورد الخاصة الأخرى للحزمة التي تعتمد على المعمارية ولا يمكن مشاركتها بين المعماريات. |
قد تُثبَّت ملفات مورد ساكنة إضافية بملكية مشتركة في هرمية ~/.local/share/، بما يحاكي المجلدات الفرعية المحددة في قسم "موارد نظام التشغيل المقدمة من المورد" أعلاه.
يجب استخدام المجلدات التالية بواسطة الحزمة للضبط المحلي لكل مستخدم والملفات المنشأة أثناء وقت التشغيل:
جدول 4. مواقع
الملفات
المتغيرة
لحزم
المستخدم
| مجلد | الغرض |
| ~/.config/package/ | الضبط الخاص بالمستخدم للحزمة. يجب العودة المبدئية إلى قيم احتياطية آمنة في حال فقدان هذا الضبط. |
| $XDG_RUNTIME_DIR/package/ | بيانات وقت تشغيل المستخدم للحزمة. |
| ~/.cache/package/ | بيانات خبيئة الحزمة المستمرة. إذا أُفرغ هذا المجلد، يجب أن يعمل التطبيق بشكل صحيح عند الاستدعاء التالي، وإن كان ذلك ببطء ربما بسبب الحاجة لإعادة بناء أي ملفات خبيئة محلية. يجب أن يكون التطبيق قادرًا على إعادة إنشاء هذا المجلد في حال فقدانه وكونه ضروريًا. |
| ~/.local/state/package/ | بيانات حالة الحزمة المستمرة. |
انظر أيضًا¶
systemd(1), hier(7), systemd-path(1), systemd-gpt-auto-generator(8), sysctl.d(5), tmpfiles.d(5), pkg-config(1), systemd.unit(5)
ملاحظات¶
- 1.
- هرمية نظام الملفات
- 2.
- مواصفات مجلد الأساس XDG
- 3.
- مجلدات مستخدم XDG
- 4.
- IEEE Std 1003.1
- 5.
- استخدام /tmp/ و /var/tmp/ بأمان
- 6.
- محددات معمارية التعدد (Tuples)
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| systemd 257.9 |