| CVTSUDOERS(1) | General Commands Manual | CVTSUDOERS(1) |
نام (NAME)
cvtsudoers —
تبدیل
بین
فرمتهای
مختلف
پیکربندی
sudoers
خلاصه دستور (SYNOPSIS)
cvtsudoers
[-ehMpV] [-b
dn] [-c
conf_file] [-d
deftypes] [-f
output_format] [-i
input_format] [-I
increment] [-l
log_file] [-m
filter] [-o
output_file] [-O
start_point] [-P
padding] [-s
sections] [input_file ...]
توضیحات (DESCRIPTION)
ابزار
cvtsudoers یک یا
چند خطمشی
امنیتی را
در هر یک از
قالبهای
sudoers یا LDIF به
عنوان
ورودی
میپذیرد و
یک خطمشی
واحد از
قالب
مشخصشده
را به عنوان
خروجی
تولید
میکند.
قالب ورودی
پیشفرض
sudoers است.
قالب خروجی
پیشفرض LDIF
است. تنها
امکان
تبدیل یک
فایل
خطمشی
وجود دارد
که از نظر
نحوی درست
باشد.
اگر هیچ
input_file مشخص
نشده باشد،
یا اگر
‘-’
باشد،
خطمشی از
ورودی
استاندارد
خوانده
میشود.
فایلهای
ورودی
میتوانند
به صورت
اختیاری با
یک نام
میزبان به
همراه
دونقطه
(‘:’)
پیشوندگذاری
شوند تا
قواعد
خطمشی
هنگام
ادغام چند
فایل، در
صورت امکان
مختص به یک
میزبان خاص
شوند.
بهطور
پیشفرض،
نتیجه در
خروجی
استاندارد
نوشته
میشود.
گزینهها به شرح زیر هستند:
-bdn,--base=dn- شناسه پایه
(distinguished name یا DN) که
هنگام
انجام
پرسوجوهای
LDAP استفاده
خواهد شد.
معمولاً
برای دامنه
my-domain.com این
مقدار به
شکل “ou=SUDOers,dc=my-domain,dc=com”
است. اگر
این گزینه
مشخص نشود،
مقدار
متغیر
محیطی
SUDOERS_BASEبه جای آن استفاده خواهد شد. تنها هنگام تبدیل به قالب LDIF ضروری است. -cconf_file,--config=conf_file- مسیر فایل پیکربندی را مشخص میکند. مقدار پیشفرض /etc/cvtsudoers.conf است.
-ddeftypes,--defaults=deftypes- تنها
ورودیهای
Defaults از
نوعهای
مشخصشده
را تبدیل
میکند. یک
یا چند نوع
Defaults
میتواند
مشخص شود که
با کاما
(‘
,’) از یکدیگر جدا میشوند. نوعهای پشتیبانیشده عبارتند از:- all
- تمام ورودیهای Defaults.
- global
- ورودیهای سراسری Defaults که صرفنظر از کاربر، runas، میزبان یا دستور اعمال میشوند.
- user
- ورودیهای Defaults مربوط به هر کاربر.
- runas
- ورودیهای Defaults مربوط به هر کاربر runas.
- host
- ورودیهای Defaults مربوط به هر میزبان.
- command
- ورودیهای Defaults مربوط به هر دستور.
برای اطلاعات بیشتر، بخش Defaults در sudoers(5) را ببینید.
اگر گزینه
-dمشخص نشود، تمام ورودیهای Defaults تبدیل خواهند شد. -e,--expand-aliases- نامهای مستعار را در input_file گسترش میدهد. زمانی که قالب خروجی format برابر JSON یا sudoers باشد، نامهای مستعار بهطور پیشفرض حفظ میشوند.
-foutput_format,--output-format=output_format- قالب خروجی
را مشخص
میکند
(غیرحساس به
بزرگی و
کوچکی
حروف).
قالبهای
زیر
پشتیبانی
میشوند:
- CSV
- فایلهای CSV (مقادیر جداشده با کاما) اغلب توسط برنامههای صفحهگسترده و ابزارهای تولید گزارش استفاده میشوند. برای جزئیات بیشتر به بخش قالب خروجی CSV (CSV output format) مراجعه کنید.
- JSON
- فایلهای JSON (نشانهگذاری اشیاء جاوااسکریپت) معمولاً برای برنامههای شخص ثالث آسانتر از قالب سنتی sudoers قابل پردازش هستند. مقادیر مختلف دارای انواع صریح هستند که بخش عمدهای از ابهام قالب sudoers را برطرف میکند. برای جزئیات بیشتر به بخش قالب خروجی JSON (JSON output format) مراجعه کنید.
- LDIF
- فایلهای LDIF
(قالب
تبادل
داده LDAP) را
میتوان
برای
استفاده
با
sudoers.ldap(5)
به یک سرور
LDAP وارد کرد.
تبدیل به LDIF دارای محدودیتهای زیر است:
- خطوط Defaults خاص دستور، میزبان، runas و کاربر قابل ترجمه نیستند زیرا معادلی در طرحواره (schema) اسناد LDAP مربوط به sudoers ندارند.
- نامهای مستعار دستور، میزبان، runas و کاربر توسط طرحواره LDAP مربوط به sudoers پشتیبانی نمیشوند، بنابراین در طول تبدیل گسترش مییابند.
- sudoers
- قالب سنتی sudoers. یک فایل sudoers جدید از روی فایل ورودی تجزیهشده بازسازی خواهد شد. کامنتها حفظ نمیشوند و دادههای فایلهای الحاقی (include) به صورت درونخطی در خروجی قرار میگیرند.
--group-file=file- هنگامی که
گزینه
-Mنیز مشخص شده باشد، پرسوجوهای گروه را به جای پایگاهداده گروه سیستم با استفاده از file انجام میدهد. -h,--help- یک پیام راهنمای کوتاه در خروجی استاندارد نمایش میدهد و خارج میشود.
-iinput_format,--input-format=input_format- قالب ورودی
را مشخص
میکند.
قالبهای
زیر
پشتیبانی
میشوند:
- LDIF
- فایلهای LDIF (قالب تبادل داده LDAP) را میتوان از یک سرور LDAP استخراج کرد تا خطمشیهای امنیتی مورد استفاده توسط sudoers.ldap(5) تبدیل شوند. اگر یک DN پایه (distinguished name) مشخص شده باشد، تنها اشیاء sudoRole که با DN پایه مطابقت دارند پردازش خواهند شد. همه sudoOptions مشخصشده در یک sudoRole را نمیتوان از قالب LDIF به قالب sudoers تبدیل کرد.
- sudoers
- قالب سنتی sudoers. این قالب ورودی پیشفرض است.
-Iincrement,--increment=increment- هنگام تولید خروجی LDIF، صفت sudoOrder را به ازای هر ورودی به میزان عدد مشخصشده افزایش میدهد. مقدار پیشفرض افزایش 1 است.
-llog_file,--logfile=log_file- هشدارهای تبدیل را به جای خروجی خطای استاندارد، در log_file ثبت میکند. این قابلیت بهویژه هنگام ادغام چندین فایل sudoers که ممکن است تعداد زیادی هشدار ایجاد کنند، مفید است.
-mfilter,--match=filter- تنها
قواعدی را
خروجی
میدهد که
با filter
مشخصشده
مطابقت
داشته
باشند. یک
عبارت filter
از یک یا
چند جفت key =
value تشکیل
میشود که
با کاما
(‘
,’) از هم جدا شدهاند. کلید key میتواند “cmnd” (یا “cmd”), “host”, “group”, یا “user” باشد. به عنوان مثال، user = operator یا host = www. میتوان یک Cmnd_Alias, Host_alias, یا User_Alias با حروف بزرگ را به عنوان “cmnd”, “host”, یا “user” مشخص کرد.یک قاعده منطبق sudoers ممکن است شامل کاربران، گروهها و میزبانهایی نیز باشد که بخشی از filter نیستند. این حالت زمانی رخ میدهد که یک قاعده شامل چندین کاربر، گروه یا میزبان باشد. برای هرس کردن و حذف کاربران، گروهها یا میزبانهای غیرمنطبق از قواعد، میتوان از گزینه
-pاستفاده کرد.بهطور پیشفرض، پایگاههای داده گذرواژه و گروه هنگام بررسی مطابقت با فیلتر در نظر گرفته نمیشوند، بنابراین نیازی نیست کاربران و گروهها روی سیستم محلی وجود داشته باشند (به گزینه
-Mمراجعه کنید). تنها نامهای مستعاری که توسط قواعد خطمشی فیلترشده ارجاع داده شده باشند، نمایش داده خواهند شد. -M,--match-local- هنگامی که
گزینه
-mنیز مشخص شده باشد، هنگام بررسی مطابقت کاربران و گروهها در فیلتر، از اطلاعات پایگاههای داده گذرواژه و گروه سیستم استفاده میکند. تنها کاربران و گروههایی در فیلتر مطابقت خواهند داشت که روی سیستم محلی وجود داشته باشند، و گروههای کاربر بهطور خودکار به فیلتر اضافه خواهند شد. اگر گزینه-Mمشخص نشده باشد، نیازی نیست کاربران و گروههای موجود در فیلتر روی سیستم محلی وجود داشته باشند، اما تمام گروههای مورد استفاده برای تطبیق باید صریحاً در فیلتر فهرست شوند. -ooutput_file,--output=output_file- خروجی
تبدیلشده
را در output_file
مینویسد.
اگر هیچ
output_file مشخص
نشده باشد،
یا اگر
‘
-’ باشد، خطمشی تبدیلشده sudoers در خروجی استاندارد نوشته خواهد شد. -Ostart_point,--order-start=start_point- هنگام
تولید
خروجی LDIF، از
عدد
مشخصشده
توسط start_point
در صفت sudoOrder
اولین شیء sudoRole
استفاده
میکند.
اشیاء sudoRole
بعدی از
مقدار sudoOrder
حاصل از
افزودن یک
increment
استفاده
میکنند،
برای
جزئیات به
گزینه
-Iمراجعه کنید. مقدار پیشفرض نقطه شروع 1 است. نقطه شروع 0 تولید صفتهای sudoOrder را در فایل LDIF حاصل غیرفعال خواهد کرد. --passwd-file=file- هنگامی که
گزینه
-Mنیز مشخص شده باشد، پرسوجوهای passwd را به جای پایگاهداده passwd سیستم با استفاده از file انجام میدهد. -p,--prune-matches- هنگامی که
گزینه
-mنیز مشخص شده باشد،cvtsudoersکاربران، گروهها و میزبانهای غیرمنطبق را از ورودیهای منطبق هرس (حذف) خواهد کرد. -Ppadding,--padding=padding- هنگام
تولید
خروجی LDIF،
مقدار
اولیه sudoOrder را
با الحاق
کردن order_start
و increment
میسازد،
به طوری که
increment با
صفرها
پدینگ
میشود تا
زمانی که
شامل padding
رقم باشد.
به عنوان
مثال، اگر
order_start برابر
1027 باشد،
padding برابر
3، و increment
برابر 1
باشد،
مقدار sudoOrder
برای
نخستین
ورودی 1027000
خواهد بود و
به دنبال آن
1027001، 1027002 و غیره
میآیند.
اگر تعداد
ورودیهای
sudoRole بزرگتر
از مقداری
باشد که
پدینگ
اجازه
میدهد،
cvtsudoersبا یک خطا خارج خواهد شد. بهطور پیشفرض، هیچ پدینگی انجام نمیشود. -ssections,--suppress=sections- از تولید
بخشهای
مشخصشده
از خطمشی
امنیتی در
خروجی
جلوگیری
میکند.
میتوان یک
یا چند نام
بخش را مشخص
کرد که با
کاما
(‘
,’) از یکدیگر جدا میشوند. نامهای بخش پشتیبانیشده عبارتند از: defaults, aliases و privileges (که میتوان آن را به privs کوتاه کرد). -V,--version- نسخههای
cvtsudoersو گرامر sudoers را چاپ کرده و خارج میشود.
ادغام چندین فایل (Merging multiple files)
هنگامی که
چندین فایل
ورودی مشخص
شده باشند،
cvtsudoers تلاش
میکند تا
آنها را در
یک فایل
خطمشی
واحد ادغام
کند. فرض بر
این است که
نامهای
کاربری و
گروه در
میان
فایلهای
خطمشی
مورد نظر
برای
ادغام،
یکپارچه و
سازگار
هستند. برای
مثال،
کاربر “bob”
روی یک
میزبان
همان کاربر
“bob” روی
میزبان
دیگر است.
هنگام
ادغام
فایلهای
خطمشی،
این امکان
وجود دارد
که پیش از
نام فایل
ورودی، نام
میزبان به
همراه
دونقطه
(‘:’) قرار
داده شود.
هنگامی که
فایلها
ادغام
میشوند،
از نام
میزبان در
صورت امکان
برای محدود
کردن قواعد
خطمشی به
آن میزبان
خاص
استفاده
خواهد شد.
فرآیند ادغام به شرح زیر انجام میشود:
- هر فایل ورودی به ساختارهای داده داخلی sudoers تجزیه میشود.
- نامهای
مستعار
ادغام شده و
در صورت
نیاز برای
جلوگیری از
تداخل
تغییر نام
مییابند.
در صورت
بروز
تداخل،
نخستین نام
مستعار
یافتشده
دستنخورده
باقی
میماند و
نامهای
مستعار
بعدی با
همان نام با
یک پسوند
عددی که با
زیرخط
(‘
_’) جدا شده است، تغییر نام داده میشوند. برای مثال، اگر دو نام مستعار متفاوت با نامSERVERSوجود داشته باشند، اولی دستنخورده باقی میماند و دومی بهSERVERS_1تغییر نام مییابد. ارجاعات به نام مستعار تغییریافته نیز در فایل خطمشی بهروزرسانی میشوند. نامهای مستعار تکراری (آنهایی که محتوای کاملاً یکسان دارند) هرس میشوند. - تنظیمات Defaults
ادغام
میشوند و
موارد
تکراری حذف
میگردند.
اگر در
تنظیمات Defaults
تداخلی
وجود داشته
باشد، برای
هر تداخل یک
هشدار صادر
میشود. اگر
یک نام
میزبان
همراه با
فایل ورودی
مشخص شده
باشد،
cvtsudoersتنظیمات سراسری Defaults در آن فایل را به تنظیمات مختص میزبان تغییر میدهد. برای تنظیمات Defaults خاص دستور، کاربر، یا runas که امکان تبدیل آنها به تنظیمات مختص میزبان وجود ندارد، یک هشدار صادر میشود. - قواعد به
ازای هر
کاربر
ادغام
میشوند و
موارد
تکراری حذف
میگردند.
اگر نام
میزبان
همراه با
فایل ورودی
مشخص شده
باشد،
cvtsudoersقواعدی را که نام میزبان ALL را مشخص کردهاند، به نام میزبان مرتبط با فایل خطمشی در حال ادغام تغییر میدهد. ادغام قواعد در حال حاضر نسبتاً ساده است اما در نسخههای بعدی بهبود خواهد یافت.
امکان ادغام فایلهای خطمشی با قالبهای مختلف وجود دارد.
فایل cvtsudoers.conf (The cvtsudoers.conf file)
گزینهها در قالب “keyword = value” را میتوان در یک فایل پیکربندی نیز مشخص کرد که بهطور پیشفرض در /etc/cvtsudoers.conf قرار دارد. کلمات کلیدی زیر شناختهشده هستند:
- defaults = deftypes
- توضیحات
گزینه خط
فرمان
-dرا ببینید. - expand_aliases = yes | no
- توضیحات
گزینه خط
فرمان
-eرا ببینید. - group_file = file
- توضیحات
گزینه خط
فرمان
--group-fileرا ببینید. - input_format = ldif | sudoers
- توضیحات
گزینه خط
فرمان
-iرا ببینید. - match = filter
- توضیحات
گزینه خط
فرمان
-mرا ببینید. - match_local = yes | no
- توضیحات
گزینه خط
فرمان
-Mرا ببینید. - order_increment = increment
- توضیحات
گزینه خط
فرمان
-Iرا ببینید. - order_start = start_point
- توضیحات
گزینه خط
فرمان
-Oرا ببینید. - output_format = csv | json | ldif | sudoers
- توضیحات
گزینه خط
فرمان
-fرا ببینید. - padding = padding
- توضیحات
گزینه خط
فرمان
-Pرا ببینید. - passwd_file = file
- توضیحات
گزینه خط
فرمان
--passwd-fileرا ببینید. - prune_matches = yes | no
- توضیحات
گزینه خط
فرمان
-pرا ببینید. - sudoers_base = dn
- توضیحات
گزینه خط
فرمان
-bرا ببینید. - suppress = sections
- توضیحات
گزینه خط
فرمان
-sرا ببینید.
گزینههای مشخصشده در خط فرمان، مقادیر موجود در فایل پیکربندی را نادیده گرفته و جایگزین (override) میکنند.
قالب خروجی JSON (JSON output format)
قالب JSON مربوط به sudoers میتواند شامل هر یک از اشیاء سطح بالای زیر باشد:
- Defaults
- آرایهای
از اشیاء،
که هر کدام
شامل یک
آرایه Options
و یک آرایه
اختیاری
Binding هستند.
آرایه Options شامل یک یا چند شیء است، که هر یک دارای یک جفت “name:value” منطبق بر یک تنظیم Defaults در sudoers هستند. گزینههایی (Options) که روی یک فهرست عمل میکنند، همچنین شامل یک ورودی operation در شیء خواهند بود، با مقدار “list_assign” برای ‘
=’, مقدار “list_add” برای ‘+=’, یا “list_remove” برای ‘-=’.آرایه اختیاری Binding شامل یک یا چند شیء است که هر کدام دارای یک جفت “name:value” و یک ورودی اختیاری negated هستند که هر مقایسه انجامشده با آن شیء را نفی (معکوس) میکند. اگر یک Binding حضور داشته باشد، تنظیم تنها زمانی اعمال میشود که یکی از ورودیهای مشخصشده command, hostname, netgroup, networkaddr, nonunixgid, nonunixgroup, usergid, usergroup, userid, username, یا نامهای مستعار مطابقت داشته باشد.
برای مثال، ورودی sudoers زیر:
Defaults@somehost set_home, env_keep += DISPLAY
تبدیل میشود به:
"Defaults": [ { "Binding": [ { "hostname": "somehost" } ], "Options": [ { "set_home": true }, { "operation": "list_add", "env_keep": [ "DISPLAY" ] } ] } ] - User_Aliases
- یک شیء JSON
شامل یک یا
چند ورودی
User_Alias در sudoers
است که در
آن هر نام
مستعار به
عنوان
مقدار خود،
دارای
آرایهای
شامل یک یا
چند شیء
است. هر شیء
شامل یک جفت
“name:value” و یک
ورودی
اختیاری
negated است که
هر مقایسه
انجامشده
با آن شیء
را نفی
میکند. نام
میتواند
یکی از
موارد netgroup,
nonunixgid, nonunixgroup,
useralias, usergid,
usergroup, userid, یا
username باشد.
برای مثال، ورودی sudoers زیر:
User_Alias SYSADMIN = will, %wheel, +admin
تبدیل میشود به:
"User_Aliases": { "SYSADMIN": [ { "username": "will" }, { "usergroup": "wheel" }, { "netgroup": "admin" } ] } - Runas_Aliases
- یک شیء JSON
شامل یک یا
چند ورودی
Runas_Alias در sudoers
است، که در
آن هر نام
مستعار به
عنوان
مقدار خود،
دارای
آرایهای
شامل یک یا
چند شیء
است. هر شیء
شامل یک جفت
“name:value” و یک
ورودی
اختیاری
negated است که
هر مقایسه
انجامشده
با آن شیء
را نفی
میکند. نام
میتواند
یکی از
موارد netgroup,
nonunixgid, nonunixgroup,
runasalias, usergid,
usergroup, userid, یا
username باشد.
برای مثال، ورودی sudoers زیر:
Runas_Alias DB = oracle, sybase : OP = root, operator
تبدیل میشود به:
"Runas_Aliases": { "DB": [ { "username": "oracle" }, { "username": "sybase" } ], "OP": [ { "username": "root" }, { "username": "operator" } ] } - Host_Aliases
- یک شیء JSON
شامل یک یا
چند ورودی
Host_Alias در sudoers
است که در
آن هر نام
مستعار به
عنوان
مقدار خود،
دارای
آرایهای
شامل یک یا
چند شیء
است. هر شیء
شامل یک جفت
“name:value” و یک
ورودی
اختیاری
negated است که
هر مقایسه
انجامشده
با آن شیء
را نفی
میکند. نام
میتواند
یکی از
موارد hostalias,
hostname, netgroup, یا
networkaddr باشد.
برای مثال، ورودیهای sudoers زیر:
Host_Alias DORMNET = 128.138.243.0, 128.138.204.0/24 Host_Alias SERVERS = boulder, refuge
تبدیل میشوند به:
"Host_Aliases": { "DORMNET": [ { "networkaddr": "128.138.243.0" }, { "networkaddr": "128.138.204.0/24" } ], "SERVERS": [ { "hostname": "boulder" }, { "hostname": "refuge" } ] } - Cmnd_Aliases
- یک شیء JSON
شامل یک یا
چند ورودی
Cmnd_Alias در sudoers
است که در
آن هر نام
مستعار به
عنوان
مقدار خود،
دارای
آرایهای
شامل یک یا
چند شیء
است. هر شیء
شامل یک جفت
“name:value” و یک
ورودی
اختیاری
negated است که
هر مقایسه
انجامشده
با آن شیء
را نفی
میکند. نام
میتواند
یک
cmndalias
دیگر یا یک
command باشد.
برای مثال،
ورودیهای
sudoers زیر:
Cmnd_Alias SHELLS = /bin/bash, /bin/csh, /bin/sh, /bin/zsh Cmnd_Alias VIPW = /usr/bin/chpass, /usr/bin/chfn, /usr/bin/chsh, \ /usr/bin/passwd, /usr/sbin/vigr, /usr/sbin/vipwتبدیل میشوند به:
"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" } ] } - User_Specs
- یک آرایه JSON
شامل یک یا
چند شیء، که
هر کدام
نشاندهنده
یک User_Spec در sudoers
هستند. هر
شیء در
آرایه
User_Specs
باید شامل
یک آرایه
User_List, یک
آرایه Host_List
و یک آرایه
Cmnd_Specs باشد.
یک User_List از یک یا چند شیء تشکیل میشود. هر شیء شامل یک جفت “name:value” و یک ورودی اختیاری negated است که هر مقایسه انجامشده با آن شیء را نفی میکند. نام میتواند یکی از موارد netgroup, nonunixgid, nonunixgroup, useralias, usergid, usergroup, userid, یا username باشد. اگر username بر روی مقدار ویژه ALL تنظیم شود، با هر کاربری مطابقت خواهد داشت.
یک Host_List شامل یک یا چند شیء است. هر شیء شامل یک جفت “name:value” و یک ورودی اختیاری negated است که هر مقایسه انجامشده با آن شیء را نفی میکند. نام میتواند یکی از موارد hostalias, hostname, netgroup, یا networkaddr باشد. اگر hostname بر روی مقدار ویژه ALL تنظیم شود، با هر میزبانی مطابقت خواهد داشت.
آرایه Cmnd_Specs شامل یک یا چند شیء JSON است که دستوری را که مجاز به اجرا است توصیف میکند. هر Cmnd_Specs از یک آرایه Commands, یک آرایه اختیاری runasusers, یک آرایه اختیاری runasgroups, و یک آرایه اختیاری Options تشکیل شده است.
آرایه Commands شامل یک یا چند شیء دارای عناصر جفت “name:value” است. نامها و مقادیر زیر پشتیبانی میشوند:
- command
- رشتهای حاوی دستوری که باید اجرا شود. مقدار ویژه ALL با هر دستوری مطابقت خواهد داشت.
- negated
- یک مقدار بولی که اگر درست (true) باشد، هر مقایسه انجامشده با آن شیء را نفی میکند.
- sha224
- یک یا چند چکیده SHA224 برای command به شکل رشته. چندین چکیده از یک نوع به عنوان یک آرایه ذخیره میشوند.
- sha256
- یک یا چند چکیده SHA256 برای command به شکل رشته. چندین چکیده از یک نوع به عنوان یک آرایه ذخیره میشوند.
- sha384
- یک یا چند چکیده SHA384 برای command به شکل رشته. چندین چکیده از یک نوع به عنوان یک آرایه ذخیره میشوند.
- sha512
- یک یا چند چکیده SHA512 برای command به شکل رشته. چندین چکیده از یک نوع به عنوان یک آرایه ذخیره میشوند.
آرایه runasusers شامل اشیایی است که کاربرانی را توصیف میکنند که دستور میتواند به عنوان آنها اجرا شود. هر شیء شامل یک جفت “name:value” و یک ورودی اختیاری negated است که هر مقایسه انجامشده با آن شیء را نفی میکند. نام میتواند یکی از موارد netgroup, nonunixgid, nonunixgroup, runasalias, usergid, usergroup, userid, یا username باشد. اگر username بر روی مقدار ویژه ALL تنظیم شود، با هر کاربری مطابقت خواهد داشت. اگر username بر روی رشته خالی “” تنظیم شود، با کاربر فراخواننده مطابقت خواهد داشت.
آرایه runasgroups شامل اشیایی است که گروههایی را توصیف میکنند که دستور میتواند به عنوان آنها اجرا شود. هر شیء شامل یک جفت “name:value” و یک ورودی اختیاری negated است که هر مقایسه انجامشده با آن شیء را نفی میکند. نام میتواند یکی از موارد runasalias, usergid, یا usergroup باشد. اگر usergroup بر روی مقدار ویژه ALL تنظیم شود، با هر گروهی مطابقت خواهد داشت.
آرایه Options دارای قالبی مشابه آرایه موجود در شیء Defaults است. هر ورودی Tag_Spec در sudoers به Options تبدیل میشود. یک کاربر با امتیازات “sudo ALL” بهطور خودکار گزینه setenv را فعال خواهد داشت تا با رفتار ضمنی ارائهشده توسط sudoers مطابقت داشته باشد.
برای مثال، ورودی sudoers زیر:
millert ALL = (ALL : ALL) NOPASSWD: ALL, !/usr/bin/id
تبدیل میشود به:
"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 } ] } ] } ]
قالب خروجی CSV (CSV output format)
فایلهای
CSV (مقادیر
جداشده با
کاما) اغلب
توسط
برنامههای
صفحهگسترده
و ابزارهای
تولید
گزارش
استفاده
میشوند.
برای خروجی
CSV، cvtsudoers
رشتههایی
را که دارای
کاما هستند
در گیومه
دوتایی
قرار
میدهد. به
ازای هر
نویسه
گیومه
دوتایی
واقعی
موجود در
داخل رشته،
دو گیومه
دوتایی چاپ
میشود. این
روش محصور
کردن کاما
با اغلب
برنامههای
صفحهگسترده
سازگار
است.
سه بخش
ممکن در
خروجی CSV
دستور cvtsudoers
وجود دارد
که هر یک با
یک خط خالی
جدا
میشوند:
- defaults
- این بخش
شامل هر یک
از تنظیمات
Defaults در sudoers
است. بخش
defaults با
سربرگ زیر
آغاز
میشود:
defaults_type,binding,name,operator,value
فیلدها به شرح زیر هستند:
- defaults_type
- نوع تنظیم Defaults; یکی از موارد defaults, defaults_command, defaults_host, defaults_runas, یا defaults_user.
- binding
- برای defaults_command, defaults_host, defaults_runas, و defaults_user این مقداری است که برای اعمال تنظیم باید مطابقت داشته باشد.
- name
- نام تنظیم Defaults.
- operator
- عملگر
مشخص
میکند که
مقدار
چگونه بر
روی تنظیم
اعمال شود.
این مقدار
میتواند
یکی از
موارد
‘
=’ (انتساب)، ‘+=’ (افزودن)، یا ‘-=’ (حذف) باشد. - value
- مقدار تنظیم، معمولاً یک رشته است یا برای تنظیماتی که در زمینه بولی استفاده میشوند، true یا false.
- aliases
- این بخش
شامل هر یک
از
ورودیهای
Cmnd_Alias, Host_Alias,
Runas_Alias, یا
User_Alias از sudoers
است. بخش
aliases با
سربرگ زیر
آغاز
میشود:
alias_type,alias_name,members
فیلدها به شرح زیر هستند:
- alias_type
- نوع نام مستعار؛ یکی از موارد Cmnd_Alias, Host_Alias, Runas_Alias, یا User_Alias.
- alias_name
- نام این نام مستعار؛ رشتهای که با یک حرف بزرگ انگلیسی آغاز میشود و شامل حروف بزرگ انگلیسی، ارقام یا زیرخط است.
- members
- فهرستی جداشده با کاما از اعضای متعلق به این نام مستعار. به دلیل استفاده از کاما، اگر members شامل بیش از یک عضو باشد، در گیومه دوتایی محصور میشود.
- rules
- این بخش
شامل قواعد
sudoers است که
امتیازات
را اعطا
میکنند.
بخش
rules
با سربرگ
زیر آغاز
میشود:
rule,user,host,runusers,rungroups,options,command
فیلدها به شرح زیر هستند:
- rule
- این فیلد نشاندهنده یک ورودی rule در sudoers است.
- user
- کاربری که
قاعده بر
او اعمال
میشود.
همچنین
میتواند
یک گروه
یونیکس (با
پیشوند
نویسه
‘
%’ )، یک گروه غیر یونیکس (با پیشوند ‘%:’) یا یک نتگروپ (با پیشوند نویسه ‘+’ ) یا یک User_Alias باشد. اگر بر روی مقدار ویژه ALL تنظیم شود، با هر کاربری مطابقت خواهد داشت. - host
- میزبانی
که قاعده
بر آن
اعمال
میشود.
همچنین
میتواند
یک
نتگروپ
(با پیشوند
نویسه
‘
+’ ) یا یک Host_Alias باشد. اگر بر روی مقدار ویژه ALL تنظیم شود، با هر میزبانی مطابقت خواهد داشت. - runusers
- یک فهرست اختیاری جداشده با کاما از کاربرانی (یا Runas_Aliasها) که دستور میتواند به عنوان آنها اجرا شود. اگر شامل بیش از یک عضو باشد، مقدار در گیومه دوتایی محصور میشود. اگر بر روی مقدار ویژه ALL تنظیم شود، با هر کاربری مطابقت خواهد داشت. اگر خالی باشد، کاربر root فرض میشود.
- rungroups
- یک فهرست اختیاری جداشده با کاما از گروههایی (یا Runas_Aliasها) که دستور میتواند به عنوان آنها اجرا شود. اگر شامل بیش از یک عضو باشد، مقدار در گیومه دوتایی محصور میشود. اگر بر روی مقدار ویژه ALL تنظیم شود، با هر گروهی مطابقت خواهد داشت. اگر خالی باشد، گروه runuser استفاده میشود.
- options
- یک فهرست اختیاری از تنظیمات Defaults برای اعمال بر روی دستور. هر ورودی Tag_Spec در sudoers به options تبدیل میشود.
- commands
- فهرستی از دستورات، همراه با آرگومانهای اختیاری، که کاربر مجاز به اجرای آنها است. اگر بر روی مقدار ویژه ALL تنظیم شود، با هر دستوری مطابقت خواهد داشت.
برای مثال، ورودی sudoers زیر:
millert ALL = (ALL : ALL) NOPASSWD: ALL, !/usr/bin/id
تبدیل میشود به:
rule,millert,ALL,ALL,ALL,"!authenticate","ALL,!/usr/bin/id"
فایلها (FILES)
- /etc/cvtsudoers.conf
- پیکربندی پیشفرض برای cvtsudoers
مثالها (EXAMPLES)
تبدیل /etc/sudoers به LDIF (قالب تبادل داده LDAP) در صورتی که فایل ldap.conf از یک sudoers_base به شکل my-domain,dc=com استفاده کند، و ذخیره نتیجه در sudoers.ldif:
$ cvtsudoers -b ou=SUDOers,dc=my-domain,dc=com -o sudoers.ldif \
/etc/sudoers
تبدیل /etc/sudoers به قالب JSON، و ذخیره نتیجه در sudoers.json:
$ cvtsudoers -f json -o sudoers.json /etc/sudoers
تجزیه /etc/sudoers و نمایش تنها قواعدی که با کاربر ambrose بر روی میزبان hastur مطابقت دارند:
$ cvtsudoers -f sudoers -m user=ambrose,host=hastur /etc/sudoers
مشابه بالا، اما همراه با گسترش نامهای مستعار و هرس کردن تمام کاربران و میزبانهای غیرمنطبق از ورودیهای گسترشیافته.
$ cvtsudoers -ep -f sudoers -m user=ambrose,host=hastur /etc/sudoers
تبدیل sudoers.ldif از LDIF به قالب سنتی sudoers:
$ cvtsudoers -i ldif -f sudoers -o sudoers.new sudoers.ldif
ادغام یک فایل سراسری sudoers با دو فایل خطمشی مختص میزبان از میزبانهای “xyzzy” و “plugh”:
$ cvtsudoers -f sudoers -o sudoers.merged sudoers \
xyzzy:sudoers.xyzzy plugh:sudoers.plugh
همچنین ببینید (SEE ALSO)
نویسندگان (AUTHORS)
افراد
بسیاری در
طول سالها
روی sudo
کار
کردهاند؛
این نسخه
شامل
کدهایی است
که عمدتاً
توسط شخص
زیر نوشته
شده است:
فایل CONTRIBUTORS.md را
در توزیع
sudo (https://www.sudo.ws/about/contributors)
برای فهرست
جامعی از
افرادی که
در sudo
مشارکت
داشتهاند
ببینید.
گزارش باگها (BUGS)
اگر
معتقدید
باگی در
cvtsudoers پیدا
کردهاید،
میتوانید
یک گزارش
باگ در
پایگاه
داده باگ sudo
در https://bugzilla.sudo.ws ثبت
کنید، یا در
https://github.com/sudo-project/sudo/issues یک issue
باز کنید.
اگر ترجیح
میدهید از
ایمیل
استفاده
کنید،
پیامها
میتوانند
به فهرست
پستی sudo-workers در
https://www.sudo.ws/mailman/listinfo/sudo-workers
(عمومی) یا
<sudo@sudo.ws> (خصوصی)
ارسال
شوند.
لطفاً آسیبپذیریهای امنیتی را از طریق issueهای عمومی GitHub، باگزیلا یا فهرستهای پستی گزارش نکنید. در عوض، آنها را از طریق ایمیل به <Todd.Miller@sudo.ws> گزارش دهید. در صورت تمایل میتوانید پیام خود را با استفاده از کلید موجود در https://www.sudo.ws/dist/PGPKEYS با PGP رمزگذاری کنید.
پشتیبانی (SUPPORT)
پشتیبانی رایگان و محدود از طریق فهرست پستی sudo-users در دسترس است، برای عضویت یا جستجو در آرشیوها به https://www.sudo.ws/mailman/listinfo/sudo-users مراجعه کنید.
سلب مسئولیت (DISCLAIMER)
cvtsudoers به
صورت “AS IS”
(همانگونه
که هست)
ارائه
میشود و
هرگونه
ضمانت صریح
یا ضمنی، از
جمله، اما
نه محدود
به،
ضمانتهای
ضمنی
قابلیت
فروش و
تناسب برای
یک هدف خاص
سلب میشود.
برای
جزئیات
کامل فایل LICENSE.md
توزیعشده
با sudo یا
https://www.sudo.ws/about/license را
ببینید.
| February 22, 2025 | Sudo 1.9.17p2 |