NSS-SYSTEMD(8)

الاسم
nss-systemd، libnss_systemd.so.2 - تحليل أسماء المستخدمين والمجموعات في يونكس للبحث عن المستخدم/المجموعة عبر Varlink

موجز

libnss_systemd.so.2

الوصف

nss-systemd هي وحدة إضافية لوظيفة GNU Name Service Switch (NSS) لمكتبة GNU C (glibc)، توفر تحليل أسماء المستخدمين والمجموعات في يونكس للخدمات التي تنفذ واجهة برمجة تطبيقات البحث عن سجلات المستخدم/المجموعة عبر Varlink[1]، مثل مدير النظام والخدمات systemd(1) (لميزة DynamicUser= الخاصة به، انظر systemd.exec(5) للتفاصيل)، أو systemd-homed.service(8)، أو systemd-machined.service(8).

تضمن هذه الوحدة أيضًا بقاء المستخدمين والمجموعات root وnobody (أي المستخدمين/المجموعات ذات UIDs/GIDs 0 و65534) قابلة للحل في جميع الأوقات، حتى إذا لم تكن مدرجة في /etc/passwd أو /etc/group، أو إذا كانت هذه الملفات مفقودة.

تستخدم هذه الوحدة بشكل مفضل systemd-userdbd.service(8) لحل المستخدمين والمجموعات، ولكنها تعمل أيضًا بدون تشغيل الخدمة.

لتفعيل وحدة NSS، أضف "systemd" إلى الأسطر التي تبدأ بـ "passwd:" و"group:" و"shadow:" و"gshadow:" في /etc/nsswitch.conf.

يوصى بوضع "systemd" بعد إدخال "files" في أسطر /etc/nsswitch.conf بحيث تكون التعيينات المستندة إلى /etc/passwd و/etc/group و/etc/shadow و/etc/gshadow ذات أولوية.

سجلات JSON الثابتة للمستخدم/المجموعة

بالإضافة إلى سجلات المستخدم/المجموعة التي تم الحصول عليها عبر واجهات Varlink IPC المذكورة أعلاه وحسابات root وnobody المُركبة، توفر هذه الوحدة أيضًا حسابات المستخدمين والمجموعات للنظام المُعرفة في ملفات إدراج ثابتة في الدلائل /etc/userdb/ و/run/userdb/ و/run/host/userdb/ و/usr/lib/userdb/.

هذه آلية بسيطة لتوفير سجلات ثابتة للمستخدمين والمجموعات عبر ملفات إدراج JSON. يجب تعريف سجلات المستخدم هذه بالتنسيق الموصوف في مواصفات سجلات مستخدم JSON[2] ووضعها في أحد الدلائل المذكورة أعلاه تحت اسم ملف مكون من اسم المستخدم مع اللاحقة .user، مع وضع وصول قابل للقراءة للجميع. يجب أيضًا إنشاء رابط رمزي باسم UID لسجل المستخدم المنسق عشريًا مع اللاحقة .user يشير إلى ملف السجل الرئيسي، للسماح بالبحث باسم المستخدم وبـ UID. يمكن أيضًا توفير بيانات سجل المستخدم المميزة (مثل كلمات مرور يونكس المُجزأة) اختياريًا، في زوج من ملفات الرفيق المنفصلة مع اللاحقة .user-privileged. يجب تخزين البيانات في ملف عادي باسم المستخدم، مع اللاحقة .user-privileged، ورابط رمزي يشير إليه، باسم UID الرقمي المستخدم المنسق عشريًا مع نفس اللاحقة. يجب ألا تكون ملفات الرفيق هذه قابلة للقراءة لأي شخص باستثناء root. مثال:

    -rw-r--r--. 1 root root  723 May 10 foobar.user
    -rw-------. 1 root root  123 May 10 foobar.user-privileged
    lrwxrwxrwx. 1 root root   19 May 10 4711.user -> foobar.user
    lrwxrwxrwx. 1 root root   19 May 10 4711.user-privileged -> foobar.user-privileged

بالمثل، يمكن تعريف سجلات المجموعة باتباع التنسيق الموصوف في سجل مجموعة JSON[3]، باستخدام لاحقات الملف .group و.group-privileged.

يجب ألا تحتوي ملفات سجل المستخدم/المجموعة الرئيسية (أي تلك ذات اللواحق .user و.group) على القسم "privileged" كما هو موصوف في المواصفات. يجب أن تحتوي ملفات سجل المستخدم/المجموعة المميزة (أي تلك ذات اللواحق .user-privileged و.group-privileged) على هذا القسم حصريًا.

بالإضافة إلى نوعي ملفات سجل المستخدم ونوعي ملفات سجل المجموعة، هناك نوع خامس من الملفات يمكن وضعه في الدلائل التي يتم البحث فيها: ملفات تشير إلى عضوية المستخدمين في المجموعات. على وجه التحديد، لكل زوج مستخدم/مجموعة حيث يجب أن يكون المستخدم عضوًا في مجموعة، يجب إنشاء ملف باسم "username:groupname.membership"، أي اسم مستخدم يونكس النصي، متبوعًا بنقطتين، متبوعًا باسم مجموعة يونكس النصي، مع اللاحقة ".membership". محتويات هذه الملفات لا تُقرأ حاليًا، ومع ذلك يُوصى بإنشائها تحتوي على كائن JSON فارغ (أي "{}"). مجرد وجود هذه الملفات كافٍ للتأثير على عضوية المستخدم/المجموعة. إذا قدم برنامج ملفات سجل المستخدم و/أو المجموعة في الدلائل التي يتم البحث فيها، فيجب عليه دائمًا إنشاء هذه الملفات أيضًا، لكل من العضويات الأساسية والمساعدة في المجموعة.

