LOGIN(1) دستورهای کاربر LOGIN(1)

login - شروع یک نشست کاربری جدید در سیستم

login [-p] [-s shell] [-h host] [-H] [[-f] username|UID]

دستور login هنگام ورود به سیستم استفاده می‌شود. اگر هیچ آرگومانی داده نشود، login نام کاربری را درخواست می‌کند.

سپس در صورت لزوم، گذرواژه از کاربر درخواست می‌شود. برای جلوگیری از فاش شدن گذرواژه، بازتاب ورودی غیرفعال است. پیش از خروج login و قطع شدن پیوند ارتباطی، تنها تعداد معینی تلاش ناموفق برای ورود گذرواژه مجاز است. به LOGIN_RETRIES در بخش موارد فایل پیکربندی (CONFIG FILE ITEMS) مراجعه کنید.

اگر منقضی شدن گذرواژه برای حساب کاربری فعال شده باشد، ممکن است پیش از ادامه، از کاربر درخواست شود گذرواژه جدیدی تعیین کند. در چنین حالتی، پیش از ادامه باید گذرواژه قدیمی ارائه شده و گذرواژه جدید وارد شود. لطفاً برای اطلاعات بیشتر به passwd(1) مراجعه کنید.

شناسه کاربر و شناسه گروه مطابق با مقادیر آن‌ها در فایل /etc/passwd تنظیم خواهند شد. یک استثنا وجود دارد اگر شناسه کاربر صفر باشد؛ در این حالت فقط شناسه گروه اصلی حساب کاربری تنظیم می‌شود. این امر به مدیر سیستم اجازه می‌دهد حتی در صورت بروز مشکلات شبکه نیز وارد سیستم شود. مقادیر متغیرهای محیطی $HOME، $USER، $SHELL، $PATH، $LOGNAME و $MAIL بر اساس فیلدهای مناسب در مدخل فایل گذرواژه تنظیم می‌شوند. در صورت عدم پیکربندی دیگر، مقدار پیش‌فرض $PATH برای کاربران عادی برابر با /usr/local/bin:/bin:/usr/bin و برای root برابر با /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin است.

متغیر محیطی $TERM در صورت وجود حفظ خواهد شد، در غیر این صورت با نوع ترمینال روی tty شما مقداردهی اولیه می‌شود. متغیرهای محیطی $COLORTERM و $NO_COLOR در صورت وجود حفظ خواهند شد.

سایر متغیرهای محیطی در صورتی که گزینه -p مشخص شده باشد یا LOGIN_ENV_SAFELIST در /etc/login.defs تعریف شده باشد (به ادامه مراجعه کنید)، حفظ می‌شوند.

متغیرهای محیطی تعریف‌شده توسط PAM همیشه حفظ می‌شوند.

سپس پوسته کاربر راه‌اندازی می‌شود. اگر با -s یا در /etc/passwd هیچ پوسته‌ای برای کاربر مشخص نشده باشد، /bin/sh استفاده می‌شود. اگر پوسته مشخص‌شده حاوی فاصله باشد، به عنوان یک اسکریپت پوسته در نظر گرفته می‌شود. اگر هیچ دایرکتوری خانگی در /etc/passwd مشخص نشده باشد، / استفاده شده و سپس بررسی .hushlogin طبق توضیحات زیر انجام می‌شود.

اگر فایل .hushlogin وجود داشته باشد، یک ورود «بی‌صدا» (quiet) انجام می‌شود. این کار بررسی ایمیل و چاپ زمان آخرین ورود و پیام روز (message of the day) را غیرفعال می‌کند. در غیر این صورت، اگر /var/log/lastlog وجود داشته باشد، زمان آخرین ورود چاپ شده و ورود جاری ثبت می‌شود.

-p

توسط getty(8) استفاده می‌شود تا به login بگوید محیط را حفظ کند. همچنین به مورد پیکربندی LOGIN_ENV_SAFELIST مراجعه کنید.

-f

