.TH CAPSH 1 "2025-03-19" "libcap" "User Commands" .SH "نام (NAME)" capsh \- پوسته واسط مدیریت و بررسی قابلیت‌ها .SH "خلاصه دستور (SYNOPSIS)" .B capsh [\fIگزینه‌ها\fR]... .SH "توضیحات (DESCRIPTION)" پشتیبانی و استفاده از قابلیت‌های لینوکس (Linux capabilities) را می‌توان با این ابزار بررسی کرده و محدود ساخت. این ابزار یک واسط کاربردی برای انواع مشخصی از آزمون‌های قابلیت‌ها و ایجاد محیط‌های اجرایی فراهم می‌کند. همچنین ویژگی‌هایی برای اشکال‌زدایی و خلاصه‌سازی وضعیت قابلیت‌ها ارائه می‌دهد. .SH "گزینه‌ها (OPTIONS)" دستور .B capsh تعدادی آرگومان اختیاری می‌پذیرد و بر اساس ترتیب ارائه‌شده بر روی آن‌ها عمل می‌کند. این گزینه‌ها به شرح زیر هستند: .TP .B \-\-help نمایش فهرستی از دستورهای پشتیبانی‌شده توسط .BR capsh . .TP .B \-\-print نمایش وضعیت فعلی قابلیت‌ها و وضعیت‌های مرتبط. .TP .B \-\-current نمایش وضعیت فعلی قابلیت‌ها، قابلیت‌های 1e و بردار IAB. .TP .BI \-\- " [args]" اجرای .B /bin/bash با آرگومان‌های بعدی. توجه داشته باشید که می‌توانید از .B \-c 'command to execute' برای اجرای دستورات خاص استفاده کنید. .TP .BI \-\+ " [args]" از .BR cap_launch (3) برای ایجاد یک فرآیند فرزند و اجرای پوسته استفاده می‌کند. پس از خروج فرزند، .B capsh با همان کد وضعیت خروج فرزند، یا در صورتی که فرزند توسط یک سیگنال متوقف شده باشد با وضعیت 1 خارج می‌شود. .TP .BI == " [args]" اجرای مجدد .B capsh با آرگومان‌های باقی‌مانده. این گزینه برای آزمودن رفتار .BR exec () مفید است. توجه داشته باشید در صورتی که .B capsh در حال اجرا از طریق جستجوی PATH پوسته پیدا شده باشد، مجدداً PATH جستجو می‌شود. اگر .B exec پس از یک آرگومان .BI \-\-chroot= /some/path رخ دهد، ممکن است باینری یافت‌شده در PATH به همان باینری اولیه منتهی نشود. این رفتار یک ویژگی از پیش تعیین‌شده است زیرا می‌تواند انتقال chroot را کامل کند. .TP .BI =\+ " [args]" از .BR cap_launch (3) برای ایجاد یک فرآیند فرزند و اجرای مجدد .B capsh استفاده می‌کند. هنگامی که این فرزند خارج شود، .B capsh با وضعیت خروج همان فرزند، یا در صورتی که فرزند توسط یک سیگنال خاتمه یافته باشد با وضعیت 1 خارج می‌شود. .TP .BI \-\-caps= cap-set تنظیم قابلیت‌های فرآیند جاری به مقادیر مشخص‌شده در .IR cap-set . در اینجا .I cap-set نمایش متنی مجموعه‌ای از قابلیت‌ها مطابق با .BR cap_text_formats (7) است. .TP .BI \-\-drop= cap-list حذف قابلیت‌های ذکر شده از مجموعه مرزی (bounding set) جاری. قابلیت‌ها به صورت فهرستی جداشده با کاما مشخص می‌شوند که توسط تابع .BR cap_from_name (3) شناسایی می‌شوند. استفاده از این ویژگی مستلزم آن است که .B capsh با قابلیت .B CAP_SETPCAP در مجموعه مؤثر خود اجرا شود. .TP .BI \-\-inh= cap-list تنظیم مجموعه قابلیت‌های قابل‌توارث فرآیند جاری به مقادیر ارائه‌شده در فهرست جداشده با کاما. برای موفقیت این عمل، فرآیند جاری باید از قبل هر یک از این قابلیت‌ها را در اجتماع مجموعه‌های قابلیت فعلی قابل‌توارث و مجاز داشته باشد، یا اینکه .B capsh با قابلیت .B CAP_SETPCAP در مجموعه مؤثر خود در حال اجرا باشد. .TP .BI \-\-user= username به عهده گرفتن هویت کاربر مشخص‌شده؛ یعنی شناسه UID و GID کاربر با .BR getpwuid (3) و عضویت‌های گروهی او با .BR getgrouplist (3) جستجو شده و همگی با استفاده از .BR cap_setuid (3) و .BR cap_setgroups (3) تنظیم می‌شوند. پس از این دستور، قابلیت‌های مؤثر پاک خواهند شد، اما مجموعه مجاز (permitted set) پاک نمی‌شود، بنابراین برنامه در حال اجرا همچنان دارای امتیاز خواهد بود. .TP .B \-\-mode نمایش حالت جاری libcap طبق تخمین تابع .BR cap_get_mode (3). .TP .BR \-\-mode= اجبار برنامه به قرارگیری در یک حالت امنیتی .BR cap_set_mode (3). این حالت مجموعه‌ای از securebitها و چیدمان قابلیت‌های جاری است که به دلیل وضعیت امنیتی از پیش تعیین‌شده توصیه می‌شود. .TP .B \-\-modes فهرست کردن تمام حالت‌های libcap که توسط .BR \-\-mode= پشتیبانی می‌شوند. .TP .BR \-\-inmode= تایید اینکه حالت جاری همان حالت مشخص‌شده در .IR است، وگرنه خروج با وضعیت 1. .TP .BI \-\-uid= id اجبار تمام مقادیر UID به برابری با .I id با استفاده از فراخوانی سیستمی .BR setuid (2). این آرگومان ممکن است نیازمند آماده‌سازی صریح مجموعه مؤثر باشد. .TP .BR \-\-cap\-uid= استفاده از تابع .BR cap_setuid (3) برای تنظیم UID فرآیند جاری. این دستور تمامی مقدمات را برای تنظیم UID بدون رها کردن قابلیت‌ها در طول فرآیند انجام می‌دهد. به دنبال این دستور، قابلیت‌های مؤثر جاری کاهش خواهند یافت. .TP .BI \-\-is\-uid= خروج با وضعیت 1 مگر اینکه UID فعلی برابر با .IR باشد. .TP .BI \-\-gid= اجبار تمام مقادیر GID به برابری با .I id با استفاده از فراخوانی سیستمی .BR setgid (2). .TP .BI \-\-is\-gid= خروج با وضعیت 1 مگر اینکه GID فعلی برابر با .IR باشد. .TP .BI \-\-groups= تنظیم گروه‌های تکمیلی به فهرست عددی ارائه‌شده. گروه‌ها با استفاده از فراخوانی سیستمی .BR setgroups (2) تنظیم می‌شوند. برای روشی ساده‌تر جهت انجام این کار، گزینه .B \-\-user را ببینید. .TP .BI \-\-keep= <0|1> در حالت قابلیت‌های غیرخالص، هسته امتیازات زیادی در اختیار کاربر ارشد (ریشه) قرار می‌دهد. با این حال، معمولاً هنگامی که کاربر ارشد UID را به یک کاربر با سطح دسترسی پایین‌تر تغییر می‌دهد، قابلیت‌ها حذف می‌شوند. در این شرایط، هسته می‌تواند به فرآیند اجازه دهد قابلیت‌های خود را پس از یک فراخوانی سیستمی .BR setuid (2) حفظ کند. این ویژگی به عنوان پشتیبانی از .I keep-caps شناخته می‌شود. روش فعال‌سازی آن با این برنامه از طریق همین آرگومان است. تنظیم مقدار روی 1 باعث فعال شدن .I keep-caps می‌شود. تنظیم آن روی 0 باعث غیرفعال شدن keep-caps برای فرآیند جاری می‌شود. در تمام موارد، با اجرای یک .BR exec () ویژگی .I keep-caps غیرفعال می‌شود. برای روش‌های غیرفعال‌سازی این ویژگی، گزینه‌های .BR \-\-secbits و .B \-\-mode را ببینید. .TP .BI \-\-secbits= N تنظیم بیت‌های امنیتی (security-bits) برای برنامه. این کار با استفاده از عملیات .B PR_SET_SECUREBITS در .BR prctl (2) انجام می‌شود. فهرست بیت‌های پشتیبانی‌شده و معنای آن‌ها را می‌توان در فایل سرآیند .B یافت. این برنامه بیت‌های مذکور را از طریق دستور .B \-\-print فهرست می‌کند. آرگومان به صورت یک ماسک بیتی عددی در هر یک از قالب‌های مجاز توسط .BR strtoul (3) بیان می‌شود. یک جایگزین برای این دستکاری بیت‌ها در آرگومان‌های خط فرمان .B \-\-mode* گنجانده شده است. .TP .BI \-\-chroot= /some/path اجرای فراخوانی سیستمی .BR chroot (2) با دایرکتوری ریشه جدید (/) برابر با .IR path . این عملیات نیازمند فعال بودن .B CAP_SYS_CHROOT است. .TP .BI \-\-forkfor= sec این دستور باعث می‌شود برنامه یک فرآیند فرزند را برای مدت ثانیه‌های مشخص‌شده منشعب (fork) کند. فرآیند فرزند برای آن مدت به خواب می‌رود و سپس با وضعیت 0 خارج می‌شود. هدف این دستور پشتیبانی از بررسی نحوه خاتمه‌پذیری فرآیندها در مواجهه با تغییرات قابلیت‌ها است. دستور .B \-\-killit را ببینید. در هر لحظه تنها یک انشعاب می‌تواند فعال باشد. .TP .BI \-\-killit= sig این دستور باعث می‌شود فرآیند فرزند ایجادشده توسط .B \-\-forkfor با سیگنال مشخص‌شده توسط .BR kill (2) متوقف شود. سپس دستور منتظر خروج فرآیند فرزند می‌ماند. اگر وضعیت خروج با سیگنالی که برای متوقف ساختن آن استفاده شده مطابقت نداشته باشد، برنامه .B capsh با وضعیت 1 خارج می‌شود. .TP .BI \-\-explain= cap_xxx ارائه توضیح متنی کوتاهی از امتیازاتی که قابلیت مشخص‌شده برای یک برنامه در حال اجرا فراهم می‌کند. توجه داشته باشید که به جای .IR cap_xxx ، می‌توان یک عدد ده‌دهی ارائه داد و .B capsh توضیحات قابلیت متناظر را جستجو خواهد کرد. .TP .BI \-\-shell =/full/path این گزینه پوسته‌ای را که در زمان برخورد با آرگومان .B == فراخوانی می‌شود تغییر می‌دهد. .TP .BI \-\-strict این گزینه نادیده‌گیری تلاش‌های بعدی برای اصلاح آرگومان‌های .B \-\-caps= و .B \-\-inh= را تغییر وضعیت می‌دهد. بدین صورت که وقتی پرچم مؤثر جاری شامل .B CAP_SETPCAP نباشد، مقادیر پرچم قابل‌توارث (Inheritable) که باید ارتقا یابند (در حالت سخت‌گیرانه یا strict) به موارد موجود در مجموعه مجاز (Permitted) محدود می‌شوند. حالت سخت‌گیرانه به طور پیش‌فرض غیرفعال است. ارائه این آرگومان به تعداد دفعات زوج این رفتار پیش‌فرض را بازیابی می‌کند. .TP .BI \-\-suggest= phrase بررسی تمامی توضیحات متنی قابلیت‌های شناخته‌شده برای .B capsh و نمایش تمام توضیحاتی که شامل .I phrase هستند. .TP .BI \-\-decode= N این یک قابلیت کمکی و راحت است. اگر به فایل .B /proc/1/status نگاه کنید، برخی فیلدهای مرتبط با قابلیت‌ها به شکل زیر وجود دارند: .nf CapInh: 0000000000000000 CapPrm: 0000003fffffffff CapEff: 0000003fffffffff CapBnd: 0000003fffffffff CapAmb: 0000000000000000 .fi این گزینه روشی سریع برای رمزگشایی یک بردار قابلیت ارائه‌شده در این قالب هگزادسیمال فراهم می‌کند. در اینجا مثالی آورده شده که دو بیت پایین قابلیت را رمزگشایی می‌کند: .IP .nf $ \fBcapsh \-\-decode=3\fP 0x0000000000000003=cap_chown,cap_dac_override .fi .TP .BI \-\-supports= xxx با تکامل هسته لینوکس، قابلیت‌های بیشتری اضافه می‌شوند. این گزینه را می‌توان برای تایید وجود یک قابلیت در سیستم به کار برد. برای نمونه، .BI \-\-supports= cap_syslog هنگام اجرا بر روی هسته 2.6.27 باعث خروج فوری .B capsh با وضعیت 1 می‌شود. با این حال، هنگام اجرا بر روی هسته 2.6.38 بدون هیچ پیامی با موفقیت انجام خواهد شد. .TP .BI \-\-has\-p= xxx خروج با وضعیت 1 مگر اینکه بردار .I permitted دارای قابلیت .B xxx فعال باشد. .TP .B \-\-has\-ambient بررسی می‌کند که آیا هسته در حال اجرا از قابلیت‌های محیطی (ambient capabilities) پشتیبانی می‌کند یا خیر. در غیر این صورت، .B capsh با وضعیت 1 خارج می‌شود. .TP .BI \-\-has\-a= xxx خروج با وضعیت 1 مگر اینکه بردار .I ambient دارای قابلیت .B xxx فعال باشد. .TP .BI \-\-has\-b= xxx خروج با وضعیت 1 مگر اینکه بردار .I bounding دارای قابلیت .B xxx در وضعیت مسدودنشده (پیش‌فرض) خود باشد. .TP .BI \-\-iab= xxx تلاش برای تنظیم سه‌تایی IAB بردارهای قابلیت‌های قابل‌توارث. قراردادهای متنی به‌کاررفته برای .I xxx همان موارد تابع .BR cap_iab_from_text (3) بوده و در .BR cap_text_formats (7) توصیف شده‌اند. .TP .BI \-\-addamb= xxx افزودن قابلیت محیطی مشخص‌شده به فرآیند در حال اجرا. .TP .BI \-\-delamb= xxx حذف قابلیت محیطی مشخص‌شده از فرآیند در حال اجرا. .TP .B \-\-noamb حذف تمام قابلیت‌های محیطی از فرآیند در حال اجرا. .TP .B \-\-noenv جلوگیری از بازنویسی متغیرهای محیطی HOME و USER زمانی که یک آرگومان بعدی .B \-\-user پردازش می‌شود. .TP .B \-\-quiet این آرگومان نادیده گرفته می‌شود مگر اینکه اولین آرگومان باشد. در صورت وجود، بررسی زمان اجرای capsh برای تایید اینکه نسخه libcap در حال اجرا به اندازه کافی جدید است تا بتواند تمام مقادیر قابلیت‌های پشتیبانی‌شده توسط هسته را نام‌گذاری کند، متوقف می‌شود. .SH "کد خروج (EXIT STATUS)" به دنبال اجرای موفقیت‌آمیز، .B capsh با وضعیت 0 خارج می‌شود. در صورت بروز خطا، .B capsh بلافاصله با وضعیت 1 خارج می‌شود. .SH "نویسندگان (AUTHORS)" نوشته‌شده توسط Andrew G. Morgan . .SH "گزارش باگ‌ها (REPORTING BUGS)" لطفاً اشکالات را از طریق نشانی زیر گزارش دهید: .TP https://bugzilla.kernel.org/buglist.cgi?component=libcap&list_id=1090757 .SH "همچنین ببینید (SEE ALSO)" .BR libcap (3), .BR cap_from_text (3), .BR cap_iab (3), .BR cap_text_formats (7), .BR capabilities (7), .BR captree (8), .BR getcap (8), .BR getpcaps (8), و .BR setcap (8).