table of contents
- unstable 4.31.0-1
| TMPFILES.D(5) | tmpfiles.d | TMPFILES.D(5) |
الاسم¶
tmpfiles.d - إعدادات إنشاء وحذف وتنظيف الملفات والدلائل
موجز¶
#النوع المسار الوضع المستخدم المجموعة العمر المعطى f /file/to/create mode user group - content f+ /file/to/create-or-truncate mode user group - content w /file/to/write-to - - - - content w+ /file/to/append-to - - - - content d /directory/to/create-and-clean-up mode user group cleanup-age - D /directory/to/create-and-remove mode user group cleanup-age - e /directory/to/clean-up mode user group cleanup-age - v /subvolume-or-directory/to/create mode user group cleanup-age - q /subvolume-or-directory/to/create mode user group cleanup-age - Q /subvolume-or-directory/to/create mode user group cleanup-age - p /fifo/to/create mode user group - - p+ /fifo/to/[re]create mode user group - - L /symlink/to/create - - - - symlink/target/path L+ /symlink/to/[re]create - - - - symlink/target/path c /dev/char-device-to-create mode user group - major:minor c+ /dev/char-device-to-[re]create mode user group - major:minor b /dev/block-device-to-create mode user group - major:minor b+ /dev/block-device-to-[re]create mode user group - major:minor C /target/to/create - - - cleanup-age /source/to/copy C+ /target/to/create - - - cleanup-age /source/to/copy x /path-or-glob/to/ignore/recursively - - - cleanup-age - X /path-or-glob/to/ignore - - - cleanup-age - r /path-or-glob/to/remove - - - - - R /path-or-glob/to/remove/recursively - - - - - z /path-or-glob/to/adjust/mode mode user group - - Z /path-or-glob/to/adjust/mode/recursively mode user group - - t /path-or-glob/to/set/xattrs - - - - xattrs T /path-or-glob/to/set/xattrs/recursively - - - - xattrs h /path-or-glob/to/set/attrs - - - - file attrs H /path-or-glob/to/set/attrs/recursively - - - - file attrs a /path-or-glob/to/set/acls - - - - POSIX ACLs a+ /path-or-glob/to/append/acls - - - - POSIX ACLs A /path-or-glob/to/set/acls/recursively - - - - POSIX ACLs A+ /path-or-glob/to/append/acls/recursively - - - - POSIX ACLs k /path-or-glob/to/set/caps - - - - file capabilities k+ /path-or-glob/to/adjust/caps - - - - file capabilities K /path-or-glob/to/set/caps/recursively - - - - file capabilities K+ /path-or-glob/to/adjust/caps/recursively - - - - file capabilities
الوصف¶
ملفات إعدادات tmpfiles.d توفر آلية عامة لتعريف إنشاء الملفات العادية والدلائل والأنابيب وعُقد الأجهزة، وتعديلات وضع الوصول والملكية والسمات وتعيينات الحصة والمحتويات، وأخيرًا إزالتها المستندة إلى الوقت. تُستخدم بشكل شائع للملفات والدلائل المؤقتة والمتطايرة (مثل تلك الموجودة تحت /run/ و/tmp/ و/var/tmp/ وأنظمة ملفات API مثل /sys/ أو /proc/، بالإضافة إلى بعض الدلائل الأخرى تحت /var/).
systemd-tmpfiles(8) يستخدم هذا الإعداد لإنشاء ملفات ودلائل متطايرة أثناء الإقلاع وللقيام بالتنظيف الدوري بعد ذلك. انظر systemd-tmpfiles(8) لوصف systemd-tmpfiles-setup.service وsystemd-tmpfiles-clean.service والوحدات المرتبطة.
الخدمات النظامية تتطلب غالبًا دلائل تشغيل خاصة تحت /run/ لتخزين مآخذ الاتصال وما شابه. لهذه، من الأفضل استخدام RuntimeDirectory= في ملفات وحداتها (انظر systemd.exec(5) للتفاصيل)، إذا لم تكن المرونة التي يوفرها tmpfiles.d مطلوبة. المزايا هي أن الإعداد المطلوب من قبل الوحدة يتركز في مكان واحد، وأن عمر الدليل مرتبط بعمر الخدمة نفسها. بالمثل، يجب استخدام StateDirectory= وCacheDirectory= وLogsDirectory= وConfigurationDirectory= لإنشاء دلائل تحت /var/lib/ و/var/cache/ و/var/log/ و/etc/. يجب استخدام tmpfiles.d للملفات التي يكون عمرها مستقلاً عن أي خدمة أو تتطلب إعدادًا أكثر تعقيدًا.
أدلة الضبط والأسبقية¶
يجب تسمية كل ملف ضبط بأسلوب الحزمة.conf أو الحزمة-الجزء.conf. ينبغي استخدام الصيغة الثانية عندما يكون من المرغوب فيه تسهيل تجاوز هذا الجزء فقط من الضبط.
الملفات في /etc/tmpfiles.d تتجاوز الملفات التي تحمل نفس الاسم في /usr/lib/tmpfiles.d و/run/tmpfiles.d. الملفات في /run/tmpfiles.d تتجاوز الملفات التي تحمل نفس الاسم في /usr/lib/tmpfiles.d. يجب على الحزم تثبيت ملفات إعداداتها في /usr/lib/tmpfiles.d. الملفات في /etc/tmpfiles.d محجوزة للمسؤول المحلي، الذي قد يستخدم هذا المنطق لتجاوز ملفات الإعدادات المثبتة من قبل حزم البائعين. جميع ملفات الإعدادات تُرتب حسب اسم ملفها بترتيب معجمي، بغض النظر عن أي من الدلائل توجد. إذا حددت ملفات متعددة نفس المسار، يُطبق الإدخال في الملف ذي الاسم الأقدم معجميًا (لاحظ أن الأسطر المكبوتة بسبب "!" تُصفى قبل التطبيق، مما يعني أنه إذا حمل سطر مبكر علامة التعجب وكُبت بسبب ذلك، يُطبق سطر لاحق يطابق المسار). جميع الإدخالات المتعارضة الأخرى تُسجل كأخطاء. عندما يكون سطران بادئة مسار ولاحقة مسار لبعضهما البعض، يُنشأ سطر البادئة أولاً دائمًا، واللاحقة لاحقًا (وإذا انطبق الإزالة على السطر، يُعكس الترتيب: تُزال اللاحقة أولاً، والبادئة لاحقًا). الأسطر التي تأخذ أنماطًا عالمية تُطبق بعد تلك التي لا تقبل أنماطًا عالمية. إذا طُبقت عمليات متعددة على نفس الملف (مثل تعديلات ACL وxattr وسمات الملف)، تُجرى هذه دائمًا بنفس الترتيب الثابت. باستثناء هذه الحالات، تُعالج الملفات/الدلائل بالترتيب الذي تُدرج به.
إذا أراد المسؤول تعطيل ملف إعدادات مقدم من البائع، الطريقة الموصى بها هي وضع رابط رمزي إلى /dev/null في /etc/tmpfiles.d/ يحمل نفس اسم الملف.
تنسيق ملف الضبط¶
تنسيق الإعداد هو سطر واحد لكل مسار، يحتوي على حقول النوع والمسار والوضع والملكية والعمر والوسيطة. الأسطر مفصولة بأسطر جديدة، والحقول بمسافات بيضاء:
#Type Path Mode User Group Age Argument... d /run/user 0755 root root 10d - L /tmp/foobar - - - - /dev/null
قد تحتوي الحقول على محارف هروب بنمط C. باستثناء الحقل السابع ("المعطى")، يمكن إحاطة جميع الحقول بعلامات اقتباس. لاحظ أن أي مسافة بيضاء تُوجَد في السطر بعد بداية حقل المعطى ستُعدُّ جزءًا من حقل المعطى. لبدء حقل المعطى بمحرف مسافة بيضاء، استخدم محارف الهروب بنمط C (مثل "\x20").
Type¶
النوع يتكون من حرف واحد واختياريًا حرف تعديل واحد أو أكثر: علامة زائد ("+")، علامة تعجب ("!")، علامة ناقص ("-")، علامة يساوي ("=")، حرف التلدة ("~") و/أو علامة الإقحام ("^").
أنواع الأسطر التالية مفهومة:
f, f+
w, w+
d
D
e
لكي يكون هذا المدخل مفيدًا، يجب تحديد معطى واحد على الأقل من الوضع أو المستخدم أو المجموعة أو العمر، وإلا فلن يكون لهذا المدخل أي تأثير. و كاستثناء، قد يكون المدخل الذي ليس له تأثير مفيدًا عندما يقترن بـ !، انظر الأمثلة.
أُضيف في الإصدارة 230.
v
لا يُخصَّص الجزء الفرعي المنشأ بنوع السطر هذا لأي مجموعة حصص نسبية ذات مستوى أعلى. لذلك، استخدم q أو Q، اللذين يسمحان بإنشاء هرميات مجموعات حصص نسبية بسيطة، انظر أدناه.
أُضيف في الإصدارة 219.
q
إذا كان الحجم الفرعي موجودًا بالفعل، فلا يُجرى أي تغيير على التسلسل الهرمي للحصة، بغض النظر عما إذا كان الحجم الفرعي مرتبطًا بالفعل بمجموعة حصة أم لا. انظر أيضًا Q أدناه. انظر btrfs-qgroup(8) للحصول على تفاصيل حول مفهوم مجموعة حصة btrfs.
أُضيف في الإصدارة 228.
Q
عمليًا، لهذا تأثير مشابه لـ q، لكنه يُقدم مجموعة حصة جديدة عالية المستوى للحجم الفرعي المحدد قد تُستخدم لفرض حدود ومحاسبة على الحجم الفرعي المحدد والأحجام الفرعية التابعة المنشأة داخله. وهكذا، بإنشاء الأحجام الفرعية فقط عبر q و Q، يُطبق مفهوم "حصص الشجرة الفرعية". كل حجم فرعي يُعين له Q سيحصل على مجموعة حصة "شجرة فرعية" منشأة، وستُعين إليه جميع الأحجام الفرعية التابعة المنشأة داخله. كل حجم فرعي يُعين له q لن يحصل على مجموعة حصة "شجرة فرعية" كهذه، لكن يُضمن إضافتها إلى نفس مجموعة حصة "الشجرة الفرعية" مثل آبائها المباشرين.
يُوصى باستخدام Q للأحجام الفرعية التي تحتوي عادةً على أحجام فرعية أخرى، وحيث يكون من المرغوب فيه وجود محاسبة وحدود حصة على جميع الأحجام الفرعية التابعة معًا. أمثلة على Q هي عادةً /home/ أو /var/lib/machines/. في المقابل، يجب استخدام q للأحجام الفرعية التي إما لا تتضمن عادةً أحجامًا فرعية أخرى أو حيث لا حاجة لمحاسبة وحدود حصة تنطبق على جميع الأحجام الفرعية التابعة معًا. أمثلة على q هي عادةً /var/ أو /var/tmp/.
كما هو الحال مع q، ليس لـ Q أي تأثير على التسلسل الهرمي لمجموعة الحصة إذا كان الحجم الفرعي موجودًا بالفعل، بغض النظر عما إذا كان الحجم الفرعي ينتمي بالفعل إلى مجموعة حصة أم لا.
أُضيف في الإصدارة 228.
p, p+
L, L+, L?
c, c+
b, b+
C, C+
أُضيف في الإصدارة 214.
x
X
أُضيف في الإصدارة 198.
r
R
z
Z
t
يرجى ملاحظة أن السمات الموسعة القابلة للتعيين بنوع السطر هذا هي مفهوم مختلف عن سمات ملف Linux القابلة للتعيين بـ h/H، انظر أدناه.
أُضيف في الإصدارة 218.
T
أُضيف في الإصدارة 219.
h
تنسيق حقل الوسيطة هو [+-=][aAcCdDeijPsStTu]. البادئة + (المبدئية) تتسبب في إضافة السمات؛ - تتسبب في إزالة السمات؛ = تتسبب في تعيين السمات تمامًا كما في الحروف التالية. الحروف "aAcCdDeijPsStTu" تحدد السمات الجديدة للملفات، انظر chattr(1) لمزيد من المعلومات.
تمرير = فقط كوسيطة يعيد تعيين جميع سمات الملف المذكورة أعلاه. يجب الإشارة إلى أن البادئة = تقتصر على السمات المقابلة للحروف المدرجة هنا. جميع السمات الأخرى تُترك دون تغيير. لا يتبع الروابط الرمزية.
يرجى ملاحظة أن سمات ملف لينكس القابلة للتعيين مع هذا النوع من الأسطر هي مفهوم مختلف عن السمات الموسعة القابلة للتعيين مع t/T، انظر أعلاه.
H
أُضيف في الإصدارة 220.
a, a+
أُضيف في الإصدارة 219.
A, A+
أُضيف في الإصدارة 219.
k, k+
يتبع بناء الجملة cap_text_formats(7). كما يدعم أيضًا "rootuid=INT" لمعرف مستخدم مساحة اسم المستخدم الجذر .
إذا أُلحقت به اللاحقة +، فسيُحتفظ بالصلاحيات الحالية على الملف التي لم يمسها التعبير . على سبيل المثال، إذا كانت هناك حاجة لإزالة جميع صلاحيات "cap_setuid" مع الاحتفاظ بصلاحيات أخرى، فيمكن استخدام k+ مع "cap_setuid=" أو "cap_setuid-eip".
أُضيف في الإصدار 261.
K, K+
أُضيف في الإصدار 261.
معدلات النوع¶
إذا اُستخدمت علامة التعجب ("!")، فإن هذا السطر آمن للتنفيذ فقط أثناء الإقلاع، ويمكن أن يعطل نظامًا قيد التشغيل. الأسطر بدون علامة التعجب يُفترض أنها آمنة للتنفيذ في أي وقت، على سبيل المثال أثناء ترقيات الحزم. systemd-tmpfiles(8) سيأخذ الأسطر التي تحتوي على علامة تعجب في الاعتبار فقط، إذا اُعطي الخيار --boot.
على سبيل المثال:
# Make sure these are created by default so that nobody else can d /tmp/.X11-unix 1777 root root 10d # Unlink the X11 lock files r! /tmp/.X[0-9]*-lock
السطر الثاني على عكس الأول سيعطل نظامًا قيد التشغيل، وسيُنفذ فقط مع --boot.
إذا اُستخدمت علامة الطرح ("-")، فإن فشل هذا السطر في التشغيل بنجاح أثناء الإنشاء (والإنشاء فقط) لن يتسبب في إرجاع تنفيذ systemd-tmpfiles(8) لخطأ.
على سبيل المثال:
# Modify sysfs but do not fail if we are in a container with a read-only /proc w- /proc/sys/vm/swappiness - - - - 10
إذا اُستخدمت علامة المساواة ("=")، يُتحقق من أنواع الملفات للكائنات الموجودة في المسار المحدد، وإزالتها إذا لم تتطابق. يشمل ذلك أي أدلة أصل أُنشئت ضمنيًا (والتي يمكن أن تكون إما أدلة أو روابط رمزية للأدلة). على سبيل المثال، إذا كان هناك FIFO بدلاً من أحد مكونات المسار الأصلي، فسيُستبدل بدليل.
إذا اُستخدمت حرف التلدة ("~")، فإن عمود الوسيطة (أي السادس) يُفك ترميز Base64[1] قبل الاستخدام. هذا المعدل مدعوم فقط على أنواع الأسطر التي يمكنها كتابة محتويات الملف، أي f، f+، w، +. هذا مفيد لكتابة بيانات ثنائية عشوائية (بما في ذلك الأسطر الجديدة وبتات NUL) إلى الملفات. لاحظ أنه إذا اُستخدم هذا المفتاح، فإن الوسيطة لا تخضع لتوسيع المحدد، لا قبل ولا بعد فك ترميز Base64.
إذا اُستخدمت حرف الإقحام ("^")، فإن عمود الوسيطة (أي السادس) يأخذ اسم شهادة خدمة لقراءة بيانات الوسيطة منه. انظر شهادات النظام والخدمة[2] للحصول على تفاصيل حول مفهوم الشهادات. هذا المعدل مدعوم فقط على أنواع الأسطر التي يمكنها كتابة محتويات الملف، أي f، f+، w، w+. هذا مفيد لكتابة ملفات عشوائية بمحتويات مستمدة من مكان آخر، بما في ذلك من مديري VM أو الحاوية الأعلى. إذا لم تُعين الشهادة المحددة لخدمة systemd-tmpfiles، يُتخطى السطر بصمت. إذا جُمع "^" و "~" يُطبق فك ترميز Base64 على محتويات الشهادة.
إذا اُستخدمت علامة الدولار ("$")، يصبح الملف خاضعًا للإزالة عند استدعاء systemd-tmpfiles مع المفتاح --purge. الأسطر بدون هذا الحرف لا تتأثر بهذا المفتاح.
لاحظ أنه بالنسبة لجميع أنواع الأسطر التي تؤدي إلى إنشاء أي نوع من عقد الملفات (أي f، d/D/v/q/Q، p، L، c/b و C) تُنشئ الأدلة الرائدة ضمنيًا إذا لزم الأمر، مملوكة لـ root مع وضع وصول 0755. لإنشائها بأوضاع أو ملكية مختلفة تأكد من إضافة أسطر d المناسبة.
المسار¶
مواصفات مسار نظام الملفات تدعم توسيع المحدد البسيط، انظر أدناه. يجب أن يكون المسار (بعد التوسيع) مطلقًا.
الوضع¶
وضع الوصول للملف لاستخدامه عند إنشاء هذا الملف أو الدليل. إذا حُذف أو عُين على "-"، يُستخدم المبدئي: 0755 للأدلة، 0644 لجميع كائنات الملف الأخرى. بالنسبة لأسطر z، Z، إذا حُذف أو عُين على "-"، فلن يُعدل وضع الوصول للملف. يُتجاهل هذه المُعطى للخطوط x، r، R، L، t، a، و k.
اختياريًا، إذا بُدأ بـ "~"، يُخفى وضع الوصول بناءً على بتات الوصول المحددة بالفعل للملف أو الدليل الموجود: إذا كان الملف الموجود يحتوي على جميع بتات التنفيذ غير محددة، تُزال جميع بتات التنفيذ من وضع الوصول الجديد أيضًا. وبالمثل، إذا أزيلت جميع بتات القراءة من وضع الوصول القديم، فستُزال من وضع الوصول الجديد أيضًا، وإذا أُزيلت جميع بتات الكتابة، فستُزال من وضع الوصول الجديد أيضًا. بالإضافة إلى ذلك، سيُزال بت الملصق/SUID/SGID ما لم يُطبق على دليل. هذه الوظيفة مفيدة بشكل خاص بالتزامن مع Z.
مبدئيًا، يُضبط نمط الوصول لعُقد الفهرس المدرجة على النمط المحدد بغض النظر عن إنشائها حديثًا أو وجودها مسبقًا. اختياريًا، إذا سُبقت بـ ":"، يُطبق نمط الوصول المُهيأ فقط عند إنشاء عُقد فهرس جديدة، وإذا كانت عقدة الفهرس التي يشير إليها السطر موجودة مسبقًا، يُترك نمط وصولها دون تعديل.
المستخدم، المجموعة¶
المستخدم والمجموعة لاستخدامهما لهذا الملف أو الدليل. قد يكون هذا إما معرفًا رقميًا أو اسم مستخدم/مجموعة. إذا حُذف أو عُيّن على "-"، يُستخدم المستخدم والمجموعة للمستخدم الذي يستدعي systemd-tmpfiles(8). بالنسبة لسطور z و Z، عند حذفهما أو تعيينهما على "-"، لن يُعدل ملكية الملف. تُتجاهل هذه المعاملات لسطور x و r و R و t و a.
يجب أن يشير هذا الحقل عمومًا فقط إلى مستخدمين/مجموعات النظام، أي المستخدمين/المجموعات المضمون حلها أثناء الإقلاع المبكر. إذا أشار هذا الحقل إلى مستخدمين/مجموعات لا تصبح قابلة للحل إلا أثناء الإقلاع المتأخر (أي بعد توفر NIS أو LDAP أو خدمة دليل شبكي مماثلة)، فمن المحتمل أن يفشل تنفيذ العمليات المُعلنة في السطر. انظر أيضًا ملاحظات حول قابلية حل أسماء المستخدمين والمجموعات[3] لمزيد من المعلومات حول متطلبات تعريفات المستخدمين/المجموعات في النظام.
مبدئيًا، تُضبط ملكية عُقد الفهرس المدرجة على المستخدم/المجموعة المحددين بغض النظر عن إنشائها حديثًا أو وجودها مسبقًا. اختياريًا، إذا سُبقت بـ ":"، تُطبق معلومات المستخدم/المجموعة المُهيأة فقط عند إنشاء عُقد فهرس جديدة، وإذا كانت عقدة الفهرس التي يشير إليها السطر موجودة مسبقًا، يُترك مستخدمها/مجموعتها دون تعديل.
العمر¶
حقل التاريخ، عند تعيينه، يُستخدم لتحديد الملفات التي سيُحذفها عند التنظيف. إذا كان ملف أو دليل أقدم من الوقت الحالي ناقص حقل العمر، يُحذف. تنسيق الحقل هو سلسلة من الأعداد الصحيحة يتبع كل منها إحدى اللواحق التالية لوحدات الزمن المعنية: s و m أو min و h و d و w و ms و us، وتعني الثواني والدقائق والساعات والأيام والأسابيع والميلي ثانية والميكروثانية على التوالي. يمكن استخدام الأسماء الكاملة لوحدات الزمن أيضًا.
إذا حُددت أعداد صحيحة ووحدات متعددة، تُجمع قيم الزمن. إذا أُعطي عدد صحيح بدون وحدة، يُفترض s.
عند ضبط العمر على صفر، تُنظف الملفات دون قيد أو شرط.
حقل العمر ينطبق فقط على السطور التي تبدأ بـ d و D و e و v و q و Q و C و x و X. إذا حُذف أو عُيّن على "-"، لا يُجرى أي تنظيف آلي.
إذا بدأ حقل العمر بحرف التلدة "~"، يُطبق التنظيف فقط على الملفات والدلائل على مستوى واحد داخل الدليل المحدد، وليس على الملفات والدلائل الموجودة داخله مباشرة.
يُحدد عمر إدخال نظام الملفات من طابع زمن التعديل الأخير (mtime) وطابع زمن الوصول الأخير (atime) و(باستثناء الدلائل) طابع زمن تغيير الحالة الأخير (ctime). مبدئيًا، أي من هذه القيم الثلاث (أو اثنتين) سيمنع التنظيف إذا كان أحدث من الوقت الحالي ناقص حقل العمر. لتقييد الحذف بناءً على نوع معين من أطوابع زمن الملفات، يمكن استخدام وسيطة العمر حسب.
وسيطة العمر حسب تتجاوز أنواع الأطوابع الزمنية المستخدمة لفحص العمر. يمكن تحديدها ببادئة وسيطة العمر بسلسلة من الأحرف لتحديد أنواع الأطوابع الزمنية ونقطتين رأسيتين (":"): "العمر حسب...:عمر التنظيف". يمكن أن تتكون الوسيطة من a (A للدلائل) و b (B للدلائل) و c (C للدلائل) أو m (M للدلائل). تشير هذه على التوالي إلى وقت الوصول والإنشاء وتغيير الحالة الأخير والتعديل الأخير لإدخال نظام الملفات. يشير الحرف الصغير إلى أن نوع الطابع الزمني المعطى يجب مراعاته للملفات، بينما يشير الحرف الكبير إلى أن نوع الطابع الزمني المعطى يجب مراعاته للدلائل. انظر statx(2) حقول أطوابع زمن الملفات لمزيد من التفاصيل حول أنواع الأطوابع الزمنية.
إذا لم يُحدد، فإن حقل العمر حسب يَعدل مبدئيًا إلى abcmABM، أي مبدئيًا تُؤخذ جميع أطوابع زمن الملفات في الاعتبار، باستثناء طابع زمن تغيير الحالة الأخير (ctime) للدلائل. هذا لأن منطق التقادم نفسه سيغير ctime كلما حذف ملفًا داخله. لضمان أن تشغيل منطق التقادم لا يغذي التكرار التالي لنفسه، يُتجاهل ctime للدلائل مبدئيًا.
على سبيل المثال:
# الملفات المنشأة والمعدلة، والأدلة التي وُصل إليها منذ أكثر من # ساعة في "/tmp/foo/bar"، تخضع لتنظيف مستند إلى الوقت. d /tmp/foo/bar - - - bmA:1h -
لاحظ أنه أثناء تشغيل خوارزمية التقادم، يُؤخذ قفل ملف BSD حصري (انظر flock(2)) على كل دليل/ملف تقرر الخوارزمية إزالته. إذا وجدت خوارزمية التقادم أن قفلًا (مشتركًا أو حصريًا) قد أُخذ بالفعل على دليل/ملف ما، يُتجاوز (وكل ما تحته). يمكن للتطبيقات استخدام هذا لاستبعاد أشجار فرعية معينة من الدلائل مؤقتًا من خوارزمية التقادم: يمكن للتطبيقات أخذ قفل ملف BSD بنفسها، وطالما أبقته، يُعطل تقادم الدليل/الملف وكل ما تحته.
يمكن استخدام هذا السلوك لضمان تنظيف مضمون للملفات أو الدلائل التي يجب أن يتوافق عمرها مع العملية التي أنشأتها، وذلك بجعل تلك العملية تنشئها في موقع يراقبه systemd-tmpfiles بعمر "0"، وجعل العملية تقفل الدليل أو الملف فورًا قبل استخدامه. لأن قفل BSD خاص بالعملية، يُضمن فتح قفل الملف بمجرد خروج العملية، مما يعني أنه حتى إذا تعطلت العملية، ستُفتح أقفال تلك الملفات والدلائل وتُنظف بواسطة systemd-tmpfiles.
المُعطى¶
بالنسبة لسطور L، يُحدد مسار وجهة الرابط الرمزي. بالنسبة لـ c و b، يُحدد الرقم الرئيسي/الفرعي لعقدة الجهاز، مع تنسيق الرقم الرئيسي والفرعي كأعداد صحيحة، مفصولة بـ ":"، مثل "1:3". بالنسبة لـ f و w، يمكن استخدام الوسيطة لتحديد سلسلة قصيرة تُكتب إلى الملف، متبوعة بسطر جديد. بالنسبة لـ C، تُحدد ملف أو دليل المصدر. بالنسبة لـ t و T، تُحدد السمات الموسعة التي ستُضبط. بالنسبة لـ a و A، تُحدد سمات ACL التي ستُضبط. بالنسبة لـ h و H، تُحدد سمات الملف التي ستُضبط. في حالة k و K، تحدد قدرات الملف المراد تعيينها. وتُتجاهل في جميع الأسطر الأخرى.
يمكن أن يحتوي هذا الحقل على محددات، انظر أدناه.
المحددات¶
يمكن استخدام المحددات في حقلي "المسار" و"الوسيطة". يُعتبر المحدد غير المعروف أو غير القابل للحل تكوينًا غير صالح. يُفهم التوسعات التالية:
الجدول 1. المحددات
المتاحة
| المحدد | المعنى | التفاصيل |
| "%a" | المعمارية | سلسلة نصية قصيرة تحدد معمارية النظام المحلي. سلسلة مثل x86 أو x86-64 أو arm64. انظر المعماريات المحددة لـ ConditionArchitecture= في systemd.unit(5) للحصول على قائمة كاملة. |
| "%A" | إصدار صورة نظام التشغيل | معرف إصدار صورة نظام التشغيل للنظام المشغل، كما يُقرأ من حقل IMAGE_VERSION= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات. |
| "%b" | معرف الإقلاع | معرف الإقلاع للنظام المشغل، منسق كسلسلة نصية. انظر random(4) لمزيد من المعلومات. |
| "%B" | معرف بناء نظام التشغيل | معرف بناء نظام التشغيل للنظام المشغل، كما يُقرأ من حقل BUILD_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات. |
| "%C" | دليل الخبيئة للنظام أو المستخدم | في وضع --user، يكون هذا مماثلاً لـ $XDG_CACHE_HOME، و/var/cache خلاف ذلك. |
| "%g" | مجموعة المستخدم | هذا هو اسم المجموعة التي تشغل الأمر. في حالة مثيل النظام، يُحل هذا إلى "root". |
| "%G" | معرف المجموعة (GID) للمستخدم | هذا هو المعرف الرقمي GID للمجموعة التي تشغل الأمر. في حالة مثيل النظام، يُحل هذا إلى 0. |
| "%h" | دليل منزل المستخدم | هذا هو الدليل الرئيسي للمستخدم الذي يشغل الأمر. في حالة مثيل النظام، يُحل هذا إلى "/root". |
| "%H" | اسم المضيف | اسم مضيف النظام المشغل. |
| "%l" | اسم المضيف القصير | اسم مضيف النظام المشغل، مقتطعًا عند النقطة الأولى لإزالة أي مكون نطاق. |
| "%L" | دليل السجل للنظام أو المستخدم | في وضع --user، يكون هذا مماثلاً لـ $XDG_STATE_HOME مع إلحاق /log، و/var/log خلاف ذلك. |
| "%m" | معرف الآلة | معرف الجهاز للنظام المشغل، منسق كسلسلة نصية. انظر machine-id(5) لمزيد من المعلومات. |
| "%M" | معرف صورة نظام التشغيل | معرف صورة نظام التشغيل للنظام المشغل، كما يُقرأ من حقل IMAGE_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات. |
| "%o" | معرف نظام التشغيل | معرف نظام التشغيل للنظام المشغل، كما يُقرأ من حقل ID= في /etc/os-release. انظر os-release(5) لمزيد من المعلومات. |
| "%q" | اسم المضيف الجميل | اسم المضيف الجميل للنظام المشغل، كما يُقرأ من حقل PRETTY_HOSTNAME= في /etc/machine-info. إذا لم يُضبط، يُحل إلى اسم المضيف القصير. انظر machine-info(5) لمزيد من المعلومات. |
| "%S" | دليل الحالة للنظام أو المستخدم | في وضع --user، يكون هذا مماثلاً لـ $XDG_STATE_HOME، و/var/lib خلاف ذلك. |
| "%t" | دليل وقت التشغيل للنظام أو المستخدم | في وضع --user، يكون هذا مماثلاً لـ $XDG_RUNTIME_DIR، و/run/ خلاف ذلك. |
| "%T" | مجلد للملفات المؤقتة | هذا إما /tmp أو المسار الذي ضُبطت إليه "$TMPDIR" أو "$TEMP" أو "$TMP". (لاحظ أن الدليل قد يُحدد بدون شرطة مائلة لاحقة.) |
| "%u" | اسم المستخدم | هذا هو اسم المستخدم الذي يشغل الأمر. في حالة مثيل النظام، يُحل هذا إلى "root". |
| "%U" | معرف المستخدم (UID) | هذا هو المعرف الرقمي UID للمستخدم الذي يشغل الأمر. في حالة مثيل النظام، يُحل هذا إلى 0. |
| "%v" | إصدار النواة | مطابق لمخرجات uname -r. |
| "%V" | مجلد للملفات المؤقتة الأكبر حجمًا والمستمرة | هذا إما /var/tmp أو المسار الذي ضُبطت إليه "$TMPDIR" أو "$TEMP" أو "$TMP". (لاحظ أن الدليل قد يُحدد بدون شرطة مائلة لاحقة.) |
| "%w" | معرف إصدار نظام التشغيل | معرف إصدار نظام التشغيل للنظام المشغل، كما يُقرأ من حقل VERSION_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات. |
| "%W" | معرف نوع نظام التشغيل | معرف تنويعة نظام التشغيل للنظام المشغل، كما يُقرأ من حقل VARIANT_ID= في /etc/os-release. إذا لم يُضبط، يُحل إلى سلسلة فارغة. انظر os-release(5) لمزيد من المعلومات. |
| "%%" | علامة مئوية مفردة | استخدم "%%" بدلاً من "%" لتحديد علامة مئوية مفردة. |
أمثلة¶
مثال 1. إنشاء أدلة بوضع وملكية محددين
يحتاج screen(1) إلى دليلين يُنشأن عند الإقلاع بوضع وملكية محددين:
# /usr/lib/tmpfiles.d/screen.conf d /run/screens 1777 root screen 10d d /run/uscreens 0755 root screen 10d12h
ستُنظف محتويات /run/screens و/run/uscreens بعد 10 و10½ يومًا، على التوالي.
مثال 2. إنشاء دليل بسمة SMACK
D /run/cups - - - - t /run/cups - - - - security.SMACK64=printing user.attr-with-spaces="foo bar"
سيكون الدليل مملوكًا لـ root وله وضع مبدئي. لا تخضع محتوياته للتنظيف المستند إلى الوقت، ولكن ستُمحى عند تشغيل systemd-tmpfiles --remove.
مثال 3. إنشاء دليل ومنع تنظيف محتوياته
يحتاج abrt(1) إلى دليل يُنشأ عند الإقلاع بصلاحيات وملكية محددة، ويجب الحفاظ على محتواه من التنظيف الآلي المطبق على محتويات /var/tmp:
# /usr/lib/tmpfiles.d/tmp.conf d /var/tmp 1777 root root 30d
# /usr/lib/tmpfiles.d/abrt.conf d /var/tmp/abrt 0755 abrt abrt -
مثال 4. تطبيق التنظيف أثناء الإقلاع وبناءً على الوقت
# /usr/lib/tmpfiles.d/dnf.conf r! /var/cache/dnf/*/*/download_lock.pid r! /var/cache/dnf/*/*/metadata_lock.pid r! /var/lib/dnf/rpmdb_lock.pid e /var/cache/dnf/ - - - 30d
ستُحذف ملفات القفل أثناء الإقلاع. ستُحذف أي ملفات وأدلة في /var/cache/dnf/ بعد عدم الوصول إليها لمدة 30 يومًا.
مثال 5. إفراغ محتويات دليل خبيئة عند الإقلاع
# /usr/lib/tmpfiles.d/krb5rcache.conf e! /var/cache/krb5rcache - - - 0
ستُحذف أي ملفات وأدلة فرعية في /var/cache/krb5rcache/ عند الإقلاع. لن يُنشأ الدليل.
مثال 6. توفير الوصول بالمفتاح العام SSH للمستخدم الجذر عبر بيانات الاعتماد في QEMU
-smbios type=11,value=io.systemd.credential.binary:tmpfiles.extra=$(echo -e "d /root/.ssh 0750 root root -\nf~ /root/.ssh/authorized_keys 0600 root root - $(ssh-add -L | base64 -w 0)" | base64 -w 0)
بتمرير هذا السطر إلى QEMU، سيُرمّز المفتاح العام للمستخدم الحالي بـ base64، ويُضاف إلى سطر tmpfiles.d يخبر systemd-tmpfiles(8) بفك ترميزه إلى /root/.ssh/authorized_keys، وترميز ذلك السطر نفسه بـ base64 وتمريره كبيانات اعتماد ستلتقطها systemd من SMBIOS عند الإقلاع.
/RUN/ AND /VAR/RUN/¶
/var/run/ رابط رمزي مهمل إلى /run/، ويجب على التطبيقات استخدام الأخير. سيُصدر systemd-tmpfiles تحذيرًا إذا استُخدم /var/run/.
انظر أيضًا¶
systemd(1), systemd-tmpfiles(8), systemd-delta(1), systemd.exec(5), attr(5), getfattr(1), setfattr(1), setfacl(1), getfacl(1), chattr(1), btrfs-subvolume(8), btrfs-qgroup(8)
ملاحظات¶
- 1.
- مفكوك الترميز بـ Base64
- 2.
- بيانات اعتماد النظام والخدمة
- 3.
- ملاحظات حول قابلية حل أسماء المستخدمين والمجموعات
ترجمة¶
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com> و #
هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.
إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.
| systemd 261~rc3 |