KDB5_UTIL(8) MIT Kerberos KDB5_UTIL(8)

kdb5_util - ابزار نگهداری و مدیریت پایگاه‌داده کربروس

kdb5_util [-r realm] [-d dbname] [-k mkeytype] [-kv mkeyVNO] [-M mkeyname] [-m] [-sf stashfilename] [-P password] [-x db_args] command [command_options]

ابزار kdb5_util به مدیر سیستم اجازه می‌دهد عملیات نگهداری و مدیریت را بر روی پایگاه‌داده KDC انجام دهد. پایگاه‌های داده را می‌توان ایجاد کرد، از بین برد، و در قالب فایل‌های اسکی (ASCII) خروجی گرفت (dump) یا بارگذاری کرد (load). همچنین kdb5_util می‌تواند فایل ذخیره امن کلید اصلی (stash file) کربروس را ایجاد کرده یا تعویض بدون وقفه (live rollover) کلید اصلی را انجام دهد.

هنگامی که kdb5_util اجرا می‌شود، تلاش می‌کند کلید اصلی (master key) را به دست آورده و پایگاه‌داده را باز کند. با این حال، صرف‌نظر از اینکه پایگاه‌داده با موفقیت باز شود یا خیر، اجرای برنامه ادامه می‌یابد؛ چرا که ممکن است پایگاه‌داده هنوز ایجاد نشده باشد یا فایل stash خراب باشد.

توجه داشته باشید که ممکن است برخی ماژول‌های پایگاه‌داده KDC از تمامی دستورات kdb5_util پشتیبانی نکنند.

قلمرو (realm) کربروس پایگاه‌داده را مشخص می‌کند.
نامی را که پایگاه‌داده کاربر اصلی تحت آن ذخیره شده است مشخص می‌کند؛ به‌طور پیش‌فرض این پایگاه‌داده همان موردی است که در kdc.conf فهرست شده است. پایگاه‌داده خط‌مشی گذرواژه و فایل‌های قفل نیز از این مقدار مشتق می‌شوند.
نوع کلید برای کلید اصلی در پایگاه‌داده را مشخص می‌کند. مقدار پیش‌فرض توسط متغیر master_key_type در kdc.conf تعیین می‌شود.
شماره نگارش کلید اصلی در پایگاه‌داده را مشخص می‌کند؛ مقدار پیش‌فرض ۱ است. توجه داشته باشید که مقدار ۰ مجاز نیست.
نام شناسه اصلی (principal name) برای کلید اصلی در پایگاه‌داده. اگر مشخص نشود، نام توسط متغیر master_key_name در kdc.conf تعیین می‌شود.
مشخص می‌کند که گذرواژه پایگاه‌داده اصلی باید از صفحه‌کلید خوانده شود، نه اینکه از یک فایل روی دیسک واکشی گردد.
نام فایل stash گذرواژه پایگاه‌داده اصلی را مشخص می‌کند. اگر مشخص نشود، نام فایل توسط متغیر key_stash_file در kdc.conf تعیین می‌شود.
گذرواژه پایگاه‌داده اصلی را مشخص می‌کند. استفاده از این گزینه ممکن است گذرواژه را از طریق فهرست پردازش‌ها در دسترس سایر کاربران سیستم قرار دهد.
گزینه‌های خاص پایگاه‌داده را مشخص می‌کند. برای مشاهده گزینه‌های پشتیبانی‌شده، kadmin را ببینید.

create [-s]

یک پایگاه‌داده جدید ایجاد می‌کند. اگر گزینه -s مشخص شود، فایل stash نیز ایجاد می‌شود. این دستور در صورتی که پایگاه‌داده از قبل وجود داشته باشد با شکست مواجه خواهد شد. در صورت موفقیت دستور، پایگاه‌داده دقیقاً همانند زمانی باز می‌شود که هنگام اجرای اولیه برنامه از پیش وجود داشته است.

destroy [-f]

