مشخصات حساب کاربری در لینوکس صرفاً نام کاربری و پسورد نیست. نکته‌ی جالب این است که می‌توان ویژگی‌های مختلفی یک حساب کاربری را با اجرا کردن دستوراتی در محیط ترمینال تغییر داد و در واقع با استفاده از واسط خط دستور، حساب‌های کاربری را مدیریت کرد. برای تغییر دادن حساب‌های کاربری و اطلاعات کاربران می‌توانید از دو دستور chfn و usermod که هر یک آپشن‌هایی دارند، استفاده کنید.

در این مقاله با دستورات chfn و usermod در Linux آشنا می‌شویم.

نام و اطلاعات حساب کاربری در لینوکس

در Linux و سیستم عامل‌های شبیه به Unix، برای استفاده از کامپیوتر می‌بایست از حساب کاربری استفاده کرد. هر حساب کاربری یک نام مشخص دارد که با استفاده از آن می‌توانید لاگین کنید. به صورت پیش‌فرض نام فولدر خانه مشابه نام حساب کاربری است.

اما حساب کاربری ویژگی‌ها و اطلاعات دیگری نیز دارد. به عنوان مثال اطلاعات واقعی در مورد کاربران نظیر نام و نام خانوادگی به صورت کامل، شماره تلفن دفتر و محل کار، شماره تلفن شخصی و غیره، اطلاعاتی است که می‌توان برای حساب‌های کاربری تعریف کرد. در کامپیوترهای لینوکسی که تعداد زیادی کاربر از آن استفاده می‌کند، استفاده از این مشخصه‌ها در تعریف حساب‌های کاربری بسیار مفید است اما در عین حال در کامپیوترهای شخصی نیز می‌توان از این موارد استفاده کرد.

GECOS field و ذخیره کردن اطلاعات کاربر

مدت‌ها پیش کاربران Unix برای پرینت کردن، مجبور بودند اطلاعات را به مین‌فریم (کامپیوتر عظیم و اصلی) خاصی با سیستم عامل GECOS ارسال کنند. برای ارسال اطلاعات، ذخیره کردن اطلاعات حساب کاربری و استفاده از آن برای تأیید هویت ضروری بود. GECOS field برای ذخیره اطلاعات حساب‌های کاربری به کار می‌رفت و اکنون پس از سال‌ها تغییر و پیشرفت نیز مشخصه‌های حساب کاربری با عنوان کلی GECOS field در فایلی که در مسیر /etc/passwd قرار گرفته، ذخیره می‌شود، حاوی اطلاعات حساب کاربری است. البته در حال حاضر فقط نام کاربری و پسورد در این فایل ذخیره نمی‌شود بلکه موارد زیر در آن موجود است:

  • نام حساب کاربری
  • شناسه کاربری یا user ID
  • شناسه گروه یا group ID
  • آدرس فولدر خانه مربوط به حساب کاربری
  • shell مربوط به لاگین کاربر

می‌توان با دستوراتی مثل finger و pinky اطلاعات هر حساب کاربری را استخراج کرد و نمایش داد.

آشنایی با دستور chfn و روش استفاده از آن

دستور chfn که مخفف change finger information است، برای نوشتن اطلاعات یا تغییر اطلاعات موجود در GECOS field کاربرد دارد. اطلاعات به صورت لیستی است که آیتم‌های آن با : و مقدار آیتم‌ها با ویرگول یا , جدا می‌شود.

chfn در برخی نسخه‌ها و توزیعات لینوکس موجود است و در برخی می‌بایست آن را نصب کرد. به عنوان مثال در Ubuntu 18.04.1 یا Manjaro 18.1.0 به صورت پیش‌فرض قابل استفاده است اما در Fedora 31 می‌بایست آن را نصب کنید.

برای نصب کردن می‌بایست از ابزار مدیریت پکیج‌ها که در توزیعات مختلف لینوکس متفاوت است، استفاده کنید. به عنوان مثال در فدورا می‌توانید دستور زیر را در ترمینال اجرا کنید تا دانلود و نصب chfn انجام شود:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

اما شیوه‌ی استفاده از chfn: برای نمایش اطلاعات یک حساب کاربری خاص، کافی است پس از chfn نام حساب کاربری را تایپ کنید. اگر بخواهید تمام اطلاعات نمایش داده شود، می‌بایست از آشپن -l که مخفف long format یا فرمت طولانی است، استفاده کنید. به مثال زیر توجه کنید:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

به این ترتیب اطلاعات حسابی با نام dave نمایش داده می‌شود:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

