.\" Automatically generated from the cvtsudoers.mdoc.in file. Do not edit. .\" .\" SPDX-License-Identifier: ISC .\" .\" Copyright (c) 2018, 2021-2025 Todd C. Miller .\" .\" Permission to use, copy, modify, and distribute this software for any .\" purpose with or without fee is hereby granted, provided that the above .\" copyright notice and this permission notice appear in all copies. .\" .\" THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES .\" WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF .\" MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR .\" ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES .\" WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN .\" ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF .\" OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. .\" .Dd February 22, 2025 .Dt CVTSUDOERS 1 .Os Sudo 1.9.17p2 .Sh "نام (NAME)" .Nm cvtsudoers .Nd تبدیل بین فرمتهای مختلف پیکربندی sudoers .Sh "خلاصه دستور (SYNOPSIS)" .Nm cvtsudoers .Op Fl ehMpV .Op Fl b Ar dn .Op Fl c Ar conf_file .Op Fl d Ar deftypes .Op Fl f Ar output_format .Op Fl i Ar input_format .Op Fl I Ar increment .Op Fl l Ar log_file .Op Fl m Ar filter .Op Fl o Ar output_file .Op Fl O Ar start_point .Op Fl P Ar padding .Op Fl s Ar sections .Op Ar input_file ... .Sh "توضیحات (DESCRIPTION)" ابزار .Nm یک یا چند خط‌مشی امنیتی را در هر یک از قالب‌های .Em sudoers یا LDIF به عنوان ورودی می‌پذیرد و یک خط‌مشی واحد از قالب مشخص‌شده را به عنوان خروجی تولید می‌کند. قالب ورودی پیش‌فرض .Em sudoers است. قالب خروجی پیش‌فرض LDIF است. تنها امکان تبدیل یک فایل خط‌مشی وجود دارد که از نظر نحوی درست باشد. .Pp اگر هیچ .Ar input_file مشخص نشده باشد، یا اگر .Ql - باشد، خط‌مشی از ورودی استاندارد خوانده می‌شود. فایل‌های ورودی می‌توانند به صورت اختیاری با یک نام میزبان به همراه دونقطه .Pq Ql :\& پیشوندگذاری شوند تا قواعد خط‌مشی هنگام ادغام چند فایل، در صورت امکان مختص به یک میزبان خاص شوند. به‌طور پیش‌فرض، نتیجه در خروجی استاندارد نوشته می‌شود. .Pp گزینه‌ها به شرح زیر هستند: .Bl -tag -width Ds .It Fl b Ar dn , Fl -base Ns = Ns Ar dn شناسه پایه (distinguished name یا DN) که هنگام انجام پرس‌وجوهای LDAP استفاده خواهد شد. معمولاً برای دامنه my-domain.com این مقدار به شکل .Dq ou=SUDOers,dc=my-domain,dc=com است. اگر این گزینه مشخص نشود، مقدار متغیر محیطی .Ev SUDOERS_BASE به جای آن استفاده خواهد شد. تنها هنگام تبدیل به قالب LDIF ضروری است. .It Fl c Ar conf_file , Fl -config Ns = Ns Ar conf_file مسیر فایل پیکربندی را مشخص می‌کند. مقدار پیش‌فرض .Pa /etc/cvtsudoers.conf است. .It Fl d Ar deftypes , Fl -defaults Ns = Ns Ar deftypes تنها ورودی‌های .Em Defaults از نوع‌های مشخص‌شده را تبدیل می‌کند. یک یا چند نوع .Em Defaults می‌تواند مشخص شود که با کاما .Pq Ql \&, از یکدیگر جدا می‌شوند. نوع‌های پشتیبانی‌شده عبارتند از: .Bl -tag -width "command" .It all تمام ورودی‌های Defaults. .It global ورودی‌های سراسری Defaults که صرف‌نظر از کاربر، runas، میزبان یا دستور اعمال می‌شوند. .It user ورودی‌های Defaults مربوط به هر کاربر. .It runas ورودی‌های Defaults مربوط به هر کاربر runas. .It host ورودی‌های Defaults مربوط به هر میزبان. .It command ورودی‌های Defaults مربوط به هر دستور. .El .Pp برای اطلاعات بیشتر، بخش .Sy Defaults در .Xr sudoers 5 را ببینید. .Pp اگر گزینه .Fl d مشخص نشود، تمام ورودی‌های .Em Defaults تبدیل خواهند شد. .It Fl e , Fl -expand-aliases نام‌های مستعار را در .Ar input_file گسترش می‌دهد. زمانی که قالب خروجی .Ar format برابر JSON یا sudoers باشد، نام‌های مستعار به‌طور پیش‌فرض حفظ می‌شوند. .It Fl f Ar output_format , Fl -output-format Ns = Ns Ar output_format قالب خروجی را مشخص می‌کند (غیرحساس به بزرگی و کوچکی حروف). قالب‌های زیر پشتیبانی می‌شوند: .Bl -tag -width "sudoers" .It CSV فایل‌های CSV (مقادیر جداشده با کاما) اغلب توسط برنامه‌های صفحه‌گسترده و ابزارهای تولید گزارش استفاده می‌شوند. برای جزئیات بیشتر به بخش .Sx "قالب خروجی CSV (CSV output format)" مراجعه کنید. .It JSON فایل‌های JSON (نشانه‌گذاری اشیاء جاوااسکریپت) معمولاً برای برنامه‌های شخص ثالث آسان‌تر از قالب سنتی .Em sudoers قابل پردازش هستند. مقادیر مختلف دارای انواع صریح هستند که بخش عمده‌ای از ابهام قالب .Em sudoers را برطرف می‌کند. برای جزئیات بیشتر به بخش .Sx "قالب خروجی JSON (JSON output format)" مراجعه کنید. .It LDIF فایل‌های LDIF (قالب تبادل داده LDAP) را می‌توان برای استفاده با .Xr sudoers.ldap 5 به یک سرور LDAP وارد کرد. .Pp تبدیل به LDIF دارای محدودیت‌های زیر است: .Bl -bullet -width 1n .It خطوط Defaults خاص دستور، میزبان، runas و کاربر قابل ترجمه نیستند زیرا معادلی در طرح‌واره (schema) اسناد LDAP مربوط به sudoers ندارند. .It نام‌های مستعار دستور، میزبان، runas و کاربر توسط طرح‌واره LDAP مربوط به sudoers پشتیبانی نمی‌شوند، بنابراین در طول تبدیل گسترش می‌یابند. .El .It sudoers قالب سنتی sudoers. یک فایل sudoers جدید از روی فایل ورودی تجزیه‌شده بازسازی خواهد شد. کامنت‌ها حفظ نمی‌شوند و داده‌های فایل‌های الحاقی (include) به صورت درون‌خطی در خروجی قرار می‌گیرند. .El .It Fl -group-file Ns = Ns Ar file هنگامی که گزینه .Fl M نیز مشخص شده باشد، پرس‌وجوهای گروه را به جای پایگاه‌داده گروه سیستم با استفاده از .Ar file انجام می‌دهد. .It Fl h , Fl -help یک پیام راهنمای کوتاه در خروجی استاندارد نمایش می‌دهد و خارج می‌شود. .It Fl i Ar input_format , Fl -input-format Ns = Ns Ar input_format قالب ورودی را مشخص می‌کند. قالب‌های زیر پشتیبانی می‌شوند: .Bl -tag -width "sudoers" .It LDIF فایل‌های LDIF (قالب تبادل داده LDAP) را می‌توان از یک سرور LDAP استخراج کرد تا خط‌مشی‌های امنیتی مورد استفاده توسط .Xr sudoers.ldap 5 تبدیل شوند. اگر یک DN پایه (distinguished name) مشخص شده باشد، تنها اشیاء sudoRole که با DN پایه مطابقت دارند پردازش خواهند شد. همه sudoOptions مشخص‌شده در یک sudoRole را نمی‌توان از قالب LDIF به قالب sudoers تبدیل کرد. .It sudoers قالب سنتی sudoers. این قالب ورودی پیش‌فرض است. .El .It Fl I Ar increment , Fl -increment Ns = Ns Ar increment هنگام تولید خروجی LDIF، صفت sudoOrder را به ازای هر ورودی به میزان عدد مشخص‌شده افزایش می‌دهد. مقدار پیش‌فرض افزایش 1 است. .It Fl l Ar log_file , Fl -logfile Ns = Ns Ar log_file هشدارهای تبدیل را به جای خروجی خطای استاندارد، در .Ar log_file ثبت می‌کند. این قابلیت به‌ویژه هنگام ادغام چندین فایل .Em sudoers که ممکن است تعداد زیادی هشدار ایجاد کنند، مفید است. .It Fl m Ar filter , Fl -match Ns = Ns Ar filter تنها قواعدی را خروجی می‌دهد که با .Ar filter مشخص‌شده مطابقت داشته باشند. یک عبارت .Ar filter از یک یا چند جفت .Sy key = Ar value تشکیل می‌شود که با کاما .Pq Ql \&, از هم جدا شده‌اند. کلید .Sy key می‌تواند .Dq cmnd .Pq یا Dq cmd , .Dq host , .Dq group , یا .Dq user باشد. به عنوان مثال، .Sy user No = Ar operator یا .Sy host No = Ar www . می‌توان یک .Em Cmnd_Alias , .Em Host_alias , یا .Em User_Alias با حروف بزرگ را به عنوان .Dq cmnd , .Dq host , یا .Dq user مشخص کرد. .Pp یک قاعده منطبق .Em sudoers ممکن است شامل کاربران، گروه‌ها و میزبان‌هایی نیز باشد که بخشی از .Ar filter نیستند. این حالت زمانی رخ می‌دهد که یک قاعده شامل چندین کاربر، گروه یا میزبان باشد. برای هرس کردن و حذف کاربران، گروه‌ها یا میزبان‌های غیرمنطبق از قواعد، می‌توان از گزینه .Fl p استفاده کرد. .Pp به‌طور پیش‌فرض، پایگاه‌های داده گذرواژه و گروه هنگام بررسی مطابقت با فیلتر در نظر گرفته نمی‌شوند، بنابراین نیازی نیست کاربران و گروه‌ها روی سیستم محلی وجود داشته باشند (به گزینه .Fl M مراجعه کنید). تنها نام‌های مستعاری که توسط قواعد خط‌مشی فیلترشده ارجاع داده شده باشند، نمایش داده خواهند شد. .It Fl M , Fl -match-local هنگامی که گزینه .Fl m نیز مشخص شده باشد، هنگام بررسی مطابقت کاربران و گروه‌ها در فیلتر، از اطلاعات پایگاه‌های داده گذرواژه و گروه سیستم استفاده می‌کند. تنها کاربران و گروه‌هایی در فیلتر مطابقت خواهند داشت که روی سیستم محلی وجود داشته باشند، و گروه‌های کاربر به‌طور خودکار به فیلتر اضافه خواهند شد. اگر گزینه .Fl M مشخص .Em نشده باشد، نیازی نیست کاربران و گروه‌های موجود در فیلتر روی سیستم محلی وجود داشته باشند، اما تمام گروه‌های مورد استفاده برای تطبیق باید صریحاً در فیلتر فهرست شوند. .It Fl o Ar output_file , Fl -output Ns = Ns Ar output_file خروجی تبدیل‌شده را در .Ar output_file می‌نویسد. اگر هیچ .Ar output_file مشخص نشده باشد، یا اگر .Ql - باشد، خط‌مشی تبدیل‌شده .Em sudoers در خروجی استاندارد نوشته خواهد شد. .It Fl O Ar start_point , Fl -order-start Ns = Ns Ar start_point هنگام تولید خروجی LDIF، از عدد مشخص‌شده توسط .Ar start_point در صفت sudoOrder اولین شیء sudoRole استفاده می‌کند. اشیاء sudoRole بعدی از مقدار sudoOrder حاصل از افزودن یک .Ar increment استفاده می‌کنند، برای جزئیات به گزینه .Fl I مراجعه کنید. مقدار پیش‌فرض نقطه شروع 1 است. نقطه شروع 0 تولید صفت‌های sudoOrder را در فایل LDIF حاصل غیرفعال خواهد کرد. .It Fl -passwd-file Ns = Ns Ar file هنگامی که گزینه .Fl M نیز مشخص شده باشد، پرس‌وجوهای passwd را به جای پایگاه‌داده passwd سیستم با استفاده از .Ar file انجام می‌دهد. .It Fl p , Fl -prune-matches هنگامی که گزینه .Fl m نیز مشخص شده باشد، .Nm کاربران، گروه‌ها و میزبان‌های غیرمنطبق را از ورودی‌های منطبق هرس (حذف) خواهد کرد. .It Fl P Ar padding , Fl -padding Ns = Ns Ar padding هنگام تولید خروجی LDIF، مقدار اولیه sudoOrder را با الحاق کردن .Ar order_start و .Ar increment می‌سازد، به طوری که .Ar increment با صفرها پدینگ می‌شود تا زمانی که شامل .Ar padding رقم باشد. به عنوان مثال، اگر .Ar order_start برابر 1027 باشد، .Ar padding برابر 3، و .Ar increment برابر 1 باشد، مقدار sudoOrder برای نخستین ورودی 1027000 خواهد بود و به دنبال آن 1027001، 1027002 و غیره می‌آیند. اگر تعداد ورودی‌های sudoRole بزرگ‌تر از مقداری باشد که پدینگ اجازه می‌دهد، .Nm با یک خطا خارج خواهد شد. به‌طور پیش‌فرض، هیچ پدینگی انجام نمی‌شود. .It Fl s Ar sections , Fl -suppress Ns = Ns Ar sections از تولید بخش‌های مشخص‌شده از خط‌مشی امنیتی در خروجی جلوگیری می‌کند. می‌توان یک یا چند نام بخش را مشخص کرد که با کاما .Pq Ql \&, از یکدیگر جدا می‌شوند. نام‌های بخش پشتیبانی‌شده عبارتند از: .Sy defaults , .Sy aliases و .Sy privileges (که می‌توان آن را به .Sy privs کوتاه کرد). .It Fl V , -version نسخه‌های .Nm و گرامر .Em sudoers را چاپ کرده و خارج می‌شود. .El .Ss "ادغام چندین فایل (Merging multiple files)" هنگامی که چندین فایل ورودی مشخص شده باشند، .Nm تلاش می‌کند تا آن‌ها را در یک فایل خط‌مشی واحد ادغام کند. فرض بر این است که نام‌های کاربری و گروه در میان فایل‌های خط‌مشی مورد نظر برای ادغام، یکپارچه و سازگار هستند. برای مثال، کاربر .Dq bob روی یک میزبان همان کاربر .Dq bob روی میزبان دیگر است. .Pp هنگام ادغام فایل‌های خط‌مشی، این امکان وجود دارد که پیش از نام فایل ورودی، نام میزبان به همراه دونقطه .Pq Ql :\& قرار داده شود. هنگامی که فایل‌ها ادغام می‌شوند، از نام میزبان در صورت امکان برای محدود کردن قواعد خط‌مشی به آن میزبان خاص استفاده خواهد شد. .Pp فرآیند ادغام به شرح زیر انجام می‌شود: .Bl -bullet -width 1n .It هر فایل ورودی به ساختارهای داده داخلی sudoers تجزیه می‌شود. .It نام‌های مستعار ادغام شده و در صورت نیاز برای جلوگیری از تداخل تغییر نام می‌یابند. در صورت بروز تداخل، نخستین نام مستعار یافت‌شده دست‌نخورده باقی می‌ماند و نام‌های مستعار بعدی با همان نام با یک پسوند عددی که با زیرخط .Pq Ql _ جدا شده است، تغییر نام داده می‌شوند. برای مثال، اگر دو نام مستعار متفاوت با نام .Dv SERVERS وجود داشته باشند، اولی دست‌نخورده باقی می‌ماند و دومی به .Dv SERVERS_1 تغییر نام می‌یابد. ارجاعات به نام مستعار تغییریافته نیز در فایل خط‌مشی به‌روزرسانی می‌شوند. نام‌های مستعار تکراری (آن‌هایی که محتوای کاملاً یکسان دارند) هرس می‌شوند. .It تنظیمات Defaults ادغام می‌شوند و موارد تکراری حذف می‌گردند. اگر در تنظیمات Defaults تداخلی وجود داشته باشد، برای هر تداخل یک هشدار صادر می‌شود. اگر یک نام میزبان همراه با فایل ورودی مشخص شده باشد، .Nm تنظیمات سراسری Defaults در آن فایل را به تنظیمات مختص میزبان تغییر می‌دهد. برای تنظیمات Defaults خاص دستور، کاربر، یا runas که امکان تبدیل آن‌ها به تنظیمات مختص میزبان وجود ندارد، یک هشدار صادر می‌شود. .It قواعد به ازای هر کاربر ادغام می‌شوند و موارد تکراری حذف می‌گردند. اگر نام میزبان همراه با فایل ورودی مشخص شده باشد، .Nm قواعدی را که نام میزبان .Sy ALL را مشخص کرده‌اند، به نام میزبان مرتبط با فایل خط‌مشی در حال ادغام تغییر می‌دهد. ادغام قواعد در حال حاضر نسبتاً ساده است اما در نسخه‌های بعدی بهبود خواهد یافت. .El .Pp امکان ادغام فایل‌های خط‌مشی با قالب‌های مختلف وجود دارد. .Ss "فایل cvtsudoers.conf (The cvtsudoers.conf file)" گزینه‌ها در قالب .Dq keyword = value را می‌توان در یک فایل پیکربندی نیز مشخص کرد که به‌طور پیش‌فرض در .Pa /etc/cvtsudoers.conf قرار دارد. کلمات کلیدی زیر شناخته‌شده هستند: .Bl -tag -width 4n .It Sy defaults = Ar deftypes توضیحات گزینه خط فرمان .Fl d را ببینید. .It Sy expand_aliases = Ar yes | no توضیحات گزینه خط فرمان .Fl e را ببینید. .It Sy group_file = Ar file توضیحات گزینه خط فرمان .Fl -group-file را ببینید. .It Sy input_format = Ar ldif | sudoers توضیحات گزینه خط فرمان .Fl i را ببینید. .It Sy match = Ar filter توضیحات گزینه خط فرمان .Fl m را ببینید. .It Sy match_local = Ar yes | no توضیحات گزینه خط فرمان .Fl M را ببینید. .It Sy order_increment = Ar increment توضیحات گزینه خط فرمان .Fl I را ببینید. .It Sy order_start = Ar start_point توضیحات گزینه خط فرمان .Fl O را ببینید. .It Sy output_format = Ar csv | json | ldif | sudoers توضیحات گزینه خط فرمان .Fl f را ببینید. .It Sy padding = Ar padding توضیحات گزینه خط فرمان .Fl P را ببینید. .It Sy passwd_file = Ar file توضیحات گزینه خط فرمان .Fl -passwd-file را ببینید. .It Sy prune_matches = Ar yes | no توضیحات گزینه خط فرمان .Fl p را ببینید. .It Sy sudoers_base = Ar dn توضیحات گزینه خط فرمان .Fl b را ببینید. .It Sy suppress = Ar sections توضیحات گزینه خط فرمان .Fl s را ببینید. .El .Pp گزینه‌های مشخص‌شده در خط فرمان، مقادیر موجود در فایل پیکربندی را نادیده گرفته و جایگزین (override) می‌کنند. .Ss "قالب خروجی JSON (JSON output format)" قالب JSON مربوط به .Em sudoers می‌تواند شامل هر یک از اشیاء سطح بالای زیر باشد: .Bl -tag -width 4n .It Defaults آرایه‌ای از اشیاء، که هر کدام شامل یک آرایه .Em Options و یک آرایه اختیاری .Em Binding هستند. .Pp آرایه .Em Options شامل یک یا چند شیء است، که هر یک دارای یک جفت .Dq name:value منطبق بر یک تنظیم .Em Defaults در .Em sudoers هستند. گزینه‌هایی .Pq Em Options که روی یک فهرست عمل می‌کنند، همچنین شامل یک ورودی .Em operation در شیء خواهند بود، با مقدار .Dq list_assign برای .Ql = , مقدار .Dq list_add برای .Ql += , یا .Dq list_remove برای .Ql -= . .Pp آرایه اختیاری .Em Binding شامل یک یا چند شیء است که هر کدام دارای یک جفت .Dq name:value و یک ورودی اختیاری .Em negated هستند که هر مقایسه انجام‌شده با آن شیء را نفی (معکوس) می‌کند. اگر یک .Em Binding حضور داشته باشد، تنظیم تنها زمانی اعمال می‌شود که یکی از ورودی‌های مشخص‌شده .Em command , .Em hostname , .Em netgroup , .Em networkaddr , .Em nonunixgid , .Em nonunixgroup , .Em usergid , .Em usergroup , .Em userid , .Em username , یا نام‌های مستعار مطابقت داشته باشد. .Pp برای مثال، ورودی .Em sudoers زیر: .Bd -literal Defaults@somehost set_home, env_keep += DISPLAY .Ed .Pp تبدیل می‌شود به: .Bd -literal "Defaults": [ { "Binding": [ { "hostname": "somehost" } ], "Options": [ { "set_home": true }, { "operation": "list_add", "env_keep": [ "DISPLAY" ] } ] } ] .Ed .It User_Aliases یک شیء JSON شامل یک یا چند ورودی .Em User_Alias در .Em sudoers است که در آن هر نام مستعار به عنوان مقدار خود، دارای آرایه‌ای شامل یک یا چند شیء است. هر شیء شامل یک جفت .Dq name:value و یک ورودی اختیاری .Em negated است که هر مقایسه انجام‌شده با آن شیء را نفی می‌کند. نام می‌تواند یکی از موارد .Em netgroup , .Em nonunixgid , .Em nonunixgroup , .Em useralias , .Em usergid , .Em usergroup , .Em userid , یا .Em username باشد. .Pp برای مثال، ورودی .Em sudoers زیر: .Bd -literal User_Alias SYSADMIN = will, %wheel, +admin .Ed .Pp تبدیل می‌شود به: .Bd -literal "User_Aliases": { "SYSADMIN": [ { "username": "will" }, { "usergroup": "wheel" }, { "netgroup": "admin" } ] } .Ed .It Runas_Aliases یک شیء JSON شامل یک یا چند ورودی .Em Runas_Alias در .Em sudoers است، که در آن هر نام مستعار به عنوان مقدار خود، دارای آرایه‌ای شامل یک یا چند شیء است. هر شیء شامل یک جفت .Dq name:value و یک ورودی اختیاری .Em negated است که هر مقایسه انجام‌شده با آن شیء را نفی می‌کند. نام می‌تواند یکی از موارد .Em netgroup , .Em nonunixgid , .Em nonunixgroup , .Em runasalias , .Em usergid , .Em usergroup , .Em userid , یا .Em username باشد. .Pp برای مثال، ورودی .Em sudoers زیر: .Bd -literal Runas_Alias DB = oracle, sybase : OP = root, operator .Ed .Pp تبدیل می‌شود به: .Bd -literal "Runas_Aliases": { "DB": [ { "username": "oracle" }, { "username": "sybase" } ], "OP": [ { "username": "root" }, { "username": "operator" } ] } .Ed .It Host_Aliases یک شیء JSON شامل یک یا چند ورودی .Em Host_Alias در .Em sudoers است که در آن هر نام مستعار به عنوان مقدار خود، دارای آرایه‌ای شامل یک یا چند شیء است. هر شیء شامل یک جفت .Dq name:value و یک ورودی اختیاری .Em negated است که هر مقایسه انجام‌شده با آن شیء را نفی می‌کند. نام می‌تواند یکی از موارد .Em hostalias , .Em hostname , .Em netgroup , یا .Em networkaddr باشد. .Pp برای مثال، ورودی‌های .Em sudoers زیر: .Bd -literal Host_Alias DORMNET = 128.138.243.0, 128.138.204.0/24 Host_Alias SERVERS = boulder, refuge .Ed .Pp تبدیل می‌شوند به: .Bd -literal "Host_Aliases": { "DORMNET": [ { "networkaddr": "128.138.243.0" }, { "networkaddr": "128.138.204.0/24" } ], "SERVERS": [ { "hostname": "boulder" }, { "hostname": "refuge" } ] } .Ed .It Cmnd_Aliases یک شیء JSON شامل یک یا چند ورودی .Em Cmnd_Alias در .Em sudoers است که در آن هر نام مستعار به عنوان مقدار خود، دارای آرایه‌ای شامل یک یا چند شیء است. هر شیء شامل یک جفت .Dq name:value و یک ورودی اختیاری .Em negated است که هر مقایسه انجام‌شده با آن شیء را نفی می‌کند. نام می‌تواند یک .Em cmndalias دیگر یا یک .Em command باشد. برای مثال، ورودی‌های .Em sudoers زیر: .Bd -literal Cmnd_Alias SHELLS = /bin/bash, /bin/csh, /bin/sh, /bin/zsh Cmnd_Alias VIPW = /usr/bin/chpass, /usr/bin/chfn, /usr/bin/chsh, \e /usr/bin/passwd, /usr/sbin/vigr, /usr/sbin/vipw .Ed .Pp تبدیل می‌شوند به: .Bd -literal "Cmnd_Aliases": { "SHELLS": [ { "command": "/bin/bash" }, { "command": "/bin/csh" }, { "command": "/bin/sh" }, { "command": "/bin/zsh" } ], "VIPW": [ { "command": "/usr/bin/chpass" }, { "command": "/usr/bin/chfn" }, { "command": "/usr/bin/chsh" }, { "command": "/usr/bin/passwd" }, { "command": "/usr/sbin/vigr" }, { "command": "/usr/sbin/vipw" } ] } .Ed .It User_Specs یک آرایه JSON شامل یک یا چند شیء، که هر کدام نشان‌دهنده یک User_Spec در .Em sudoers هستند. هر شیء در آرایه .Em User_Specs باید شامل یک آرایه .Em User_List , یک آرایه .Em Host_List و یک آرایه .Em Cmnd_Specs باشد. .Pp یک .Em User_List از یک یا چند شیء تشکیل می‌شود. هر شیء شامل یک جفت .Dq name:value و یک ورودی اختیاری .Em negated است که هر مقایسه انجام‌شده با آن شیء را نفی می‌کند. نام می‌تواند یکی از موارد .Em netgroup , .Em nonunixgid , .Em nonunixgroup , .Em useralias , .Em usergid , .Em usergroup , .Em userid , یا .Em username باشد. اگر .Em username بر روی مقدار ویژه .Sy ALL تنظیم شود، با هر کاربری مطابقت خواهد داشت. .Pp یک .Em Host_List شامل یک یا چند شیء است. هر شیء شامل یک جفت .Dq name:value و یک ورودی اختیاری .Em negated است که هر مقایسه انجام‌شده با آن شیء را نفی می‌کند. نام می‌تواند یکی از موارد .Em hostalias , .Em hostname , .Em netgroup , یا .Em networkaddr باشد. اگر .Em hostname بر روی مقدار ویژه .Sy ALL تنظیم شود، با هر میزبانی مطابقت خواهد داشت. .Pp آرایه .Em Cmnd_Specs شامل یک یا چند شیء JSON است که دستوری را که مجاز به اجرا است توصیف می‌کند. هر .Em Cmnd_Specs از یک آرایه .Em Commands , یک آرایه اختیاری .Em runasusers , یک آرایه اختیاری .Em runasgroups , و یک آرایه اختیاری .Em Options تشکیل شده است. .Pp آرایه .Em Commands شامل یک یا چند شیء دارای عناصر جفت .Dq name:value است. نام‌ها و مقادیر زیر پشتیبانی می‌شوند: .Bl -tag -width "command" .It command رشته‌ای حاوی دستوری که باید اجرا شود. مقدار ویژه .Sy ALL با هر دستوری مطابقت خواهد داشت. .It negated یک مقدار بولی که اگر درست (true) باشد، هر مقایسه انجام‌شده با آن شیء را نفی می‌کند. .It sha224 یک یا چند چکیده SHA224 برای .Em command به شکل رشته. چندین چکیده از یک نوع به عنوان یک آرایه ذخیره می‌شوند. .It sha256 یک یا چند چکیده SHA256 برای .Em command به شکل رشته. چندین چکیده از یک نوع به عنوان یک آرایه ذخیره می‌شوند. .It sha384 یک یا چند چکیده SHA384 برای .Em command به شکل رشته. چندین چکیده از یک نوع به عنوان یک آرایه ذخیره می‌شوند. .It sha512 یک یا چند چکیده SHA512 برای .Em command به شکل رشته. چندین چکیده از یک نوع به عنوان یک آرایه ذخیره می‌شوند. .El .Pp آرایه .Em runasusers شامل اشیایی است که کاربرانی را توصیف می‌کنند که دستور می‌تواند به عنوان آن‌ها اجرا شود. هر شیء شامل یک جفت .Dq name:value و یک ورودی اختیاری .Em negated است که هر مقایسه انجام‌شده با آن شیء را نفی می‌کند. نام می‌تواند یکی از موارد .Em netgroup , .Em nonunixgid , .Em nonunixgroup , .Em runasalias , .Em usergid , .Em usergroup , .Em userid , یا .Em username باشد. اگر .Em username بر روی مقدار ویژه .Sy ALL تنظیم شود، با هر کاربری مطابقت خواهد داشت. اگر .Em username بر روی رشته خالی .Dq "" تنظیم شود، با کاربر فراخواننده مطابقت خواهد داشت. .Pp آرایه .Em runasgroups شامل اشیایی است که گروه‌هایی را توصیف می‌کنند که دستور می‌تواند به عنوان آن‌ها اجرا شود. هر شیء شامل یک جفت .Dq name:value و یک ورودی اختیاری .Em negated است که هر مقایسه انجام‌شده با آن شیء را نفی می‌کند. نام می‌تواند یکی از موارد .Em runasalias , .Em usergid , یا .Em usergroup باشد. اگر .Em usergroup بر روی مقدار ویژه .Sy ALL تنظیم شود، با هر گروهی مطابقت خواهد داشت. .Pp آرایه .Em Options دارای قالبی مشابه آرایه موجود در شیء .Em Defaults است. هر ورودی .Em Tag_Spec در .Em sudoers به .Em Options تبدیل می‌شود. یک کاربر با امتیازات .Dq sudo ALL به‌طور خودکار گزینه .Em setenv را فعال خواهد داشت تا با رفتار ضمنی ارائه‌شده توسط .Em sudoers مطابقت داشته باشد. .Pp برای مثال، ورودی .Em sudoers زیر: .Bd -literal millert ALL = (ALL : ALL) NOPASSWD: ALL, !/usr/bin/id .Ed .Pp تبدیل می‌شود به: .Bd -literal "User_Specs": [ { "User_List": [ { "username": "millert" } ], "Host_List": [ { "hostname": "ALL" } ], "Cmnd_Specs": [ { "runasusers": [ { "username": "ALL" } ], "runasgroups": [ { "usergroup": "ALL" } ], "Options": [ { "authenticate": false }, { "setenv": true } ], "Commands": [ { "command": "ALL" }, { "command": "/usr/bin/id", "negated": true } ] } ] } ] .Ed .El .Ss "قالب خروجی CSV (CSV output format)" فایل‌های CSV (مقادیر جداشده با کاما) اغلب توسط برنامه‌های صفحه‌گسترده و ابزارهای تولید گزارش استفاده می‌شوند. برای خروجی CSV، .Nm رشته‌هایی را که دارای کاما هستند در گیومه دوتایی قرار می‌دهد. به ازای هر نویسه گیومه دوتایی واقعی موجود در داخل رشته، دو گیومه دوتایی چاپ می‌شود. این روش محصور کردن کاما با اغلب برنامه‌های صفحه‌گسترده سازگار است. .Pp سه بخش ممکن در خروجی CSV دستور .Nm cvtsudoers وجود دارد که هر یک با یک خط خالی جدا می‌شوند: .Bl -tag -width 4n .It defaults این بخش شامل هر یک از تنظیمات .Em Defaults در .Em sudoers است. بخش .Em defaults با سربرگ زیر آغاز می‌شود: .Bd -literal -offset indent defaults_type,binding,name,operator,value .Ed .Pp فیلدها به شرح زیر هستند: .Bl -tag -width 4n .It defaults_type نوع تنظیم .Em Defaults ; یکی از موارد .Em defaults , .Em defaults_command , .Em defaults_host , .Em defaults_runas , یا .Em defaults_user . .It binding برای .Em defaults_command , .Em defaults_host , .Em defaults_runas , و .Em defaults_user این مقداری است که برای اعمال تنظیم باید مطابقت داشته باشد. .It name نام تنظیم .Em Defaults . .It operator عملگر مشخص می‌کند که مقدار چگونه بر روی تنظیم اعمال شود. این مقدار می‌تواند یکی از موارد .Ql = (انتساب)، .Ql += (افزودن)، یا .Ql -= (حذف) باشد. .It value مقدار تنظیم، معمولاً یک رشته است یا برای تنظیماتی که در زمینه بولی استفاده می‌شوند، .Em true یا .Em false . .El .It aliases این بخش شامل هر یک از ورودی‌های .Em Cmnd_Alias , .Em Host_Alias , .Em Runas_Alias , یا .Em User_Alias از .Em sudoers است. بخش .Em aliases با سربرگ زیر آغاز می‌شود: .Bd -literal -offset indent alias_type,alias_name,members .Ed .Pp فیلدها به شرح زیر هستند: .Bl -tag -width 4n .It alias_type نوع نام مستعار؛ یکی از موارد .Em Cmnd_Alias , .Em Host_Alias , .Em Runas_Alias , یا .Em User_Alias . .It alias_name نام این نام مستعار؛ رشته‌ای که با یک حرف بزرگ انگلیسی آغاز می‌شود و شامل حروف بزرگ انگلیسی، ارقام یا زیرخط است. .It members فهرستی جداشده با کاما از اعضای متعلق به این نام مستعار. به دلیل استفاده از کاما، اگر .Em members شامل بیش از یک عضو باشد، در گیومه دوتایی محصور می‌شود. .El .It rules این بخش شامل قواعد .Em sudoers است که امتیازات را اعطا می‌کنند. بخش .Em rules با سربرگ زیر آغاز می‌شود: .Bd -literal -offset indent rule,user,host,runusers,rungroups,options,command .Ed .Pp فیلدها به شرح زیر هستند: .Bl -tag -width 4n .It rule این فیلد نشان‌دهنده یک ورودی .Em rule در .Em sudoers است. .It user کاربری که قاعده بر او اعمال می‌شود. همچنین می‌تواند یک گروه یونیکس (با پیشوند نویسه .Ql % )، یک گروه غیر یونیکس (با پیشوند .Ql %: ) یا یک نت‌گروپ (با پیشوند نویسه .Ql + ) یا یک .Em User_Alias باشد. اگر بر روی مقدار ویژه .Sy ALL تنظیم شود، با هر کاربری مطابقت خواهد داشت. .It host میزبانی که قاعده بر آن اعمال می‌شود. همچنین می‌تواند یک نت‌گروپ (با پیشوند نویسه .Ql + ) یا یک .Em Host_Alias باشد. اگر بر روی مقدار ویژه .Sy ALL تنظیم شود، با هر میزبانی مطابقت خواهد داشت. .It runusers یک فهرست اختیاری جداشده با کاما از کاربرانی (یا .Em Runas_Alias Ns ها ) که دستور می‌تواند به عنوان آن‌ها اجرا شود. اگر شامل بیش از یک عضو باشد، مقدار در گیومه دوتایی محصور می‌شود. اگر بر روی مقدار ویژه .Sy ALL تنظیم شود، با هر کاربری مطابقت خواهد داشت. اگر خالی باشد، کاربر root فرض می‌شود. .It rungroups یک فهرست اختیاری جداشده با کاما از گروه‌هایی (یا .Em Runas_Alias Ns ها ) که دستور می‌تواند به عنوان آن‌ها اجرا شود. اگر شامل بیش از یک عضو باشد، مقدار در گیومه دوتایی محصور می‌شود. اگر بر روی مقدار ویژه .Sy ALL تنظیم شود، با هر گروهی مطابقت خواهد داشت. اگر خالی باشد، گروه .Em runuser استفاده می‌شود. .It options یک فهرست اختیاری از تنظیمات .Em Defaults برای اعمال بر روی دستور. هر ورودی .Em Tag_Spec در .Em sudoers به .Em options تبدیل می‌شود. .It commands فهرستی از دستورات، همراه با آرگومان‌های اختیاری، که کاربر مجاز به اجرای آن‌ها است. اگر بر روی مقدار ویژه .Sy ALL تنظیم شود، با هر دستوری مطابقت خواهد داشت. .El .Pp برای مثال، ورودی .Em sudoers زیر: .Bd -literal millert ALL = (ALL : ALL) NOPASSWD: ALL, !/usr/bin/id .Ed .Pp تبدیل می‌شود به: .Bd -literal rule,millert,ALL,ALL,ALL,"!authenticate","ALL,!/usr/bin/id" .Ed .El .Sh "فایل‌ها (FILES)" .Bl -tag -width 24n .It Pa /etc/cvtsudoers.conf پیکربندی پیش‌فرض برای cvtsudoers .El .Sh "مثال‌ها (EXAMPLES)" تبدیل .Pa /etc/sudoers به LDIF (قالب تبادل داده LDAP) در صورتی که فایل .Pa ldap.conf از یک .Em sudoers_base به شکل my-domain,dc=com استفاده کند، و ذخیره نتیجه در .Pa sudoers.ldif : .Bd -literal -offset 4n $ cvtsudoers -b ou=SUDOers,dc=my-domain,dc=com -o sudoers.ldif \e /etc/sudoers .Ed .Pp تبدیل .Pa /etc/sudoers به قالب JSON، و ذخیره نتیجه در .Pa sudoers.json : .Bd -literal -offset 4n $ cvtsudoers -f json -o sudoers.json /etc/sudoers .Ed .Pp تجزیه .Pa /etc/sudoers و نمایش تنها قواعدی که با کاربر .Em ambrose بر روی میزبان .Em hastur مطابقت دارند: .Bd -literal -offset 4n $ cvtsudoers -f sudoers -m user=ambrose,host=hastur /etc/sudoers .Ed .Pp مشابه بالا، اما همراه با گسترش نام‌های مستعار و هرس کردن تمام کاربران و میزبان‌های غیرمنطبق از ورودی‌های گسترش‌یافته. .Bd -literal -offset 4n $ cvtsudoers -ep -f sudoers -m user=ambrose,host=hastur /etc/sudoers .Ed .Pp تبدیل .Pa sudoers.ldif از LDIF به قالب سنتی .Em sudoers : .Bd -literal -offset 4n $ cvtsudoers -i ldif -f sudoers -o sudoers.new sudoers.ldif .Ed .Pp ادغام یک فایل سراسری .Em sudoers با دو فایل خط‌مشی مختص میزبان از میزبان‌های .Dq xyzzy و .Dq plugh : .Bd -literal -offset 4n $ cvtsudoers -f sudoers -o sudoers.merged sudoers \e xyzzy:sudoers.xyzzy plugh:sudoers.plugh .Ed .Sh "همچنین ببینید (SEE ALSO)" .Xr sudoers 5 , .Xr sudoers.ldap 5 , .Xr sudo 8 .Sh "نویسندگان (AUTHORS)" افراد بسیاری در طول سال‌ها روی .Nm sudo کار کرده‌اند؛ این نسخه شامل کدهایی است که عمدتاً توسط شخص زیر نوشته شده است: .Bd -ragged -offset indent .An Todd C. Miller .Ed .Pp فایل CONTRIBUTORS.md را در توزیع .Nm sudo (https://www.sudo.ws/about/contributors) برای فهرست جامعی از افرادی که در .Nm sudo مشارکت داشته‌اند ببینید. .Sh "گزارش باگ‌ها (BUGS)" اگر معتقدید باگی در .Nm پیدا کرده‌اید، می‌توانید یک گزارش باگ در پایگاه داده باگ sudo در https://bugzilla.sudo.ws ثبت کنید، یا در https://github.com/sudo-project/sudo/issues یک issue باز کنید. اگر ترجیح می‌دهید از ایمیل استفاده کنید، پیام‌ها می‌توانند به فهرست پستی sudo-workers در https://www.sudo.ws/mailman/listinfo/sudo-workers (عمومی) یا (خصوصی) ارسال شوند. .Pp لطفاً آسیب‌پذیری‌های امنیتی را از طریق issueهای عمومی GitHub، باگزیلا یا فهرست‌های پستی گزارش نکنید. در عوض، آن‌ها را از طریق ایمیل به گزارش دهید. در صورت تمایل می‌توانید پیام خود را با استفاده از کلید موجود در https://www.sudo.ws/dist/PGPKEYS با PGP رمزگذاری کنید. .Sh "پشتیبانی (SUPPORT)" پشتیبانی رایگان و محدود از طریق فهرست پستی sudo-users در دسترس است، برای عضویت یا جستجو در آرشیوها به https://www.sudo.ws/mailman/listinfo/sudo-users مراجعه کنید. .Sh "سلب مسئولیت (DISCLAIMER)" .Nm به صورت .Dq AS IS (همان‌گونه که هست) ارائه می‌شود و هرگونه ضمانت صریح یا ضمنی، از جمله، اما نه محدود به، ضمانت‌های ضمنی قابلیت فروش و تناسب برای یک هدف خاص سلب می‌شود. برای جزئیات کامل فایل LICENSE.md توزیع‌شده با .Nm sudo یا https://www.sudo.ws/about/license را ببینید.