پایگاه‌داده را از بین می‌برد؛ ابتدا سکتورهای دیسک را بازنویسی کرده و سپس پس از درخواست تایید از کاربر، پیوند فایل‌ها را حذف (unlink) می‌کند. با آرگومان -f، از کاربر تاییدیه‌ای درخواست نمی‌شود.

stash [-f keyfile]

کلیدهای شناسه اصلی (master principal) را در یک فایل stash ذخیره می‌کند. از آرگومان -f می‌توان برای بازنویسی keyfile مشخص‌شده در kdc.conf استفاده کرد.

dump [-b7|-r13|-r18] [-verbose] [-mkey_convert] [-new_mkey_file mkey_file] [-rev] [-recurse] [filename [principals...]]

پایگاه‌داده کنونی کربروس و KADM5 را در یک فایل ASCII تخلیه (dump) می‌کند. به‌طور پیش‌فرض، پایگاه‌داده در قالب فعلی یعنی "kdb5_util load_dump version 7" تخلیه می‌شود. اگر filename مشخص نشود، یا رشته "-" باشد، خروجی dump به خروجی استاندارد ارسال می‌گردد. گزینه‌ها:

باعث می‌شود خروجی در قالب Kerberos 5 Beta 7 (یعنی "kdb5_util load_dump version 4") باشد. این قالب خروجی در نگارش‌های پیش از 1.2.2 تولید می‌شد.
باعث می‌شود خروجی در قالب Kerberos 5 1.3 (یعنی "kdb5_util load_dump version 5") باشد. این قالب خروجی در نگارش‌های پیش از 1.8 تولید می‌شد.
باعث می‌شود خروجی در قالب Kerberos 5 1.8 (یعنی "kdb5_util load_dump version 6") باشد. این قالب خروجی در نگارش‌های پیش از 1.11 تولید می‌شد.
باعث می‌شود نام هر شناسه اصلی (principal) و خط‌مشی هنگام تخلیه شدن چاپ شود.
برای دریافت یک کلید اصلی جدید اعلان می‌کند. این کلید اصلی جدید برای رمزگذاری مجدد داده‌های کلید principal در فایل dump استفاده خواهد شد. خود کلیدهای شناسه اصلی بدون تغییر باقی می‌مانند.
نام فایل یک stash file است. کلید اصلی موجود در این فایل stash برای رمزگذاری مجدد داده‌های کلید در فایل dump استفاده خواهد شد. داده‌های کلید در پایگاه‌داده بدون تغییر باقی می‌مانند.
تخلیه را با ترتیب معکوس انجام می‌دهد. در مواردی که خرابی پایگاه‌داده رخ داده باشد، این کار ممکن است شناسه‌های اصلی را که به شکل عادی تخلیه نمی‌شوند بازیابی کند.
باعث می‌شود فرآیند تخلیه پایگاه‌داده را به صورت بازگشتی پیمایش کند (تنها برای btree). این کار ممکن است در مواردی که خرابی پایگاه‌داده رخ داده باشد، شناسه‌های اصلی را که به صورت عادی تخلیه نمی‌شوند بازیابی کند. در صورت بروز چنین خرابی‌هایی، این گزینه احتمالاً شناسه‌های اصلی بیشتری را نسبت به گزینه -rev بازیابی خواهد کرد.

تغییریافته در نگارش 1.15: انتشار 1.15 قابلیت عملکرد گزینه -recurse را بازگرداند.

تغییریافته در نگارش 1.5: گزینه -recurse تا انتشار 1.15 از کار افتاده بود و به جای پیمایش بازگشتی، یک تخلیه معمولی انجام می‌داد.

load [-b7|-r13|-r18] [-hash] [-verbose] [-update] filename

یک فایل تخلیه‌شده پایگاه‌داده را از فایل نام‌برده در پایگاه‌داده مشخص‌شده بارگذاری می‌کند. اگر هیچ گزینه‌ای برای تعیین قالب فایل dump داده نشود، قالب به‌طور خودکار تشخیص داده شده و به صورت مناسب مدیریت می‌شود. مگر اینکه گزینه -update مشخص شده باشد، دستور load یک پایگاه‌داده جدید که تنها شامل داده‌های فایل dump است ایجاد کرده و محتویات هر پایگاه‌داده از پیش موجود را بازنویسی می‌کند. توجه داشته باشید که هنگام استفاده از ماژول پایگاه‌داده LDAP KDC، فلگ -update الزامی است.

