HTPASSWD(1) htpasswd HTPASSWD(1)

htpasswd - مدیریت فایل‌های رمز عبور کاربری برای احراز هویت پایه HTTP

htpasswd [ -c ] [ -i ] [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] [ -D ] [ -v ] passwdfile username

htpasswd -b [ -c ] [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] [ -D ] [ -v ] passwdfile username password

htpasswd -n [ -i ] [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] username

htpasswd -nb [ -m | -B | -2 | -5 | -d | -s | -p ] [ -r rounds ] [ -C cost ] username password

دستور htpasswd برای ایجاد و به‌روزرسانی فایل‌های متنی ساده (flat-files) استفاده می‌شود که برای ذخیره نام‌های کاربری و رمزهای عبور جهت احراز هویت پایه کاربران HTTP به کار می‌روند. اگر htpasswd نتواند به فایلی دسترسی پیدا کند، مانند ناتوانی در نوشتن در فایل خروجی یا ناتوانی در خواندن فایل جهت به‌روزرسانی آن، یک وضعیت خطا برمی‌گرداند و هیچ تغییری ایجاد نمی‌کند.

منابع موجود در سرور Apache HTTP را می‌توان تنها به کاربرانی که در فایل‌های ایجادشده توسط htpasswd فهرست شده‌اند محدود کرد. این برنامه تنها می‌تواند نام‌های کاربری و رمزهای عبور ذخیره‌شده در یک فایل متنی ساده را مدیریت کند. با این حال، می‌تواند اطلاعات رمز عبور را برای استفاده در سایر انواع ذخیره‌سازهای داده هش کرده و نمایش دهد. برای استفاده از پایگاه داده DBM به dbmmanage یا htdbm مراجعه کنید.

ابزار htpasswd رمزهای عبور را با استفاده از bcrypt، نسخه‌ای از MD5 تغییریافته برای آپاچی، SHA-1 یا روتین crypt() سیستم هش می‌کند. هش‌های مبتنی بر SHA-2 (شامل SHA-256 و SHA-512) برای crypt() پشتیبانی می‌شوند. فایل‌های مدیریت‌شده توسط htpasswd ممکن است شامل ترکیبی از انواع مختلف کدگذاری رمزهای عبور باشند؛ برخی از رکوردهای کاربری ممکن است دارای رمزهای عبور هش‌شده با bcrypt یا MD5 باشند در حالی که سایر رکوردها در همان فایل ممکن است رمزهای عبور هش‌شده با crypt() داشته باشند.

این صفحه راهنما تنها آرگومان‌های خط فرمان را فهرست می‌کند. برای جزئیات دستورالعمل‌های لازم جهت پیکربندی احراز هویت کاربر در httpd به راهنمای آپاچی مراجعه کنید که بخشی از توزیع آپاچی است یا می‌توان آن را در http://httpd.apache.org یافت.