لاحظ أن سجلات المستخدم/المجموعة الثابتة لا تتجاوز بشكل عام السجلات المتعارضة في /etc/passwd أو /etc/group أو قواعد بيانات الحسابات الأخرى. في الواقع، قبل إدراج هذه الملفات، يجب اتخاذ مستوى معقول من الحذر لتجنب تعارضات أسماء المستخدمين/المجموعات وUID/GID.

خدمة systemd-userdb-load-credentials.service تعمل آليًا عند الإقلاع وتثبت هذه الملفات من سجلات المستخدم التي تم تمريرها عبر بيانات اعتماد النظام. انظر userdbctl(1) وsystemd.system-credentials(7) للتفاصيل.

الضبط في /ETC/NSSWITCH.CONF

هذا مثال لملف /etc/nsswitch.conf الذي يفعل nss-systemd بشكل صحيح:

    passwd:         files systemd
    group:          files [SUCCESS=merge] systemd
    shadow:         files systemd
    gshadow:        files systemd

    hosts:          mymachines resolve [!UNAVAIL=return] files myhostname dns
    networks:       files

    البروتوكولات:      ملفات db
    الخدمات:       ملفات db
    ethers:         ملفات db
    rpc:            ملفات db

    netgroup:       nis

مثال: التعيينات المقدمة من خدمة systemd-machined

يُنشأ الحاوي "rawhide" باستخدام systemd-nspawn(1):

    # systemd-nspawn -M rawhide --boot --network-veth --private-users=pick
    توليد الحاوية rawhide في /var/lib/machines/rawhide.
    اختير نطاق أسماء المستخدمين الأساس 20119552 والمدى 65536.
    ...

    $ machinectl --max-addresses=3
    MACHINE CLASS     SERVICE        OS     VERSION ADDRESSES
    rawhide container systemd-nspawn fedora 30      169.254.40.164 fe80::94aa:3aff:fe7b:d4b9

    $ getent passwd vu-rawhide-0 vu-rawhide-81
    vu-rawhide-0:*:20119552:65534:vu-rawhide-0:/:/usr/sbin/nologin
    vu-rawhide-81:*:20119633:65534:vu-rawhide-81:/:/usr/sbin/nologin

    $ getent group vg-rawhide-0 vg-rawhide-81
    vg-rawhide-0:*:20119552:
    vg-rawhide-81:*:20119633:

    $ ps -o user:15,pid,tty,command -e|grep '^vu-rawhide'
    vu-rawhide-0      692 ?        /usr/lib/systemd/systemd
    vu-rawhide-0      731 ?        /usr/lib/systemd/systemd-journald
    vu-rawhide-192    734 ?        /usr/lib/systemd/systemd-networkd
    vu-rawhide-193    738 ?        /usr/lib/systemd/systemd-resolved
    vu-rawhide-0      742 ?        /usr/lib/systemd/systemd-logind
    vu-rawhide-81     744 ?        /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
    vu-rawhide-0      746 ?        /usr/sbin/sshd -D ...
    vu-rawhide-0      752 ?        /usr/lib/systemd/systemd --user
    vu-rawhide-0      753 ?        (sd-pam)
    vu-rawhide-0     1628 ?        login -- zbyszek
    vu-rawhide-1000  1630 ?        /usr/lib/systemd/systemd --user
    vu-rawhide-1000  1631 ?        (sd-pam)
    vu-rawhide-1000  1637 pts/8    -zsh

انظر أيضًا

systemd(1)، systemd.exec(5)، nss-resolve(8)، nss-myhostname(8)، nss-mymachines(8)، systemd-userdbd.service(8)، systemd-homed.service(8)، systemd-machined.service(8)، userdbctl(1)، systemd.system-credentials(7)، nsswitch.conf(5)، getent(1)

ملاحظات

1.  واجهة برمجة تطبيقات البحث عن سجل المستخدم/المجموعة عبر Varlink
    https://systemd.io/USER_GROUP_API

2.  سجلات مستخدم JSON
    https://systemd.io/USER_RECORD

3.  سجل مجموعة JSON
    https://systemd.io/GROUP_RECORD

ترجمة
تُرجمت هذه الصفحة من الدليل بواسطة زايد السعيدي <zayed.alsaidi@gmail.com>

هذه الترجمة هي وثيقة مجانية؛ راجع رخصة جنو العامة الإصدار 3 (https://www.gnu.org/licenses/gpl-3.0.html) أو ما بعده للاطلاع على شروط حقوق النشر. لا توجد أي ضمانات.

إذا وجدت أي أخطاء في ترجمة صفحة الدليل هذه، يرجى إرسال بريد إلكتروني إلى قائمة بريد المترجمين: kde-l10n-ar@kde.org.