برای گذر از اعتبارسنجی ورود استفاده می‌شود. این گزینه معمولاً توسط قابلیت ورود خودکار (autologin) در getty(8) استفاده می‌شود.

-h

توسط سایر سرورها (مانند telnetd(8)) استفاده می‌شود تا نام میزبان دوردست را به login ارسال کنند تا بتوان آن را در utmp و wtmp قرار داد. تنها کاربر ممتاز (superuser) مجاز به استفاده از این گزینه است.

توجه داشته باشید که گزینه -h بر نام سرویس PAM تأثیر می‌گذارد. نام سرویس استاندارد login است، اما با گزینه -h، نام آن remote خواهد بود. ایجاد فایل‌های پیکربندی مناسب PAM ضروری است (برای نمونه، /etc/pam.d/login و /etc/pam.d/remote).

-H

توسط سایر سرورها (برای نمونه، telnetd(8)) استفاده می‌شود تا به login بگوید چاپ نام میزبان را در اعلان :login لغو کند. همچنین به LOGIN_PLAIN_PROMPT در ادامه مراجعه کنید.

-s, --shell shell

مشخص کردن یک shell غیر از آنچه در /etc/passwd تعریف شده برای ورود به آن.

-h, --help

نمایش متن راهنما و خروج.

-V, --version

نمایش نسخه و خروج.

دستور login فایل پیکربندی /etc/login.defs را می‌خواند (به login.defs(5) مراجعه کنید). توجه داشته باشید که این فایل پیکربندی ممکن است همراه با بسته دیگری (معمولاً shadow-utils) توزیع شده باشد. موارد پیکربندی زیر برای login مرتبط هستند:

MOTD_FILE (رشته)

فهرستی جداشده با ":" از فایل‌ها و دایرکتوری‌های «پیام روز» را برای نمایش هنگام ورود مشخص می‌کند. اگر مسیر مشخص‌شده یک دایرکتوری باشد، تمام فایل‌های دارای پسوند .motd را به ترتیب مرتب‌سازی نسخه از آن دایرکتوری نمایش می‌دهد.

مقدار پیش‌فرض /usr/share/misc/motd:/run/motd:/etc/motd است. اگر مورد MOTD_FILE خالی باشد یا ورود بی‌صدا فعال شده باشد، پیام روز نمایش داده نمی‌شود. توجه داشته باشید که همین عملکرد توسط ماژول PAM به نام pam_motd(8) نیز ارائه می‌شود.

دایرکتوری‌ها در MOTD_FILE از نسخه ۲.۳۶ به بعد پشتیبانی می‌شوند.

توجه داشته باشید که login هیچ رفتار جایگزینی نام فایل‌ها مانند pam_motd را پیاده‌سازی نمی‌کند (همچنین به MOTD_FIRSTONLY مراجعه کنید)، بلکه تمام محتوای تمام فایل‌ها نمایش داده می‌شود. توصیه می‌شود منطق اضافی را در تولیدکننده‌های محتوا نگه دارید و به جای اتکا به رفتارهای جایگزینی کدگذاری‌شده در ابزارهای سیستم، از /run/motd.d استفاده کنید.

MOTD_FIRSTONLY (بولی)

دستور login را مجبور می‌کند تا نمایش محتوای مشخص‌شده توسط MOTD_FILE را پس از اولین مورد قابل دسترس در فهرست متوقف کند. توجه داشته باشید که در این حالت یک دایرکتوری به عنوان یک مورد در نظر گرفته می‌شود. این گزینه به معناشناسی login اجازه می‌دهد به گونه‌ای پیکربندی شود که با pam_motd سازگارتر باشد. مقدار پیش‌فرض no است.

LOGIN_ENV_SAFELIST (رشته)

دستور login را مجبور می‌کند در صورت عدم استفاده از -p، از متغیرهای محیطی مشخص‌شده محافظت کند. مقدار رشته‌ای، فهرستی از نام متغیرها است که با کاما از هم جدا شده‌اند. برای مثال: "LANG,LC_MESSAGES,LC_COLLATE". فهرست امن برای متغیرهای محیطی HOME، SHELL و USER نادیده گرفته می‌شود.