استفاده از حالت دسته‌ای (batch mode)؛ یعنی رمز عبور را به جای درخواست تعاملی، از خط فرمان دریافت می‌کند. از این گزینه باید با احتیاط بسیار زیاد استفاده شود، زیرا رمز عبور به وضوح در خط فرمان قابل مشاهده است. برای استفاده در اسکریپت‌ها به گزینه -i مراجعه کنید. در نسخه 2.4.4 و جدیدتر موجود است.
خواندن رمز عبور از ورودی استاندارد (stdin) بدون اعتبارسنجی مجدد (برای استفاده در اسکریپت).
ایجاد passwdfile. اگر passwdfile از قبل وجود داشته باشد، بازنویسی و کوتاه (truncate) می‌شود. این گزینه را نمی‌توان با گزینه -n ترکیب کرد.
نمایش نتایج در خروجی استاندارد به جای به‌روزرسانی یک فایل. این گزینه برای تولید رکوردهای رمز عبور قابل قبول برای آپاچی جهت قرار دادن در فضاهای ذخیره‌سازی داده غیرمتنی مفید است. این گزینه ساختار خط فرمان را تغییر می‌دهد، زیرا آرگومان passwdfile (که معمولاً اولین آرگومان است) حذف می‌شود. این گزینه را نمی‌توان با گزینه -c ترکیب کرد.
استفاده از هش MD5 برای رمزهای عبور. این حالت پیش‌فرض است (از نسخه 2.2.18).
-2
استفاده از هش‌های مبتنی بر crypt() با SHA-256 برای رمزهای عبور. این در اکثر پلتفرم‌های یونیکس پشتیبانی می‌شود.
-5
استفاده از هش‌های مبتنی بر crypt() با SHA-512 برای رمزهای عبور. این در اکثر پلتفرم‌های یونیکس پشتیبانی می‌شود.
استفاده از هش bcrypt برای رمزهای عبور. این در حال حاضر بسیار امن در نظر گرفته می‌شود.
این فلگ فقط در ترکیب با -B (هش bcrypt) مجاز است. زمان محاسباتی مورد استفاده برای الگوریتم bcrypt را تعیین می‌کند (مقدار بیشتر امن‌تر اما کندتر است؛ پیش‌فرض: 5، مقادیر معتبر: 4 تا 17).
این فلگ فقط در ترکیب با -2 یا -5 مجاز است. تعداد دورهای هش مورد استفاده برای الگوریتم‌های SHA-2 را تعیین می‌کند (مقدار بیشتر امن‌تر اما کندتر است؛ پیش‌فرض: 5000).
استفاده از هش crypt() برای رمزهای عبور. این روش توسط سرور httpd در ویندوز و Netware پشتیبانی نمی‌شود. این الگوریتم طول رمز عبور را به ۸ کاراکتر محدود می‌کند. این الگوریتم طبق استانداردهای امروزی ناامن است. این روش تا نسخه 2.2.17 الگوریتم پیش‌فرض بود.
استفاده از هش SHA-1 (۱۶۰ بیتی) برای رمزهای عبور. مهاجرت از/به سرورهای Netscape را با استفاده از LDAP Directory Interchange Format (ldif) تسهیل می‌کند. این الگوریتم طبق استانداردهای امروزی ناامن است.
استفاده از رمزهای عبور متن ساده (plaintext). اگرچه htpasswd از ایجاد آن در همه پلتفرم‌ها پشتیبانی می‌کند، اما دیمن httpd فقط در ویندوز و Netware رمزهای عبور متن ساده را می‌پذیرد.
حذف کاربر. اگر نام کاربری در فایل htpasswd مشخص‌شده وجود داشته باشد، حذف خواهد شد.
اعتبارسنجی رمز عبور. بررسی می‌کند که آیا رمز عبور داده‌شده با رمز عبور کاربر ذخیره‌شده در فایل htpasswd مشخص‌شده مطابقت دارد یا خیر. در نسخه 2.4.5 و جدیدتر موجود است.
نام فایلی که شامل نام کاربری و رمز عبور است. اگر -c داده شود، این فایل در صورت عدم وجود ایجاد می‌شود، یا در صورت وجود بازنویسی و کوتاه می‌شود.
نام کاربری برای ایجاد یا به‌روزرسانی در passwdfile. اگر username در این فایل وجود نداشته باشد، یک ورودی اضافه می‌شود. اگر وجود داشته باشد، رمز عبور تغییر می‌کند.
رمز عبور متن ساده که باید هش شده و در فایل ذخیره شود. فقط با فلگ -b استفاده می‌شود.

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

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

رمز عبور را برای کاربر jsmith اضافه یا ویرایش می‌کند. از کاربر درخواست وارد کردن رمز عبور می‌شود. رمز عبور با استفاده از الگوریتم تغییریافته MD5 آپاچی هش خواهد شد. اگر فایل وجود نداشته باشد، htpasswd کاری انجام نمی‌دهد جز اینکه یک خطا برمی‌گرداند.

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

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

htpasswd -db /usr/web/.htpasswd-all jones Pwd4Steve

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

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

این برنامه به عنوان یک فایل اجرایی با دسترسی setuid امن نیست. آن را setuid نکنید.

استفاده از گزینه -b توصیه نمی‌شود، زیرا در صورت استفاده، رمز عبور متن ساده در خط فرمان ظاهر می‌شود.

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

فرمت هش SHA-1 از سالت (salt) استفاده نمی‌کند: برای یک رمز عبور معین، تنها یک نمایش هش‌شده وجود دارد. فرمت‌های crypt() و MD5 نمایش را با پیشوند کردن یک رشته سالت تصادفی تغییر می‌دهند تا حملات فرهنگ‌لغت (dictionary attacks) علیه رمزهای عبور دشوارتر شود.

فرمت‌های SHA-1 و crypt() طبق استانداردهای امروزی ناامن هستند.

فرمت‌های crypt() مبتنی بر SHA-2 (شامل SHA-256 و SHA-512) در بیشتر سیستم‌های مدرن یونیکس پشتیبانی می‌شوند و از مشخصات موجود در https://www.akkadia.org/drepper/SHA-crypt.txt پیروی می‌کنند.

در پلتفرم ویندوز، رمزهای عبور هش‌شده با htpasswd به حداکثر 255 کاراکتر محدود می‌شوند. رمزهای عبور طولانی‌تر به ۲۵۵ کاراکتر کوتاه خواهند شد.

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

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

هزینه محاسباتی مقدار هش رمز عبور bcrypt با تعداد دورهای مشخص‌شده توسط گزینه -C افزایش می‌یابد. کتابخانه apr-util در نسخه 1.6.0 و بالاتر حداکثر ۱۷ دور را اعمال می‌کند.

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

فایل متنی ساده حاوی نام‌های کاربری و رمزهای عبور. ممکن است شامل خطوط خالی و خطوط توضیحات که با نویسه هش (#) آغاز می‌شوند باشد.
2026-05-08 Apache HTTP Server