نحوه لیست کردن کاربران در لینوکس

نحوه لیست کردن کاربران در لینوکس

نیلوفر موسوی

آیا تاکنون خواسته اید که در سیستم لینوکس خود تمام کاربران را لیست کنید یا تعداد کاربران این سیستم را بشمارید؟ دستورهایی برای ایجاد کاربر ، حذف یک کاربر ، لیست ورود کاربران وجود دارد ، اما دستور لیست کردن کاربران در لینوکس چیست؟

این آموزش نحوه لیست کاربران در سیستم های لینوکس را به شما نشان می دهد.

در ادامه با ما در شتابان هاست همراه باشید.

با استفاده از فایل / etc / passwd لیستی از همه کاربران تهیه کنید:

اطلاعات محلی کاربران در فایل / etc / passwd ذخیره می شود. هر خط این فایل ، اطلاعات ورود به سیستم را برای یک کاربر نشان می دهد. برای باز کردن پرونده می توانید از cat یا less استفاده کنید:

less /etc/passwd $

دستور لیست کردن کاربران در لینوکس

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

  • نام کاربری
  • رمزعبور رمزگذاری شده
  • شماره شناسه کاربر (UID)
  • شماره شناسه گروهی کاربر (GID)
  • نام کامل کاربر (GECOS)
  • هوم دایرکتوری یوزر
  • ورود به سیستم (defaults to /bin/bash)

اگر می خواهید فقط نام کاربری را نمایش دهید ، می توانید از دستورات awk یا cut استفاده کنید تا فقط اولین فیلد حاوی نام کاربری پرینت گرفته شود:

awk -F: ‘{ print $1}’ /etc/passwd $

cut -d: -f1 /etc/passwd $

خروجی:

rootdaemon
bin
sys
sync


sshd
vagrant
jack
anne

لیستی از همه کاربران با استفاده از دستور getent دریافت کنید:

دستور getent ورودی هایی از دیتابیس های پیکربندی شده در فایل /etc/nsswitch.conf ، از جمله دیتابیس passwd را نشان می دهد ، که می تواند برای جستجوی لیستی از کلیه کاربران استفاده شود.

برای به دست آوردن لیستی از تمام کاربرهای لینوکس ، دستور زیر را وارد کنید:

getent passwd $

 

دستور لیست کردن کاربران در لینوکس

همانطور که مشاهده می کنید ، خروجی همان است که هنگام نمایش محتوای فایل / etc / passwd نمایش داده می شد. اگر از LDAP برای تأیید اعتبار کاربر استفاده کنید ، getent تمام کاربران لینوکس را از فایل / etc / passwd و دیتابیس LDAP نمایش می دهد.

همچنین می توانید از awk یا cut استفاده کنید تا فقط اولین فیلد حاوی نام کاربری را پرینت بگیرید:

‘{getent passwd | awk -F: ‘{ print $1 $

getent passwd | cut -d: -f1 $

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

اکنون که می دانیم چگونه کاربرانی را لیست کنیم ، برای بررسی اینکه آیا کاربر در جعبه لینوکس ما وجود دارد ، می توانیم با هدایت لیست به دستور grep ، لیست کاربران را فیلتر کنیم.

به عنوان مثال ، برای فهمیدن اینکه آیا کاربر با نام jack در سیستم لینوکس ما وجود دارد ، می توانیم از دستور زیر استفاده کنیم:

getent passwd | grep jack $

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

همچنین می توانیم بدون استفاده از دستور grep وجود کاربر را مطابق دستور زیر بررسی کنیم :

getent passwd jack $

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

اگر می خواهید دریابید که چه تعداد کاربر در سیستم خود دارید ، خروجی passwd getent را به دستور wc منتقل کنید:

getent passwd | wc -l $

خروجی:
۳۳ $

همانطور که در خروجی بالا می بینید ، سیستم لینوکس مربوطه دارای ۳۳ حساب کاربری می باشد.

سیستم و کاربران عادی:

هیچ تفاوت فنی واقعی بین سیستم و کاربران معمولی (عادی) وجود ندارد. به طور معمول کاربران سیستم هنگام نصب سیستم عامل و بسته های جدید ایجاد می شوند. در برخی موارد ، شما می توانید یک کاربر سیستم ایجاد کنید که توسط برخی برنامه ها استفاده خواهد شد.

کاربران عادی کاربرانی هستند که توسط root یا کاربر دیگری با امتیازات sudo ایجاد شده اند. معمولاً یک کاربر عادی دارای یک login shellقسمت ورود به سیستم واقعی و یک هوم دایرکتوری است.

هر کاربر دارای یک شناسه کاربری عددی به نام UID است. اگر هنگام ایجاد کاربر جدید با دستور useradd مشخص نشده باشد ، با توجه به مقادیر UID_MIN و UID_MIN ، UID به طور خودکار از فایل /etc/login.defs انتخاب می شود.

برای بررسی مقادیر UID_MIN و UID_MIN روی سیستم خود ، می توانید از دستور زیر استفاده کنید:

grep -E ‘^UID_MIN|^UID_MAX’ /etc/login.defs $

خروجی:
UID_MIN 1000 $
UID_MAX 60000 $

از خروجی بالا ، می بینیم که کلیه کاربران عادی باید دارای یک UID بین ۱۰۰۰ تا ۶۰۰۰۰ باشند. دانستن مقدار حداقل و حداکثر به ما این امکان را می دهد که لیستی از کلیه کاربران عادی سیستم خود را درخواست کنیم.

دستور زیر تمام کاربران عادی را در سیستم لینوکس ما لیست می کند:

{getent passwd {1000..60000 $

خروجی:

vagrant:x:1000:1000:vagrant,,,:/home/vagrant:/bin/bash $
jack:x:1001:1001:,,,:/home/jack:/bin/bash
anne:x:1002:1002:Anne Stone,,,:/home/anne:/bin/bash
patrick:x:1003:1003:Patrick Star,,,:/home/patrick:/usr/sbin/nologin

مقادیر UID_MIN و UID_MIN سیستم شما ممکن است متفاوت باشد بنابراین نسخه عمومی تر از دستور فوق به این شکل است:

{( eval getent passwd {$(awk ‘/^UID_MIN/ {print $2}’ /etc/login.defs)..$(awk ‘/^UID_MAX/ {print $2}’ /etc/login.defs$ $

اگر می خواهید فقط نام های کاربری را پرینت بگیرید ، فقط خروجی را به دستور cut منتقل کنید:

eval getent passwd {$(awk ‘/^UID_MIN/ {print $2}’ /etc/login.defs)..$(awk ‘/^UID_MAX/ {print $2}’ /etc/login.defs)} | cut -d: -f1 

همین دستورات برای هر توزیعی از لینوکس از جمله Ubuntu ، CentOS ، RHEL ، Debian و Linux Mint اعمال می شود.

 

 

امیدواریم از این مقاله لذت برده باشید.

 

برچسب ها: دستورات لینوکس

ارسال دیدگاه جدید