'\" t .\" Title: setpriv .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-05-18 .\" Manual: أوامر المستخدم .\" Source: util-linux 2.42.1 .\" Language: English .\" .TH "SETPRIV" "1" "2026-05-18" "util\-linux 2.42.1" "أوامر المستخدم" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "الاسم" setpriv \- شغّل برنامجاً بإعدادات امتيازات لينكس مختلفة .SH "موجز" .sp \fBsetpriv\fP [خيارات] \fIبرنامج\fP \fIوسائط\fP] .SH "الوصف" .sp يضبط أو يستعلم عن إعدادات امتيازات لينكس المتنوعة التي تُورّث عبر \fBexecve\fP(2). .sp بالمقارنة مع \fBsu\fP(1) و \fBrunuser\fP(1)، لا يستخدم \fBsetpriv\fP الاستيثاق عبر PAM، ولا يطلب كلمة سر. هو غلاف بسيط، ليس من فئة set\-user\-ID، حول \fBexecve\fP(2)، ويمكن استخدامه للتخلي عن الامتيازات بنفس طريقة \fBsetuidgid\fP(8) من \fBdaemontools\fP، أو \fBchpst\fP(8) من \fBrunit\fP، أو أدوات مماثلة تُشحن مع مديري الخدمات الآخرين. .SH "الخيارات" .sp \fB\-\-clear\-groups\fP .RS 4 امسح المجموعات التكميلية. .RE .sp \fB\-d\fP، \fB\-\-dump\fP .RS 4 تفريغ حالة الامتيازات الحالية. يمكن تحديد هذا الخيار أكثر من مرة لإظهار معلومات إضافية، أغلبها غير مفيد. لا يتوافق مع جميع الخيارات الأخرى. .RE .sp \fB\-\-groups\fP \fIgroup\fP.\|.\|. .RS 4 اضبط المجموعات التكميلية. المعطى هو قائمة مفصولة بفاصلة من معرفات GID أو الأسماء. .RE .sp \fB\-\-inh\-caps\fP (\fB+\fP|\fB\-\fP)\fIcap\fP.\|.\|., \fB\-\-ambient\-caps\fP (\fB+\fP|\fB\-\fP)\fIcap\fP.\|.\|., \fB\-\-bounding\-set\fP (\fB+\fP|\fB\-\fP)\fIcap\fP.\|.\|. .RS 4 اضبط الإمكانيات المورّثة، أو الإمكانيات المحيطة، أو مجموعة حدود الإمكانيات. انظر \fBcapabilities\fP(7). المعطى هو قائمة مفصولة بفاصلة من مدخلات \fB+\fP\fIcap\fP و \fB\-\fP\fIcap\fP، والتي تضيف مدخلاً أو تزيله على التوالي. يمكن لـ \fIcap\fP أن يكون اسماً مقروءاً للبشر كما هو موضح في \fBcapabilities\fP(7) دون البادئة \fIcap_\fP أو بصيغة \fBcap_N\fP، حيث \fIرقم\fP هو فهرس الإمكانية الداخلي المستخدم في لينكس. يمكن استخدام \fB+all\fP و \fB\-all\fP لإضافة أو إزالة جميع الإمكانيات. .sp تبدأ مجموعة الإمكانيات بالمجموعة المورّثة الحالية لـ \fB\-\-inh\-caps\fP، والمجموعة المحيطة الحالية لـ \fB\-\-ambient\-caps\fP، ومجموعة الحدود الحالية لـ \fB\-\-bounding\-set\fP. .sp لاحظ القيود التالية (المفصلة في \fBcapabilities\fP(7)) بخصوص تعديل مجموعات الإمكانيات هذه: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} لا يمكن إضافة إمكانية إلى المجموعة المورّثة إلا إذا كانت موجودة حالياً في مجموعة الحدود. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} لا يمكن إضافة إمكانية إلى المجموعة المحيطة إلا إذا كانت موجودة حالياً في كل من مجموعتي الإمكانيات المسموح بها والمورّثة. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} بغض النظر عن الصيغة التي يوفرها \fBsetpriv\fP، فإن النواة لا تسمح بإضافة إمكانيات إلى مجموعة الحدود. .RE .sp إذا حذفت قدرة من مجموعة الحدود دون حذفها أيضاً من المجموعة الموروثة، فمن المرجح أن يحدث ارتباك. لا تفعل ذلك. .RE .sp \fB\-\-keep\-groups\fP .RS 4 احفظ المجموعات الإضافية. مفيد فقط بالتزامن مع \fB\-\-rgid\fP، أو \fB\-\-egid\fP، أو \fB\-\-regid\fP. .RE .sp \fB\-\-init\-groups\fP .RS 4 بدء المجموعات التكميلية باستخدام initgroups3. مفيد فقط بالاقتران مع \fB\-\-ruid\fP أو \fB\-\-reuid\fP. .RE .sp \fB\-\-list\-caps\fP .RS 4 اسرد جميع القدرات المعروفة. يجب تحديد هذا الخيار بمفرده. .RE .sp \fB\-\-nnp\fP, \fB\-\-no\-new\-privs\fP .RS 4 ضبط بت \fIno_new_privs\fP. عند ضبط هذا البت، لن يمنح \fBexecve\fP(2) امتيازات جديدة. على سبيل المثال، ستُعطل بتات set\-user\-ID و set\-group\-ID بالإضافة إلى قدرات الملفات. (تنفيذ الملفات الثنائية مع ضبط هذه البتات سيظل يعمل، لكنها لن تكتسب امتيازات. بعض أنظمة LSM، وخاصة AppArmor، قد تؤدي إلى فشل تنفيذ برامج معينة.) يُورث هذا البت بواسطة العمليات التابعة ولا يمكن إلغاء ضبطه. انظر \fBprctl\fP(2) و \fIDocumentation/prctl/no_new_privs.txt\fP في مصدر نواة لينكس. .sp بت \fIno_new_privs\fP متاح منذ لينكس 3.5. .RE .sp \fB\-\-rgid\fP \fIgid\fP، \fB\-\-egid\fP \fIgid\fP، \fB\-\-regid\fP \fIgid\fP .RS 4 اضبط معرفات المجموعات (GIDs) الحقيقية أو الفعالة أو كلتيهما. يمكن إعطاء المعامل \fIgid\fP كاسم نصي للمجموعة. .sp للأمان، يجب تحديد أحد الخيارات \fB\-\-clear\-groups\fP أو \fB\-\-groups\fP أو \fB\-\-keep\-groups\fP أو \fB\-\-init\-groups\fP إذا ضُبط أي معرف مجموعة (\fIgid\fP) أساسي. .RE .sp \fB\-\-ruid\fP \fIuid\fP، \fB\-\-euid\fP \fIuid\fP، \fB\-\-reuid\fP \fIuid\fP .RS 4 اضبط معرفات المستخدمين (UIDs) الحقيقية أو الفعالة أو كلتيهما. يمكن إعطاء المعامل \fIuid\fP كاسم نصي للولوج. .sp إن ضبط \fIuid\fP أو \fIgid\fP لا يغير القدرات، رغم أن استدعاء exec في النهاية قد يغيرها. هذا يعني أنك إذا كنت مستخدمًا جذرًا (root)، فستحتاج على الأرجح للقيام بشيء مثل: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-inh\-caps=\-all\fP .RE .sp \fB\-\-securebits\fP (\fB+\fP|\fB\-\fP)\fIsecurebit\fP.\|.\|. .RS 4 اضبط بتات الأمان (securebits) أو امسحها. المعامل عبارة عن قائمة مفصولة بفاصلة. بتات الأمان الصالحة هي \fInoroot\fP و \fInoroot_locked\fP و \fIno_setuid_fixup\fP و \fIno_setuid_fixup_locked\fP و \fIkeep_caps_locked\fP. يُمسح \fIkeep_caps\fP بواسطة \fBexecve\fP(2) ولذلك لا يُسمح به. .RE .sp \fB\-\-pdeathsig keep\fP|\fBclear\fP|\fB<إشارة>\fP .RS 4 أبقِ على إشارة موت العملية الأب أو امسحها أو اضبطها. تقوم بعض وحدات أمان لينكس (LSMs)، وأبرزها SELinux و AppArmor، بمسح الإشارة عندما تتغير بيانات استيثاق العملية. سيؤدي استخدام \fB\-\-pdeathsig keep\fP إلى استعادة إشارة موت العملية الأب بعد تغيير بيانات الاستيثاق لمعالجة تلك الحالة. .RE .sp \fB\-\-ptracer\fP \fIمعرّف\-العملية\fP|\fBany\fP|\fBnone\fP .RS 4 عندما يكون وضع ptrace المقيد الخاص بـ Yama فعالًا (أي عندما يُضبط \fI/proc/sys/kernel/yama/ptrace_scope\fP على 1)، اسمح بتتبع العملية عبر \fBptrace\fP(2) بواسطة العملية ذات معرف PID المحدد، أو أي عملية، أو لا عملية. انظر \fBPR_SET_PTRACER\fP(2const). (لاحظ أن هذا لا يورث للعمليات الابنة، رغم أنه يُحفظ عبر \fBexecve\fP(2).) ليس لهذا الخيار أي تأثير عندما لا يكون Yama مفعلًا أو يكون في وضع آخر غير ptrace المقيد. .RE .sp \fB\-\-selinux\-label\fP \fIلصيقة\fP .RS 4 اطلب انتقال SELinux محددًا (باستخدام انتقال عند التنفيذ exec، وليس dyntrans). سيفشل هذا ويؤدي إلى إنهاء \fBsetpriv\fP إذا لم يكن SELinux قيد الاستخدام، وقد يُتجاهل الانتقال أو يتسبب في فشل \fBexecve\fP(2) وفقًا لتقدير SELinux. (على وجه الخصوص، من غير المرجح أن يعمل هذا بالتزامن مع \fIno_new_privs\fP). هذا مشابه لـ \fBruncon\fP(1). .RE .sp \fB\-\-apparmor\-profile\fP \fIتشكيلة\fP .RS 4 اطلب تشكيلة AppArmor محددة (باستخدام انتقال عند التنفيذ exec). سيفشل هذا ويؤدي إلى إنهاء \fBsetpriv\fP إذا لم يكن AppArmor قيد الاستخدام، وقد يُتجاهل الانتقال أو يتسبب في فشل \fBexecve\fP(2) وفقًا لتقدير AppArmor. .RE .sp \fB\-\-landlock\-access\fP \fIوصول\fP .RS 4 فعل قيود landlock لمجموعة محددة من عمليات وصول النظام. للسماح لمجموعات فرعية محددة من الوصول، استخدم \fB\-\-landlock\-rule\fP. .sp احظر كل وصول لنظام الملفات: .sp \fBsetpriv \-\-landlock\-access fs\fP .sp احظر كل عمليات حذف الملفات وإنشاء الأدلة: .sp \fBsetpriv \-\-landlock\-access fs:remove\-file,make\-dir\fP .sp للحصول على مجموعة كاملة من فئات الوصول المتاحة، استخدم \fBsetpriv \-\-help\fP. .sp العنصر النائب العام "fs" عرضة للتغيير وقد يمتد في الإصدارات المستقبلية لدعم أنواع وصول جديدة. .RE .sp \fB\-\-landlock\-rule\fP \fIدور\fP .RS 4 اسمح بوصول واحد محدد من الفئات المحظورة بواسطة \fB\-\-landlock\-access\fP. .sp الصيغة كالتالي: .sp \fB\-\-landlock\-rule $ruletype:$access:$rulearg\fP .sp على سبيل المثال، امنح وصول قراءة الملفات لكل شيء تحت \fB/boot\fP: .sp \fB\-\-landlock\-rule path\-beneath:read\-file:/boot\fP .RE .sp \fB\-\-seccomp\-filter\fP \fIملف\fP .RS 4 حمّل كود مرشح BPF seccomp الخام من ملف. .sp يمكن إنشاء المرشحات على سبيل المثال باستخدام \fBenosys\fP. .RE .sp \fB\-\-reset\-env\fP .RS 4 .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} يمسح جميع متغيرات البيئة باستثناء متغير البيئة \fBTERM\fP .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} يهيئ متغيرات البيئة \fBHOME\fP، و \fBSHELL\fP، و \fBUSER\fP، و \fBLOGNAME\fP وفقاً لمدخلة passwd الخاصة بالمستخدم .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} متغير البيئة \fBSHELL\fP يكون \fB/bin/sh\fP مبدئياً إذا لم يُعطَ أي منها في مدخلة passwd الخاصة بالمستخدم. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} يعيد ضبط متغير البيئة \fBPATH\fP وفقاً للإعداد في \fI/etc/login.defs\fP (المتغيرات \fBENV_PATH\fP، أو \fBENV_SUPATH\fP، أو \fBENV_ROOTPATH\fP)، أو يكون \fI/usr/local/bin:/bin:/usr/bin\fP مبدئياً للمستخدم العادي و \fI/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin\fP للمستخدم الخارق. .sp قد يختلف متغير البيئة \fBPATH\fP في الحواسيب التي دُمج فيها \fI/bin\fP و \fI/sbin\fP داخل \fI/usr\fP. .RE .RE .sp \fB\-h\fP، \fB\-\-help\fP .RS 4 اعرض نص المساعدة ثم اخرج. .RE .sp \fB\-V\fP، \fB\-\-version\fP .RS 4 اعرض الإصدار واخرج. .RE .SH "ملاحظات" .sp إذا فشل تطبيق أي خيار محدد، فلن يُشغل \fIبرنامج\fP وسيعود \fBsetpriv\fP بحالة خروج 127. .sp كن حذرًا مع هذه الأداة \(em فقد يكون لها تبعات أمنية غير متوقعة. على سبيل المثال، قد يؤدي ضبط \fIno_new_privs\fP ثم تنفيذ برنامج مقيد بواسطة SELinux (كما تفعل هذه الأداة) إلى منع قيود SELinux من العمل. .SH "أمثلة" .sp إذا كنت تبحث عن سلوك مشابه لـ \fBsu\fP(1)/\fBrunuser\fP(1)، أو \fBsudo\fP(8) (دون الخيار \fB\-g\fP)، جرب شيئاً مثل: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-init\-groups\fP .sp إذا كنت تريد محاكاة \fBsetuid\fP(8) الخاصة بـ daemontools، جرب: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-clear\-groups\fP .SH "المؤلفين" .sp .MTO "luto\(atamacapital.net" "Andy Lutomirski" "" .SH "انظر أيضاً" .sp \fBrunuser\fP(1)، \fBsu\fP(1)، \fBprctl\fP(2)، \fBcapabilities\fP(7)، \fBlandlock\fP(7) .SH "التبليغ عن الأخطاء" .sp لتقارير العِلل، استخدم \c .URL "https://github.com/util\-linux/util\-linux/issues" "مُتتبع المشكلات" "." .SH "التوفر" .sp الأمر \fBsetpriv\fP جزء من حزمة util\-linux التي يمكن تنزيلها من \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux/" "أرشيف نواة لينكس" "."