LOGIN_PLAIN_PROMPT (بولی)

به login می‌گوید که چاپ نام میزبان در اعلان :login لغو شود. این یک جایگزین برای گزینه خط فرمان -H است. مقدار پیش‌فرض no است.

LOGIN_TIMEOUT (عدد)

حداکثر زمان به ثانیه برای ورود. مقدار پیش‌فرض 60 است.

LOGIN_RETRIES (عدد)

حداکثر تعداد تلاش‌های مجدد برای ورود در صورت نادرست بودن گذرواژه. مقدار پیش‌فرض 3 است.

LOGIN_KEEP_USERNAME (بولی)

به login می‌گوید در صورتی که احراز هویت ناموفق بود اما نام کاربری معتبر است، فقط گذرواژه را دوباره درخواست کند. مقدار پیش‌فرض no است.

FAIL_DELAY (عدد)

تأخیر به ثانیه قبل از اینکه پس از یک شکست در ورود، سه تلاش دیگر مجاز شود. مقدار پیش‌فرض 5 است.

TTYPERM (رشته)

مجوزهای ترمینال. مقدار پیش‌فرض 0600 است، یا اگر گروه tty استفاده شود 0620 خواهد بود. همچنین به mesg(1) مراجعه کنید.

TTYGROUP (رشته)

مالکیت tty ورود به TTYGROUP تعلق خواهد گرفت. مقدار پیش‌فرض tty است. اگر TTYGROUP وجود نداشته باشد، مالکیت ترمینال روی گروه اصلی کاربر تنظیم می‌شود.

متغیر TTYGROUP می‌تواند نام یک گروه یا یک شناسه عددی گروه باشد. همچنین به mesg(1) مراجعه کنید.

HUSHLOGIN_FILE (رشته)

در صورت تعریف شدن، این فایل می‌تواند تمام پیام‌های معمول در طول مراحل ورود را مهار کند. اگر یک مسیر کامل (برای نمونه، /etc/hushlogins) مشخص شده باشد، در صورتی که نام یا پوسته کاربر در فایل یافت شود، حالت بی‌صدا فعال خواهد شد. اگر این فایل سراسری hush login خالی باشد، حالت بی‌صدا برای همه کاربران فعال خواهد شد.

اگر مسیر کاملی مشخص نشده باشد، در صورتی که فایل در دایرکتوری خانگی کاربر وجود داشته باشد، حالت بی‌صدا فعال می‌شود.

حالت پیش‌فرض بررسی /etc/hushlogins است و در صورت عدم وجود، ~/.hushlogin بررسی می‌شود.

اگر مورد HUSHLOGIN_FILE خالی باشد، تمام بررسی‌ها غیرفعال می‌شوند.

DEFAULT_HOME (بولی)

مشخص می‌کند در صورتی که امکان تغییر مسیر به دایرکتوری خانگی وجود نداشته باشد، آیا ورود مجاز است یا خیر. اگر روی yes تنظیم شود، در صورتی که تغییر مسیر به دایرکتوری خانگی ممکن نباشد، کاربر در دایرکتوری ریشه (/) وارد سیستم می‌شود. مقدار پیش‌فرض yes است.

LASTLOG_UID_MAX (عدد بدون علامت)

بالاترین شماره شناسه کاربری که مدخل‌های lastlog باید برای آن به‌روزرسانی شوند. از آنجا که شناسه‌های کاربری بالاتر معمولاً توسط سرویس‌های هویت و احراز هویت دوردست ردیابی می‌شوند، نیازی به ایجاد یک فایل پراکنده عظیم lastlog برای آن‌ها وجود ندارد. عدم وجود گزینه LASTLOG_UID_MAX در پیکربندی به این معنی است که هیچ محدودیتی برای شناسه کاربری جهت نوشتن مدخل‌های lastlog وجود ندارد. مقدار پیش‌فرض ULONG_MAX است.

LOG_UNKFAIL_ENAB (بولی)