گزینه‌ها:

نیازمند آن است که پایگاه‌داده در قالب Kerberos 5 Beta 7 (یعنی "kdb5_util load_dump version 4") باشد. این همان قالب خروجی تولیدشده در نگارش‌های پیش از 1.2.2 است.
نیازمند آن است که پایگاه‌داده در قالب Kerberos 5 1.3 (یعنی "kdb5_util load_dump version 5") باشد. این همان قالب خروجی تولیدشده در نگارش‌های پیش از 1.8 است.
نیازمند آن است که پایگاه‌داده در قالب Kerberos 5 1.8 (یعنی "kdb5_util load_dump version 6") باشد. این همان قالب خروجی تولیدشده در نگارش‌های پیش از 1.11 است.
در صورت استفاده از نوع پایگاه‌داده DB2، پایگاه‌داده را در قالب هش (hash) ذخیره می‌کند. اگر این گزینه مشخص نشود، پایگاه‌داده در قالب btree ذخیره خواهد شد. این گزینه توصیه نمی‌شود، چرا که مشخص شده پایگاه‌های داده ذخیره‌شده در قالب هش دچار خرابی داده‌ها شده و شناسه‌های اصلی را از دست می‌دهند.
باعث می‌شود نام هر شناسه اصلی و خط‌مشی به هنگام بارگذاری چاپ شود.
رکوردهای فایل dump به پایگاه‌داده موجود اضافه یا در آن به‌روزرسانی می‌شوند. در غیر این صورت، یک پایگاه‌داده جدید که تنها شامل داده‌های فایل dump است ایجاد شده و پایگاه‌داده قدیمی پس از اتمام موفقیت‌آمیز نابود می‌شود.

ark [-e enc:salt,...] principal

کلیدهای تصادفی جدیدی را با شماره نگارش کلید بعدی در دسترس به principal اضافه می‌کند. کلیدهای مربوط به بالاترین شماره نگارش فعلی حفظ خواهند شد. گزینه -e فهرستی از انواع رمزنگاری و نوع سالت (salt) را مشخص می‌کند که باید برای کلیدهای جدید استفاده شوند.

add_mkey [-e etype] [-s]

یک کلید اصلی جدید به شناسه کلید اصلی اضافه می‌کند، اما آن را به عنوان فعال علامت‌گذاری نمی‌کند. کلیدهای اصلی موجود باقی خواهند ماند. گزینه -e نوع رمزنگاری کلید اصلی جدید را مشخص می‌کند؛ برای مشاهده فهرستی از مقادیر ممکن، بخش انواع رمزنگاری (Encryption types) در kdc.conf را ببینید. گزینه -s کلید اصلی جدید را در فایل stash ذخیره می‌کند که در صورت عدم وجود، ایجاد خواهد شد.

پس از افزودن یک کلید اصلی جدید، باید از طریق فراخوانی دستی یا دوره‌ای kprop به سرورهای رونوشت (replica) منتشر شود. سپس فایل‌های stash در سرورهای رونوشت باید با دستور stash در kdb5_util به‌روزرسانی شوند. پس از تکمیل این مراحل، کلید آماده خواهد بود تا با دستور use_mkey در kdb5_util به عنوان فعال علامت‌گذاری شود.

use_mkey mkeyVNO [time]

زمان فعال‌سازی کلید اصلی مشخص‌شده توسط mkeyVNO را تنظیم می‌کند. هنگامی که یک کلید اصلی فعال شود، برای رمزگذاری کلیدهای تازه‌ایجادشده شناسه‌های اصلی استفاده خواهد شد. اگر هیچ آرگومان time داده نشود، از زمان فعلی استفاده می‌شود که باعث خواهد شد نگارش کلید اصلی مشخص‌شده بلافاصله فعال شود. قالب time یک رشته زمانی getdate است.

