اسکریپت نویسی پیشرفته لینوکس – مدیریت کاربران و پسورد ها

زمان مطالعه: 4 دقیقه
انتشار :
۱۴۰۰-۰۷-۲۲

اسکریپت نویسی پیشرفته لینوکس برای وبمستر ها – قسمت ۵ – مدیریت کاربران و پسورد ها : در سیستم عامل لینوکس, به ازای هر کاربر سی پنل, دایرکت ادمین, اف تی پی و  غیره.  یک کاربر در سیستم مدیریت کاربران لینوکس ایجاد میشود.

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

اسکریپت نویسی پیشرفته لینوکس مدیریت کاربران و پسورد ها

مدیریت کاربران و پسورد ها در اسکریپت نویسی پیشرفته لینوکس

در این فایل, هر سطر یک کاربر را به همراه مشخصات نمایش میدهد.

ساختار هر خط  به صورت زیر است:

اسکریپت نویسی پیشرفته لینوکس مدیریت کاربران و پسورد ها

  1. Username: به عنوان نام کاربری, هنگام ورود کاربر به سرور استفاده میشود, طول آن از ۱ تا ۳۲ کاراکتر متغیر است.
  2. Password: رمز عبور کاربر است که به صورت کد شده در فایل /etc/shadow ذخیره میشود.  در صورتی که مقدار آن برابر x تعیین شود, پسورد از فایل shadow خوانده میشود. در صورتی که برابر * تعیین شود, کاربر قادر نخواهد بود به سرور login شود. با وارد کردن *NP* اطلاعات ورود به سرور, از طریق NIS خوانده میشود.
  3. USER ID: هر کاربر یک شناسه منحصر به فرد دارد, عدد ۰ برای کاربر root و ۱ تا ۹۹ برای سایر کاربر های پیش تعریف شده, همچنین ۱۰۰ تا ۹۹۹ برای اکانت ها و گروه های مدیریتی و سیستمی تعریف شده. (در آزمون LPIC با دادن UID نوع کاربر را از شما میخواهند)
  4. GROUP ID: این عدد شماره گروه اصلی که کاربر به آن تعلق دارد را مشخص میکند. تمام فایل های ایجاد شده توسط کاربر توسط این گروه در دسترس خواهد بود.
  5. این فیلد شامل اطلاعات اضافی کاربر میشود, اوراکل نیز از این فیلد برای مشخص کردن کاربر استفاده میکند, میتوانید موارد متنوعی را در این فیلد وارد کرده و با کاما از هم جدا کنید, دستور Finger این فیلد را میخواند.
  6. Home directory: مسیر دایرکتوری خانگی کاربر است که موقع وارد شدن به سیستم در آن قرار میگیرد. برای کاربر های ftp باید برابر پوشه ftp متعلق به کاربر باشد.
  7. Command/shell: مسیر شل خط فرمان کاربر است, چند کاربر میتوانند خط فرمان های متفاوتی داشته باشند. (/bin/bash) آدرس پیشفرض است.

برای جستجوی کاربر در این فایل از دستور grep استفاده کنید. به طور مثالطراحی سایتسئو برای جستجوی کاربری به نام tom:

grep tom /etc/passwd

در اسکریپت نویسی شل لینوکس میتونید با کمک گرفتن از دستور IFS و While اطلاعات کاربران را استخراج کنید.

#!/bin/bash

# seven fields from /etc/passwd stored in $f1,f2…,$f7

#

  1. while IFS=: read -r f1 f2 f3 f4 f5 f6 f7

do

 echo “User $f1 use $f7 shell and stores files in $f6 directory.”

  1. done < /etc/passwd

فایل /etc/shadow

همانطور که قبلا اشاره شد, پسورد کاربران به صورت کد شده در این فایل نگهداری میشود و فقط توسط کاربر root قابل خواندن خواهد بود.

