umask(2)

الاسم
umask - تعيين قناع إنشاء وضع الملف

المكتبة
مكتبة سي المعيارية (libc، -lc)

موجز
#include <sys/stat.h>

mode_t umask(mode_t mask);

الوصف
تضبط umask() قناع إنشاء وضع الملف (umask) للعملية المستدعية إلى mask & 0777 (أي، تُستخدم فقط بتات صلاحية الملف من mask)، وتُعيد القيمة السابقة للقناع.

تستخدم open(2) و mkdir(2) وغيرها من استدعاءات النظام التي تنشئ ملفات الـ umask لتعديل الصلاحيات الموضوعة على الملفات أو الأدلة المنشأة حديثًا. وتحديدًا، تُعطل الصلاحيات الموجودة في umask من معطى mode الخاص بـ open(2) و mkdir(2).

بدلاً من ذلك، إذا كان للدليل الأب قائمة تحكم بالوصول (ACL) مبدئية (انظر acl(5))، يُتجاهل umask، وتُورث قائمة التحكم بالوصول المبدئية، وتُضبط بتات الصلاحية بناءً على قائمة التحكم بالوصول الموروثة، وتُعطل بتات الصلاحية الغائبة في معطى mode. على سبيل المثال، قائمة التحكم بالوصول المبدئية التالية تعادل umask بقيمة 022:

    u::rwx,g::r-x,o::r-x

بدمج تأثير قائمة التحكم بالوصول المبدئية هذه مع معطى mode بقيمة 0666 (rw-rw-rw-)، ستكون صلاحيات الملف الناتجة هي 0644 (rw-r--r--).

الثوابت التي ينبغي استخدامها لتحديد masks موصوفة في inode(7).

القيمة المبدئية النموذجية لـ umask العملية هي S_IWGRP | S_IWOTH (ثماني 022). في الحالة المعتادة حيث يُحدد معطى mode لـ open(2) على النحو التالي:

    S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH

(ثماني 0666) عند إنشاء ملف جديد، ستكون الصلاحيات على الملف الناتج هي:

    S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH

(لأن 0666 & ~022 = 0644؛ أي rw-r--r--).

قيمة الإرجاع
ينجح استدعاء النظام هذا دائمًا وتُعاد القيمة السابقة للقناع.

المعايير
POSIX.1-2008.

التاريخ
POSIX.1-2001، SVr4، 4.3BSD.

ملاحظات
ترث العملية الابنة المنشأة عبر fork(2) قناع umask الخاص بوالدها. ويظل umask دون تغيير بعد execve(2).

من المستحيل استخدام umask() لجلب umask لعملية ما دون تغييره في نفس الوقت. ستكون هناك حاجة لاستدعاء ثانٍ لـ umask() لاستعادة القناع. إن عدم ذرية هاتين الخطوتين يفتح المجال لحالات السباق (races) في البرامج متعددة الخيوط.

منذ لينكس 4.7، يمكن عرض umask لأي عملية عبر حقل Umask في /proc/pid/status. يسمح فحص هذا الحقل في /proc/self/status للعملية باستعادة umask الخاص بها دون تغييره في نفس الوقت.

يؤثر إعداد umask أيضًا على الصلاحيات المسندة إلى كائنات POSIX IPC‏ (mq_open(3)، و sem_open(3)، و shm_open(3))، والأنابيب المسمى (FIFOs) ‏(mkfifo(3))، ومقابس نطاق يونكس (unix(7)) التي تنشئها العملية. لا يؤثر umask على الصلاحيات المسندة إلى كائنات System V IPC التي تنشئها العملية (باستخدام msgget(2)، و semget(2)، و shmget(2)).

انظر أيضًا
chmod(2), mkdir(2), open(2), stat(2), acl(5)

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

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

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