| SETPRIV(1) | دستورات کاربر | SETPRIV(1) |
نام (NAME)
setpriv - اجرای برنامه با امتیازات و محدودیتهای دسترسی مشخص
خلاصه دستور (SYNOPSIS)
setpriv [options] program [arguments]
توضیحات (DESCRIPTION)
تنظیمات مختلف امتیازات لینوکس را که از طریق execve(2) به ارث میرسند، تنظیم یا پرسوجو میکند.
در مقایسه با su(1) و runuser(1)، دستور setpriv نه از PAM استفاده میکند و نه درخواست گذرواژه مینماید. این ابزار یک لفاف ساده و غیر set-user-ID در اطراف execve(2) است و میتواند به همان روشی که setuidgid(8) از daemontools، chpst(8) از runit یا ابزارهای مشابه ارائهشده توسط دیگر مدیران سرویس کار میکنند، برای کاهش و سلب امتیازات استفاده شود.
گزینهها (OPTIONS)
--clear-groups
-d, --dump
--groups group...
--inh-caps (+|-)cap..., --ambient-caps (+|-)cap..., --bounding-set (+|-)cap...
مجموعه قابلیتها برای --inh-caps از مجموعه قابل توارث فعلی، برای --ambient-caps از مجموعه محیطی فعلی، و برای --bounding-set از مجموعه مرزی فعلی آغاز میشود.
به محدودیتهای زیر (به تفصیل در capabilities(7)) در رابطه با تغییرات این مجموعههای قابلیت توجه کنید:
اگر قابلیتی را از مجموعهمرز حذف کنید بدون اینکه آن را از مجموعه قابل توارث نیز حذف کنید، به احتمال زیاد دچار سردرگمی خواهید شد. این کار را انجام ندهید.
--keep-groups
--init-groups
--list-caps
--nnp, --no-new-privs
بیت no_new_privs از نسخه لینوکس ۳.۵ پشتیبانی میشود.
--rgid gid, --egid gid, --regid gid
برای ایمنی، اگر هر gid اصلی را تنظیم کنید، باید یکی از گزینههای --clear-groups، --groups، --keep-groups یا --init-groups را مشخص کنید.
--ruid uid, --euid uid, --reuid uid
تنظیم uid یا gid قابلیتها را تغییر نمیدهد، اگرچه فراخوانی exec در انتها ممکن است قابلیتها را تغییر دهد. این بدان معنی است که اگر شما کاربر root هستید، احتمالاً میخواهید کاری مانند این را انجام دهید:
setpriv --reuid=1000 --regid=1000 --inh-caps=-all
--securebits (+|-)securebit...
--pdeathsig keep|clear|<signal>
--ptracer pid|any|none
--selinux-label label
--apparmor-profile profile
--landlock-access access
مسدود کردن تمام دسترسیهای سیستم فایل:
setpriv --landlock-access fs
مسدود کردن تمام حذفهای فایل و ایجاد دایرکتوریها:
setpriv --landlock-access fs:remove-file,make-dir
برای مجموعه کاملی از دستههای دسترسی پشتیبانیشده از setpriv --help استفاده کنید.
نگهدارنده مکان عمومی "fs" ممکن است تغییر کند و در نسخههای بعدی برای پشتیبانی از انواع دسترسیهای جدید گسترش یابد.
--landlock-rule rule
نحو دستور به شرح زیر است:
--landlock-rule $ruletype:$access:$rulearg
به عنوان مثال، اعطای دسترسی خواندن فایل به همه موارد زیر /boot:
--landlock-rule path-beneath:read-file:/boot
--seccomp-filter file
فیلترها را میتوان به عنوان مثال با enosys ایجاد کرد.
--reset-env
متغیر محیطی PATH ممکن است در سیستمهایی که /bin و /sbin در /usr ادغام شدهاند، متفاوت باشد.
-h, --help
-V, --version
نکات (NOTES)
اگر اعمال هر یک از گزینههای مشخصشده با شکست مواجه شود، program اجرا نخواهد شد و setpriv با وضعیت خروج ۱۲۷ بازمیگردد.
هنگام استفاده از این ابزار مراقب باشید — ممکن است عواقب امنیتی غیرمنتظرهای داشته باشد. به عنوان مثال، تنظیم no_new_privs و سپس اجرای برنامهای که توسط SELinux محدود شده است (همانطور که این ابزار انجام میدهد) ممکن است از اعمال محدودیتهای SELinux جلوگیری کند.
مثالها (EXAMPLES)
توجه داشته باشید که setpriv یک جایگزین ۱:۱ برای su(1)، runuser(1) یا sudo(8) نیست. برخلاف آن ابزارها، setpriv از PAM استفاده نمیکند، گذرواژهای درخواست نمینماید، و راهاندازی نشست یا محاسبات آماری (accounting) را انجام نمیدهد. مثالهای زیر یک نقطه شروع برای سناریوهای رایج کاهش امتیازات فراهم میکنند.
اگر میخواهید UID/GIDها را مشابه runuser(1) (بدون --login) تغییر دهید، این مورد را امتحان کنید:
setpriv --reuid=1000 --regid=1000 --inh-caps=-all --init-groups
برای بازنشانی محیط نیز (همانطور که sudo(8) به طور پیشفرض انجام میدهد)، گزینه --reset-env را اضافه کنید:
setpriv --reuid=1000 --regid=1000 --inh-caps=-all --init-groups --reset-env
برای یک پیکربندی محدودتر که مجموعهمرز را نیز محدود کرده و از کسب امتیازات جدید جلوگیری میکند (محدودتر از runuser یا sudo):
setpriv --reuid=1000 --regid=1000 --init-groups --inh-caps=-all --bounding-set=-all --no-new-privs --reset-env
اگر میخواهید رفتار setuid(8) از daemontools را تقلید کنید، این مورد را امتحان کنید:
setpriv --reuid=1000 --regid=1000 --clear-groups
نویسندگان (AUTHORS)
Andy Lutomirski <luto@amacapital.net>
همچنین ببینید (SEE ALSO)
گزارش باگها (REPORTING BUGS)
برای گزارش باگها، از سامانه پیگیری مشکلات https://github.com/util-linux/util-linux/issues. استفاده کنید.
دسترسپذیری (AVAILABILITY)
دستور setpriv بخشی از بسته util-linux است که میتواند از بایگانی هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux. دریافت شود.
| 2026-09-02 | util-linux 2.42.3 |