ساختار این فایل (حداقل در centos) به صورت زیر است:

 shadow file linux - novinhost.org

  1. نام کاربری
  2. پسورد کد شده
  3. تاریخ آخرین تغییر پسورد (بر حسب روز هایی که از تاریخ اول ژوئن ۱۹۷۰ گذشته)
  4. حداقل فاصله بر حسب تعداد روز برای تغییر مجدد پسورد (اگر برابر ۳ قرار دهید کاربر بعد هر بار تغییر پسورد تا ۳ روز قادر به تغییر نخواهد بود)
  5. حداکثر تعداد روزهایی که پسورد معتبر است (بعد آن, کاربر باید پسورد را تغییر دهد.
  6. تعداد روز های قبل انقضای پسورد جهت هشدار دادن به کاربر
  7. تعداد روزهای بعد انقضای پسورد جهت غیر فعال کردن کاربر
  8. تاریخ منقضی شدن پسورد کاربر (تاریخ مثل فیلد ۳ محاسبه میشود)

برای تغییر پسورد لازم نیست این فایل را دستی ویرایش کنید

دستور passwd اینکار را انجام میدهد:

Passwd username

به جای username نام کاربر مورد نظر را وارد کنید, سپس دوبار از شما خواسته میشود پسورد جدید را وارد کنید.

با استفاده از دستور

chage username

میتوانید سایر مشخصات کاربر username را تغییر دهید.

راهنمای زیر برای استفاده از دستور chage کمکتان میکند.

-d, --lastday LAST_DAY        set date of last password change to LAST_DAY
  -E, --expiredate EXPIRE_DATE  set account expiration date to EXPIRE_DATE
  -h, --help                    display this help message and exit
  -I, --inactive INACTIVE       set password inactive after expiration
                                to INACTIVE
  -l, --list                    show account aging information
  -m, --mindays MIN_DAYS        set minimum number of days before password
                                change to MIN_DAYS
  -M, --maxdays MAX_DAYS        set maximim number of days before password
                                change to MAX_DAYS
  -R, --root CHROOT_DIR         directory to chroot into
  -W, --warndays WARN_DAYS      set expiration warning days to WARN_DAYS

دستور های

pwck -r /etc/passwd
pwck -r /etc/shadow

کمک میکنند از صحت ساختار فایل های passwd و shadow اطمینان حاصل کنید

پارامتر –s   نیز کاربران را به ترتیب الفبا نمایش میدهد.

قفل کردن کاربر:

برای جلوگیری از ورود کاربر میتوانید از دستور

Passwd –l username استفاده کنید, دستور passwd -u {username} نیز کاربر را از حالت قفل خارج میکند.

با اسکریپت زیر میتوانید  کاربرانی که پسورد ندارند را به طور خودکار شناسایی و قفل کنید

#!/bin/sh
USERS="$(cut -d: -f 1 /etc/passwd)"
for u in $USERS
do
passwd -S $u | grep -Ew "NP" >/dev/null
if [ $? -eq ۰ ]; then
passwd -l $u
fi
done

ورود با اکانت های دیگر:

کاربر روت میتواند با هر نام کاربری به سیستم وارد شود و برای اینکار نیازی به دانستن پسورد ندارد

کافیست دستور

su - {username}

را وارد کنید.

نوین هاست یار نوین شماست.

بازخوردها
مقالات مرتبط
گیم فیشینگ چیست؟
گیمیفیکیشن چیست و چه تاثیری بر کسب و کارها دارد؟
یکی از نوین‌ترین روش‌ها برای برقراری ارتباط با مشتریان و یا مخاطبان، استفاده از روش‌های گیمیفیکیشن Gamification است.…
زمان مطالعه: 5 دقیقه
انواع سیستم عامل چیست ؟
سیستم عامل چیست؟ (معرفی انواع سیستم عامل)
بدون شک تمامی افرادی که با سیستم‌ها و تجهیزات کامپیوتری در ارتباط هستند، نام سیستم‌عامل را شنیدند و…
زمان مطالعه: 4 دقیقه