فعال‌سازی ثبت نام‌های کاربری ناشناخته هنگام ثبت شکست‌های ورود. مقدار پیش‌فرض no است.

توجه داشته باشید که ثبت نام‌های کاربری ناشناخته ممکن است یک مشکل امنیتی باشد اگر کاربری گذرواژه خود را به جای نام ورود وارد کند.

ENV_PATH (رشته)

در صورت تنظیم، برای تعریف متغیر محیطی PATH هنگام ورود یک کاربر معمولی استفاده می‌شود. مقدار پیش‌فرض /usr/local/bin:/bin:/usr/bin است.

ENV_ROOTPATH (رشته)، ENV_SUPATH (رشته)

در صورت تنظیم، برای تعریف متغیر محیطی PATH هنگام ورود کاربر ممتاز استفاده می‌شود. ENV_ROOTPATH اولویت دارد. مقدار پیش‌فرض /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin است.

LOGIN_SHELL_FALLBACK (بولی)

اگر روی yes تنظیم شود، در صورتی که پوسته مشخص‌شده در /etc/passwd به دلیل خطاهای مدیریتی نامعتبر یا غیرقابل دسترس باشد، login یک پوسته معتبر از /etc/shells ارائه می‌دهد. این کار تضمین می‌کند که کاربران همچنان می‌توانند وارد شوند. با این حال، ممکن است محدودیت‌های در نظر گرفته‌شده برای پوسته را دور بزند و در صورتی که پوسته جایگزین با پوسته پیکربندی‌شده متفاوت باشد، به طور بالقوه باعث رفتار غیرمنتظره شود.

/var/run/utmp, /var/log/wtmp, /var/log/lastlog, /var/spool/mail/*, /etc/motd, /etc/passwd, /etc/nologin, /etc/pam.d/login, /etc/pam.d/remote, /etc/hushlogins, $HOME/.hushlogin

دستور login از پیکربندی از طریق اعتبارنامه‌های systemd پشتیبانی می‌کند (به https://systemd.io/CREDENTIALS مراجعه کنید). دستور login اعتبارنامه‌های systemd زیر را می‌خواند:

login.noauth (بولی)

در صورت تنظیم، login را به گونه‌ای پیکربندی می‌کند که همانند گزینه -f، از احراز هویت ورود صرف‌نظر کند.

گزینه مستند‌نشده BSD یعنی -r پشتیبانی نمی‌شود. این گزینه ممکن است برای برخی برنامه‌های rlogind(8) مورد نیاز باشد.

ورود بازگشتی (recursive login)، آن‌گونه که در گذشته‌های دور ممکن بود، دیگر کار نمی‌کند؛ برای بیشتر اهداف، su(1) یک جایگزین مناسب است. در واقع، به دلایل امنیتی، login یک فراخوانی سیستمی vhangup(2) انجام می‌دهد تا هرگونه فرایند شنود احتمالی روی tty را حذف کند. این کار برای جلوگیری از شنود گذرواژه است. اگر کسی از دستور login استفاده کند، پوسته احاطه‌کننده توسط vhangup(2) کشته می‌شود زیرا دیگر مالک واقعی tty نیست. با استفاده از exec login در یک پوسته سطح بالا یا xterm می‌توان از این اتفاق جلوگیری کرد.

برگرفته از BSD login 5.40 (5/9/89) توسط Michael Glad <glad@daimi.dk> برای HP-UX. پورت‌شده به لینوکس 0.12 توسط: Peter Orbaek <poe@daimi.aau.dk>. بازنویسی به نسخه منحصراً PAM توسط Karel Zak <kzak@redhat.com>

mail(1), passwd(1), passwd(5), utmp(5), environ(7), getty(8), init(8), lastlog(8), shutdown(8)

برای گزارش باگ‌ها، از سامانه پیگیری مشکلات https://github.com/util-linux/util-linux/issues. استفاده کنید.

دستور login بخشی از بسته util-linux است که می‌تواند از بایگانی هسته لینوکس https://www.kernel.org/pub/linux/utils/util-linux. دریافت شود.

2026-09-02 util-linux 2.42.3