همان‌طور که در تصویر فوق مشاهده می‌کنید، آدرس فولدر خانه و نام حساب کاربری و مسیر shell پیش‌فرض آن ذکر شده است. با chfn می‌توان این اطلاعات را تغییر داد و به عنوان مثال از اطلاعات واقعی شخص موردنظر استفاده کرد.

در صورت استفاده نکردن از آپشن -l، طبعاً اطلاعات به شکل متفاوتی نمایش داده می‌شود.

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

همان‌طور که در تصویر زیر مشاهده می‌کنید، خروجی دستور فوق حالت تعاملی دارد. به عبارت دیگر هر مشخصه از حساب کاربری از GECOS field استخراج شده و در براکت یا [] نمایش داده می‌شود.می‌توانید مقدار جدید را تایپ کنید و در عین حال اگر بخواهید مقدار فعلی حفظ شود، می‌توانید کلید Enter را فشار دهید.

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

همان‌طور که در تصویر زیر مشاهده می‌کنید، شماره اتاق و تلفن کاری و تلفن منزل را در مشخصات یک حساب کاربری ثبت کرده‌ایم:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

در نهایت برای چک کردن اطلاعات حساب کاربری موردبحث، دستور finger را به همراه آپشن -l اجرا می‌کنیم:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

همان‌طور که متوجه شده‌اید در مورد نام کامل شخص سوال نشده است. برای تغییر و ثبت نام کامل کاربر می‌بایست دستور chfn را با دسترسی ادمین و در واقع پس از sudo تایپ و اجرا کنید. البته نیازی به اجرا کردن مجدد فرآیند تغییر اطلاعات نیست بلکه می‌توانید هر مشخصه‌ی دلخواهی از حساب کاربری را به صورت تکی ویرایش کنید و تغییر دهید.

تغییر مشخصه‌ای از حساب کاربری با sudo chfn

برای تغییر دادن یکی از مشخصات حساب کاربری می‌بایست از آپشن مربوطه استفاده کنید. به عنوان مثال اگر بخواهید نام و نام خانوادگی کامل شخصی را تغییر بدهید، می‌بایست پس از دستور chfn از آپشن -f یا Full Name استفاده کنید. البته در این مورد استفاده از sudo نیز ضروری است. در مثال زیر نام کامل حساب کاربری dave به صورت Dave McKay ثبت می‌شود:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

و برای چک کردن مشخصات حساب، مجدداً از فرمان finger استفاده می‌شود:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

همان‌طور که می‌بینید نام کامل روبروی عبارت Name: ذکر شده است.

اما دیگر آپشن‌ها: برای تغییر دادن شماره‌ی اتاق از آپشن -r استفاده می‌شود. پس از این آپشن، شماره اتاق و در نهایت نام حساب کاربری را تایپ کنید. به مثال زیر توجه فرمایید:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

البته در برخی توزیعات لینوکس می‌بایست از آپشن -o برای تنظیم کردن شماره اتاق در دفتر استفاده کنید که روش کار مشابه استفاده از آپشن -r است. اگر در مورد آپشن‌ها مطمئن نیستید، از فرمان man استفاده کنید تا اطلاعات کامل در مورد فرمان chfn و تمام آپشن‌های آن نمایش داده شود:

برای تغییر یا تعریف کردن شماره تلفن کاری، از آپشن -w که مخفف Work Phone Number است، استفاده کنید. می‌بایست شماره تلفن را پس از این آپشن و قبل از نام حساب کاربری ذکر کنید، درست مثل نمونه‌ی زیر:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

تغییر شماره تلفن منزل نیز با آپشن -h که مخفف Home Phone Number است، صورت می‌گیرد. به مثال زیر توجه کنید:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

و فراموش نکنید که می‌توانید از دستور finger برای چک کردن اطلاعات حساب کاربری استفاده کنید:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

استفاده از chfn برای تغییر دیگر حساب‌های کاربری

می‌توانید در نقش مدیر آی‌تی و شبکه در یک شرکت و سازمان، از دستور chfn استفاده کنید و به عبارت دیگر اطلاعات حساب‌های کاربری دیگر را با این دستور تغییر دهید. اما قبل از تغییر شاید نیاز به چک کردن اطلاعات کامل حساب‌های کاربری دیگران باشد. می‌توانید از دستور finger و آپشن -l برای این مهم استفاده کنید. کافی است نام حساب کاربری موردنظر را پس از finger و قبل از آپشن -l تایپ کنید:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

برای ثبت اطلاعات اصلی حساب کاربری می‌توانید از chfn با دسترسی ادمین استفاده کنید. تنها تفاوت این است که نام حساب کاربری تغییر می‌کند:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