پس از فعال شدن یک کلید اصلی جدید، می‌توان از دستور update_princ_encryption در kdb5_util برای به‌روزرسانی تمامی کلیدهای principal جهت رمزگذاری با کلید اصلی جدید استفاده کرد.

list_mkeys

تمامی کلیدهای اصلی را، از جدیدترین به قدیمی‌ترین، در شناسه کلید اصلی فهرست می‌کند. خروجی برنامه kvno، enctype و نوع سالت را برای هر mkey نمایش می‌دهد، مشابه خروجی دستور getprinc در kadmin. وجود علامت * به دنبال یک mkey نشان‌دهنده کلید اصلی فعال فعلی است.

purge_mkeys [-f] [-n] [-v]

کلیدهای اصلی را که برای محافظت از هیچ شناسه اصلی استفاده نمی‌شوند، از شناسه کلید اصلی حذف می‌کند. این دستور می‌تواند برای حذف کلیدهای اصلی قدیمی پس از آنکه تمامی کلیدهای principal با یک کلید اصلی جدیدتر محافظت شدند، استفاده شود.

تاییدیه‌ای از کاربر درخواست نمی‌کند.
یک اجرای آزمایشی انجام می‌دهد و کلیدهای اصلی را که پاکسازی خواهند شد نشان می‌دهد، اما عملاً هیچ کلیدی را حذف نمی‌کند.
خروجی با جزئیات بیشتری تولید می‌کند.

update_princ_encryption [-f] [-n] [-v] [princ-pattern]

تمامی رکوردهای principal (یا تنها رکوردهای منطبق بر الگوی glob مشخص‌شده در princ-pattern) را در صورتی که با نگارش متفاوتی رمزگذاری شده باشند، به‌روزرسانی می‌کند تا با استفاده از کلید اصلی فعال پایگاه‌داده دوباره رمزگذاری شوند، و در پایان تعداد شناسه‌های به‌روزشده را نمایش می‌دهد. اگر گزینه -f مشخص نشود، پیش از آغاز اعمال تغییرات درخواست تایید می‌کند. گزینه -v باعث می‌شود هر شناسه پردازش‌شده، به همراه نشانگری که مشخص می‌کند آیا به به‌روزرسانی نیاز داشته یا خیر، فهرست شود. گزینه -n یک اجرای آزمایشی انجام می‌دهد و تنها اقداماتی را که انجام می‌شد نمایش می‌دهد.

tabdump [-H] [-c] [-e] [-n] [-o outfile] dumptype

فیلدهای انتخاب‌شده پایگاه‌داده را در یک قالب جدولی مناسب برای گزارش‌گیری (مانند استفاده با ابزارهای سنتی پردازش متن یونیکس) یا وارد کردن به پایگاه‌های داده رابطه‌ای تخلیه می‌کند. قالب داده‌ها به صورت جداشده با تب (پیش‌فرض) یا به صورت اختیاری جداشده با کاما (CSV) با تعداد ثابتی از ستون‌ها است. خروجی با یک خط سرآیند حاوی نام فیلدها آغاز می‌شود، مگر اینکه حذف آن با استفاده از گزینه -H درخواست شده باشد.

پارامتر dumptype نام یک جدول خروجی را مشخص می‌کند (به بخش زیر مراجعه کنید).

گزینه‌ها:

از نوشتن نام فیلدها در خط سرآیند جلوگیری می‌کند.
به جای قالب پیش‌فرض جداشده با تب (بدون علامت نقل‌قول و نویسه گریز)، از قالب مقادیر جداشده با کاما (CSV) با حداقل نقل‌قول استفاده می‌کند.
فیلدهای رشته هگزادسیمال خالی را به جای "-1"، به صورت فیلدهای خالی می‌نویسد.
برای فیلدهایی که معمولاً خروجی نمادین دارند، مانند enctypeها و نام پرچم‌ها، خروجی عددی تولید می‌کند. همچنین درخواست می‌کند که مهرهای زمانی به صورت مقادیر ده‌دهی time_t در استاندارد POSIX خروجی داده شوند.
خروجی dump را به جای خروجی استاندارد، در فایل خروجی مشخص‌شده می‌نویسد.

