HTDBM(1) htdbm HTDBM(1)

htdbm - دستکاری و مدیریت پایگاه‌های داده گذرواژه DBM

htdbm [ -TDBTYPE ] [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username

htdbm -b [ -TDBTYPE ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username password

htdbm -n [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] username

htdbm -nb [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] username password

htdbm -v [ -TDBTYPE ] [ -i ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username

htdbm -vb [ -TDBTYPE ] [ -c ] [ -m | -B | -d | -s | -p ] [ -C cost ] [ -t ] [ -v ] filename username password

htdbm -x [ -TDBTYPE ] filename username

htdbm -l [ -TDBTYPE ]

دستور htdbm برای دستکاری و مدیریت پرونده‌های با قالب DBM استفاده می‌شود که جهت ذخیره‌سازی نام‌های کاربری و گذرواژه‌ها برای احراز هویت پایه‌ای (basic authentication) کاربران HTTP از طریق mod_authn_dbm به کار می‌روند. برای اطلاعات بیشتر درباره این پرونده‌های DBM، به مستندات dbmmanage مراجعه کنید.

استفاده از حالت دسته‌ای (batch mode)؛ یعنی دریافت گذرواژه از خط فرمان به جای درخواست تعاملی آن. این گزینه باید با احتیاط فراوان استفاده شود، زیرا گذرواژه به وضوح در خط فرمان قابل مشاهده است. برای استفاده در اسکریپت‌ها گزینه -i را ببینید.
خواندن گذرواژه از stdin بدون تایید مجدد (برای استفاده در اسکریپت‌ها).
ایجاد passwdfile. اگر passwdfile از قبل وجود داشته باشد، بازنویسی و کوتاه (truncated) می‌شود. این گزینه نمی‌تواند با گزینه -n ترکیب شود.
نمایش نتایج در خروجی استاندارد به جای به‌روزرسانی پایگاه داده. این گزینه نحو خط فرمان را تغییر می‌دهد، چرا که آرگومان passwdfile (معمولاً اولین آرگومان) حذف می‌شود. این گزینه نمی‌تواند با گزینه -c ترکیب شود.
استفاده از هش MD5 برای گذرواژه‌ها. در ویندوز و نت‌ویر (Netware)، این مقدار پیش‌فرض است.
استفاده از هش bcrypt برای گذرواژه‌ها. این روش در حال حاضر بسیار امن در نظر گرفته می‌شود.
این فلگ فقط در ترکیب با -B (هش bcrypt) مجاز است. این گزینه زمان محاسباتی مورد استفاده برای الگوریتم bcrypt را تعیین می‌کند (مقادیر بالاتر امن‌تر اما کندتر هستند، پیش‌فرض: 5، بازه معتبر: 4 تا 31).
استفاده از هش crypt() برای گذرواژه‌ها. این گزینه در تمام پلتفرم‌ها به جز ویندوز و نت‌ویر پیش‌فرض است. اگرچه احتمالاً توسط htdbm در تمام پلتفرم‌ها پشتیبانی می‌شود، اما توسط سرور httpd در ویندوز و نت‌ویر پشتیبانی نمی‌شود. این الگوریتم با استانداردهای امروزی ناامن است.
استفاده از هش SHA برای گذرواژه‌ها. مهاجرت از/به سرورهای Netscape را با استفاده از LDAP Directory Interchange Format (ldif) تسهیل می‌کند. این الگوریتم با استانداردهای امروزی ناامن است.
استفاده از گذرواژه‌های متن‌آشکار (plaintext). اگرچه htdbm از ایجاد آن در تمام پلتفرم‌ها پشتیبانی می‌کند، اما دیمن httpd گذرواژه‌های متن‌آشکار را فقط در ویندوز و نت‌ویر می‌پذیرد.
چاپ هر یک از نام‌های کاربری و توضیحات موجود در پایگاه داده در خروجی استاندارد (stdout).
تایید و بررسی نام کاربری و گذرواژه. برنامه پیامی مبنی بر معتبر بودن یا نبودن گذرواژه ارائه‌شده چاپ می‌کند. اگر گذرواژه نامعتبر باشد، برنامه با کد خطای 3 خارج می‌شود.
حذف کاربر. اگر نام کاربری در پرونده DBM مشخص‌شده وجود داشته باشد، حذف خواهد شد.
تفسیر پارامتر پایانی به عنوان توضیح (comment). هنگامی که این گزینه مشخص شود، یک رشته اضافی می‌تواند به انتهای خط فرمان اضافه شود؛ این رشته در فیلد "Comment" پایگاه داده و مرتبط با نام کاربری مشخص‌شده ذخیره خواهد شد.
نام پرونده با قالب DBM. معمولاً بدون پسوند .db، .pag یا .dir. اگر -c داده شود، در صورت عدم وجود پرونده DBM ایجاد می‌شود، یا در صورت وجود به‌روزرسانی می‌گردد.
نام کاربری برای ایجاد یا به‌روزرسانی در passwdfile. اگر username در این پرونده وجود نداشته باشد، یک مدخل اضافه می‌شود. اگر وجود داشته باشد، گذرواژه تغییر می‌یابد.
گذرواژه متن‌آشکار برای هش شدن و ذخیره در پرونده DBM. فقط همراه با فلگ -b استفاده می‌شود.
نوع پرونده DBM (شامل SDBM، GDBM، DB یا "default").

باید آگاه باشید که چندین قالب پرونده DBM مختلف وجود دارد و به احتمال زیاد، کتابخانه‌های مربوط به بیش از یک قالب در سیستم شما موجود است. سه نمونه اصلی عبارتند از SDBM، NDBM، GNU GDBM و Berkeley/Sleepycat DB 2/3/4. متأسفانه، همه این کتابخانه‌ها از قالب‌های پرونده متفاوتی استفاده می‌کنند و شما باید مطمئن شوید که قالب پرونده مورد استفاده توسط filename همان قالبی است که htdbm انتظار دارد. در حال حاضر htdbm راهی برای تشخیص نوع پرونده DBM که در حال بررسی آن است ندارد. در صورت استفاده برای یک قالب نادرست، برنامه به سادگی هیچ مقداری برنمی‌گرداند، یا ممکن است یک پرونده DBM متفاوت با نامی دیگر ایجاد کند، یا در بدترین حالت، در صورت تلاش برای نوشتن روی آن، ممکن است پرونده DBM را خراب کند.

معمولاً می‌توان از برنامه file که همراه با اکثر سیستم‌های یونیکس ارائه می‌شود برای بررسی اینکه یک پرونده DBM در چه قالبی است استفاده کرد.

دستور htdbm در صورتی که نام کاربری و گذرواژه با موفقیت در پرونده DBM اضافه یا به‌روزرسانی شوند وضعیت صفر ("true") را برمی‌گرداند. htdbm مقدار 1 را در صورت بروز مشکل در دسترسی به پرونده‌ها برمی‌گرداند، 2 در صورت وجود خطای نحوی در خط فرمان، 3 در صورتی که گذرواژه به صورت تعاملی وارد شده و مقدار تایید با آن مطابقت نداشته باشد، 4 در صورتی که عملیات متوقف شود، 5 در صورتی که یک مقدار بیش از حد طولانی باشد (نام کاربری، نام پرونده، گذرواژه یا رکورد محاسباتی نهایی)، 6 در صورتی که نام کاربری حاوی نویسه‌های غیرمجاز باشد (بخش محدودیت‌ها را ببینید) و 7 در صورتی که پرونده یک پرونده گذرواژه DBM معتبر نباشد.

htdbm /usr/local/etc/apache/.htdbm-users jsmith

گذرواژه را برای کاربر jsmith اضافه یا تغییر می‌دهد. از کاربر خواسته می‌شود گذرواژه را وارد کند. اگر در سیستم ویندوز اجرا شود، گذرواژه با استفاده از الگوریتم اصلاح‌شده MD5 آپاچی هش خواهد شد؛ در غیر این صورت، از روال crypt() سیستم استفاده می‌شود. اگر پرونده وجود نداشته باشد، htdbm کاری انجام نمی‌دهد جز بازگرداندن یک خطا.

htdbm -c /home/doe/public_html/.htdbm jane

یک پرونده جدید ایجاد کرده و رکوردی را در آن برای کاربر jane ذخیره می‌کند. از کاربر خواسته می‌شود گذرواژه را وارد کند. اگر پرونده از قبل وجود داشته باشد و قابل خواندن یا نوشتن نباشد، تغییری در آن ایجاد نمی‌شود و htdbm پیامی نمایش داده و وضعیت خطا برمی‌گرداند.

htdbm -mb /usr/web/.htdbm-all jones Pwd4Steve

گذرواژه گرفته‌شده از خط فرمان (Pwd4Steve) را با استفاده از الگوریتم MD5 رمزگذاری کرده و در پرونده مشخص‌شده ذخیره می‌کند.

پرونده‌های گذرواژه وب مانند مواردی که توسط htdbm مدیریت می‌شوند نباید در فضای URI سرور وب قرار گیرند -- یعنی نباید از طریق یک مرورگر قابل دریافت باشند.

استفاده از گزینه -b توصیه نمی‌شود، زیرا هنگام استفاده از آن گذرواژه متن‌آشکار در خط فرمان ظاهر می‌شود.

هنگام استفاده از الگوریتم crypt()، توجه داشته باشید که تنها ۸ نویسه اول گذرواژه برای تشکیل گذرواژه استفاده می‌شوند. اگر گذرواژه ارائه‌شده طولانی‌تر باشد، نویسه‌های اضافی بدون هیچ هشداری نادیده گرفته می‌شوند.

گزینه هش SHA از نمک (salting) استفاده نمی‌کند: برای یک گذرواژه مشخص، تنها یک نمایش هش‌شده وجود دارد. قالب‌های crypt() و MD5 با پیشوند کردن یک رشته نمک تصادفی، نمایش را تغییر می‌دهند تا حملات فرهنگ‌لغت علیه گذرواژه‌ها دشوارتر شود.

قالب‌های SHA و crypt() با استانداردهای امروزی ناامن هستند.

در پلتفرم ویندوز، طول گذرواژه‌های هش‌شده با htdbm به حداکثر 255 نویسه محدود می‌شود. گذرواژه‌های طولانی‌تر به ۲۵۵ نویسه کوتاه می‌شوند.

الگوریتم MD5 استفاده‌شده توسط htdbm مختص نرم‌افزار آپاچی است؛ گذرواژه‌های هش‌شده با استفاده از آن در سایر سرورهای وب قابل استفاده نخواهند بود.

نام‌های کاربری به 255 بایت محدود هستند و نباید شامل نویسه : باشند.

مسیر پرونده گذرواژه DBM به عنوان یک آرگومان در خط فرمان مشخص می‌شود و می‌تواند در هر کجای سیستم‌فایل قرار داشته باشد.

پرونده با قالب DBM حاوی نام‌های کاربری و گذرواژه‌ها.
2026-05-08 Apache HTTP Server