'\" t .\" Title: setpriv .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.26 .\" Date: 2026-09-02 .\" Manual: User Commands .\" Source: util-linux 2.42.3 .\" Language: Persian .\" .TH "SETPRIV" "1" "2026-09-02" "util\-linux 2.42.3" "دستورات کاربر" .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 "نام (NAME)" setpriv \- اجرای برنامه با امتیازات و محدودیت‌های دسترسی مشخص .SH "خلاصه دستور (SYNOPSIS)" .sp \fBsetpriv\fP [options] \fIprogram\fP [\fIarguments\fP] .SH "توضیحات (DESCRIPTION)" .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 "گزینه‌ها (OPTIONS)" .sp \fB\-\-clear\-groups\fP .RS 4 پاک‌سازی گروه‌های تکمیلی (supplementary groups). .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 تنظیم قابلیت‌های قابل توارث (inheritable capabilities)، قابلیت‌های محیطی (ambient capabilities) یا مجموعه‌مرز قابلیت‌ها (capability bounding set). به \fBcapabilities\fP(7) مراجعه کنید. آرگومان فهرستی جداشده با کاما از موارد \fB+\fP\fIcap\fP و \fB\-\fP\fIcap\fP است که به ترتیب یک مورد را اضافه یا حذف می‌کنند. \fIcap\fP می‌تواند یک نام قابل خواندن برای انسان همان‌طور که در \fBcapabilities\fP(7) بدون پیشوند \fIcap_\fP دیده می‌شود باشد، یا به قالب \fBcap_N\fP که در آن \fIN\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 .\} یک قابلیت تنها در صورتی می‌تواند به مجموعه قابل توارث اضافه شود که در حال حاضر در مجموعه‌مرز (bounding set) وجود داشته باشد. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} یک قابلیت تنها در صورتی می‌تواند به مجموعه محیطی اضافه شود که در حال حاضر هم در مجموعه مجاز (permitted) و هم در مجموعه قابل توارث وجود داشته باشد. .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 از نسخه لینوکس ۳.۵ پشتیبانی می‌شود. .RE .sp \fB\-\-rgid\fP \fIgid\fP, \fB\-\-egid\fP \fIgid\fP, \fB\-\-regid\fP \fIgid\fP .RS 4 تنظیم GIDهای واقعی (real)، مؤثر (effective) یا هر دو. آرگومان \fIgid\fP می‌تواند به صورت نام متنی گروه داده شود. .sp برای ایمنی، اگر هر \fIgid\fP اصلی را تنظیم کنید، باید یکی از گزینه‌های \fB\-\-clear\-groups\fP، \fB\-\-groups\fP، \fB\-\-keep\-groups\fP یا \fB\-\-init\-groups\fP را مشخص کنید. .RE .sp \fB\-\-ruid\fP \fIuid\fP, \fB\-\-euid\fP \fIuid\fP, \fB\-\-reuid\fP \fIuid\fP .RS 4 تنظیم UIDهای واقعی (real)، مؤثر (effective) یا هر دو. آرگومان \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. آرگومان فهرستی جداشده با کاما است. securebitهای معتبر عبارتند از \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 حفظ، پاک‌سازی یا تنظیم سیگنال مرگ والد (parent death signal). برخی LSMها، به ویژه SELinux و AppArmor، هنگامی که اطلاعات احراز هویت فرایند تغییر می‌کند این سیگنال را پاک می‌کنند. استفاده از \fB\-\-pdeathsig keep\fP سیگنال مرگ والد را پس از تغییر اطلاعات احراز هویت برای اصلاح این وضعیت بازیابی می‌کند. .RE .sp \fB\-\-ptracer\fP \fIpid\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 \fIlabel\fP .RS 4 درخواست یک گذار (transition) خاص SELinux (با استفاده از transition هنگام exec، نه dyntrans). اگر SELinux در حال استفاده نباشد، این مورد با شکست مواجه شده و باعث خاتمه غیرعادی \fBsetpriv\fP می‌شود، و ممکن است گذار بر اساس صلاحدید SELinux نادیده گرفته شود یا باعث شکست \fBexecve\fP(2) گردد. (به ویژه، بعید است که این گزینه در ترکیب با \fIno_new_privs\fP کار کند.) این مشابه \fBruncon\fP(1) است. .RE .sp \fB\-\-apparmor\-profile\fP \fIprofile\fP .RS 4 درخواست یک نمایه (profile) خاص AppArmor (با استفاده از گذار در هنگام exec). اگر AppArmor در حال استفاده نباشد، این مورد با شکست مواجه شده و باعث خاتمه غیرعادی \fBsetpriv\fP می‌شود، و ممکن است گذار بر اساس صلاحدید AppArmor نادیده گرفته شود یا باعث شکست \fBexecve\fP(2) گردد. .RE .sp \fB\-\-landlock\-access\fP \fIaccess\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 \fIrule\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 \fIfile\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 در صورتی که مقداری در مدخل passwd کاربر داده نشده باشد، به طور پیش‌فرض روی \fB/bin/sh\fP قرار می‌گیرد. .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 و برای root روی \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 "نکات (NOTES)" .sp اگر اعمال هر یک از گزینه‌های مشخص‌شده با شکست مواجه شود، \fIprogram\fP اجرا نخواهد شد و \fBsetpriv\fP با وضعیت خروج ۱۲۷ بازمی‌گردد. .sp هنگام استفاده از این ابزار مراقب باشید \(em ممکن است عواقب امنیتی غیرمنتظره‌ای داشته باشد. به عنوان مثال، تنظیم \fIno_new_privs\fP و سپس اجرای برنامه‌ای که توسط SELinux محدود شده است (همان‌طور که این ابزار انجام می‌دهد) ممکن است از اعمال محدودیت‌های SELinux جلوگیری کند. .SH "مثال‌ها (EXAMPLES)" .sp توجه داشته باشید که \fBsetpriv\fP یک جایگزین ۱:۱ برای \fBsu\fP(1)، \fBrunuser\fP(1) یا \fBsudo\fP(8) نیست. برخلاف آن ابزارها، \fBsetpriv\fP از PAM استفاده نمی‌کند، گذرواژه‌ای درخواست نمی‌نماید، و راه‌اندازی نشست یا محاسبات آماری (accounting) را انجام نمی‌دهد. مثال‌های زیر یک نقطه شروع برای سناریوهای رایج کاهش امتیازات فراهم می‌کنند. .sp اگر می‌خواهید UID/GIDها را مشابه \fBrunuser\fP(1) (بدون \fB\-\-login\fP) تغییر دهید، این مورد را امتحان کنید: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-inh\-caps=\-all \-\-init\-groups\fP .sp برای بازنشانی محیط نیز (همان‌طور که \fBsudo\fP(8) به طور پیش‌فرض انجام می‌دهد)، گزینه \fB\-\-reset\-env\fP را اضافه کنید: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-inh\-caps=\-all \-\-init\-groups \-\-reset\-env\fP .sp برای یک پیکربندی محدودتر که مجموعه‌مرز را نیز محدود کرده و از کسب امتیازات جدید جلوگیری می‌کند (محدودتر از \fBrunuser\fP یا \fBsudo\fP): .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-init\-groups \-\-inh\-caps=\-all \-\-bounding\-set=\-all \-\-no\-new\-privs \-\-reset\-env\fP .sp اگر می‌خواهید رفتار \fBsetuid\fP(8) از daemontools را تقلید کنید، این مورد را امتحان کنید: .sp \fBsetpriv \-\-reuid=1000 \-\-regid=1000 \-\-clear\-groups\fP .SH "نویسندگان (AUTHORS)" .sp .MTO "luto\(atamacapital.net" "Andy Lutomirski" "" .SH "همچنین ببینید (SEE ALSO)" .sp \fBrunuser\fP(1), \fBsu\fP(1), \fBprctl\fP(2), \fBcapabilities\fP(7), \fBlandlock\fP(7) .SH "گزارش باگ‌ها (REPORTING BUGS)" .sp برای گزارش باگ‌ها، از \c .URL "https://github.com/util\-linux/util\-linux/issues" "سامانه پیگیری مشکلات" "." استفاده کنید. .SH "دسترس‌پذیری (AVAILABILITY)" .sp دستور \fBsetpriv\fP بخشی از بسته util\-linux است که می‌تواند از \c .URL "https://www.kernel.org/pub/linux/utils/util\-linux" "بایگانی هسته لینوکس" "." دریافت شود.