انواع تخلیه (Dump types):

اطلاعات نام مستعار شناسه اصلی
نام مستعار
مقصد نام مستعار
اطلاعات کلید رمزنگاری شناسه اصلی، شامل داده‌های واقعی کلید (که همچنان با کلید اصلی رمزگذاری شده است)
نام شناسه اصلی
شاخص این کلید در فهرست کلیدهای شناسه اصلی
شماره نگارش کلید
نوع رمزنگاری
داده‌های کلید به صورت یک رشته هگزادسیمال
نوع سالت
داده‌های سالت به صورت یک رشته هگزادسیمال
اطلاعات کلید رمزنگاری شناسه اصلی (همانند keydata در بالا)، به استثنای داده‌های واقعی کلید
صفت‌های بولی شناسه اصلی. در صورت مشخص شدن گزینه -n، نام پرچم‌ها به صورت اعداد هگزادسیمال چاپ شده و تمامی جایگاه‌های پرچم، صرف‌نظر از اینکه تنظیم شده باشند یا خیر، چاپ می‌شوند. اگر -n مشخص نشود، تمامی نام‌های پرچم شناخته‌شده برای هر شناسه اصلی چاپ می‌شوند، اما نام‌های پرچم هگزادسیمال تنها در صورتی چاپ خواهند شد که پرچم مربوطه تنظیم شده باشد.
نام شناسه اصلی
نام پرچم
مقدار بولی (۰ برای غیرفعال/پاک، یا ۱ برای فعال/تنظیم‌شده)
اطلاعات وضعیت که برای ردگیری شکست‌های مکرر گذرواژه به کار می‌رود
نام شناسه اصلی
مهر زمانی آخرین احراز هویت موفق
مهر زمانی آخرین احراز هویت ناموفق
تعداد تلاش‌های ناموفق
متاداده‌های شناسه اصلی
نام شناسه اصلی
نام آخرین کاربری که این شناسه اصلی را تغییر داده است
مهر زمانی آخرین تغییر
مهر زمانی آخرین تغییر گذرواژه
نام شیء خط‌مشی
شماره نگارش کلید اصلی که داده‌های کلید این شناسه اصلی را رمزگذاری می‌کند
شماره نگارش کلید تاریخچه که داده‌های تاریخچه کلید این شناسه اصلی را رمزگذاری می‌کند
صفت‌های رشته‌ای (جفت‌های کلید/مقدار)
نام شناسه اصلی
نام صفت
مقدار صفت
داده‌های خط‌مشی بلیت به ازای هر شناسه اصلی، از جمله حداکثر طول عمر بلیت
نام شناسه اصلی
تاریخ انقضای شناسه اصلی
تاریخ انقضای گذرواژه
حداکثر طول عمر بلیت
حداکثر طول عمر تمدید بلیت

مثال‌ها:

$ kdb5_util tabdump -o keyinfo.txt keyinfo
$ cat keyinfo.txt
name        keyindex        kvno    enctype salttype        salt
K/M@EXAMPLE.COM     0       1       aes256-cts-hmac-sha384-192      normal  -1
foo@EXAMPLE.COM     0       1       aes128-cts-hmac-sha1-96 normal  -1
bar@EXAMPLE.COM     0       1       aes128-cts-hmac-sha1-96 normal  -1
$ sqlite3
sqlite> .mode tabs
sqlite> .import keyinfo.txt keyinfo
sqlite> select * from keyinfo where enctype like 'aes256-%';
K/M@EXAMPLE.COM     1       1       aes256-cts-hmac-sha384-192      normal  -1
sqlite> .quit
$ awk -F'\t' '$4 ~ /aes256-/ { print }' keyinfo.txt
K/M@EXAMPLE.COM     1       1       aes256-cts-hmac-sha384-192      normal  -1

برای شرح متغیرهای محیطی کربروس، kerberos(7) را ببینید.

kadmin(1)، kerberos(7)

مؤسسه فناوری ماساچوست (MIT)

1985-2026, MIT

1.22.2