در این صورت در مورد هر یک از مشخصه‌ها سوال می‌شود و مقدار فعلی داخل براکت نمایش داده می‌شود. می‌توانید هر مشخصه را به شکل دلخواه تعریف کرده و ویرایش کنید. همان‌طور که در تصویر زیر مشاهده می‌کنید، با توجه به اینکه از sudo استفاده کردیم،  در ابتدا در مورد نام کامل یا Full Name نیز سوال می‌شود:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

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

در مشخصه‌ای با نام Other می‌توانید هر اطلاعات و توضیح دلخواهی در مورد حساب کاربری یا شخص موردنظر را قرار بدهید. برای ویرایش کردن آن نیز می‌بایست از آپشن -o که مخفف other است، استفاده کنید.

نکته‌ی دیگر این است که می‌توانید با دستور less، محتویات فایل اطلاعات حساب کاربری که در مسیر /etc/passwd ذخیره می‌شود را به راحتی چک کنید:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

و نمونه‌ای از کاربرد آپشن -o برای تغییر دادن سایر اطلاعات حساب کاربری:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

و در نهایت استفاده از دستور less برای چک کردن محتویات فایل اطلاعات کاربر:

اگر نسخه‌ای از chfn در لینوکس شما نصب شده که از آپشن -o برای تغییر سایر اطلاعات پشتیبانی نمی‌کند، راهکار جایگزین استفاده از دستور usermod است که در ادامه به آن می‌پردازیم.

آشنایی با usermod و آپشن‌های آن

دستور usermod برای تغییر دادن برخی ویژگی‌های حساب‌های کاربری طراحی شده است. به عنوان مثال می‌توانید حساب کابری را از گروه‌هایی حذف کنید و در گروه‌هایی اضافه کنید و همین‌طور shell پیش‌فرض حساب کاربری را تغییر دهید. کاربرد دیگر این است که می‌توانید GECOS field را مستقیماً تغییر بدهید!

به عنوان مثال فرض کنید حساب کاربری با نام mary موردتوجه است. ابتدا با فرمان زیر، محتویات فایل اطلاعات کاربری چک شده و خطی که در آن کلمه‌ی mary به کار رفته، نمایش داده می‌شود. این خط در حقیقت مشخصه‌های حساب کاربری است که همان‌طور که اشاره کردیم، موارد با : و , جدا می‌شوند:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

همان‌طور که در تصویر فوق مشاهده می‌کنید، مشخصه‌ها به ترتیب زیر است:

  • نام حساب کاربری
  • پسورد که با حرف x به منظور حفظ حریم خصوصی و امنیت نشان داده شده است و در فایلی در مسیر /etc/shadow ذخیره شده است.
  • شناسه کاربر
  • شناسه گروه کاربر
  • GECOS field
  • مسیر فولدر خانه
  • shell باز شده حین لاگین کردن کاربر

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

اما نکته‌ی مهم در تغییر اطلاعات به کمک usermod:

قبل از هر چیز توجه کنید که می‌بایست اطلاعات را به صورت کامل ذکر کنید چرا که دستور usermod تمام مشخصه‌های حساب کاربری که به آن GECOS field می‌گوییم را به یکباره جایگزین می‌کند و تغییر می‌دهد. به عنوان مثال اگر فقط نام کامل حساب کاربری را تایپ کنید، تنها مشخصه‌ای که ذخیره می‌شود، همین مورد است و سایر اطلاعات حذف خواهد شد!

با یک مثال روش کار روشن می‌شود: فرض کنید می‌خواهیم شماره اتاق شخصی با حساب کاربری mary را تغییر بدهیم. در این صورت تمام اطلاعات قبلی را تایپ می‌کنیم و بخش شماره اتاق را تغییر می‌دهیم. دقت کنید که قبل از فرمان usermod‌ از sudo استفاده کنید تا با دسترسی ادمین اجرا شود و همین‌طور از آپشن -c یا comment به منظور تایپ کردن رشته یا استرینگ اطلاعات حساب کاربری استفاده کنید. به دستور زیر توجه کنید:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

پس از این ویرایش، با اجرا کردن فرمان زیر می‌توان خط حاوی اطلاعات حساب کاربری mary را چک کرد:

چگونه با دستور chfn و usermod‌ اطلاعات حساب‌های کاربری در لینوکس را تغییر دهیم؟

به همین ترتیب استفاده از دستور finger با آپشن -l برای بررسی صحت اطلاعات جدیدی که تایپ شده، توصیه می‌شود.