اسکریپت نویسی پیشرفته لینوکس برای وبمستر ها – قسمت ۵ – مدیریت کاربران و پسورد ها : در سیستم عامل لینوکس, به ازای هر کاربر سی پنل, دایرکت ادمین, اف تی پی و غیره. یک کاربر در سیستم مدیریت کاربران لینوکس ایجاد میشود.
برای مشاهده تمام کاربران ایجاد شده در لینوکس میتوانید فایل /etc/passwd را مشاهده بفرمایید:
مدیریت کاربران و پسورد ها در اسکریپت نویسی پیشرفته لینوکس
در این فایل, هر سطر یک کاربر را به همراه مشخصات نمایش میدهد.
ساختار هر خط به صورت زیر است:
- Username: به عنوان نام کاربری, هنگام ورود کاربر به سرور استفاده میشود, طول آن از ۱ تا ۳۲ کاراکتر متغیر است.
- Password: رمز عبور کاربر است که به صورت کد شده در فایل /etc/shadow ذخیره میشود. در صورتی که مقدار آن برابر x تعیین شود, پسورد از فایل shadow خوانده میشود. در صورتی که برابر * تعیین شود, کاربر قادر نخواهد بود به سرور login شود. با وارد کردن *NP* اطلاعات ورود به سرور, از طریق NIS خوانده میشود.
- USER ID: هر کاربر یک شناسه منحصر به فرد دارد, عدد ۰ برای کاربر root و ۱ تا ۹۹ برای سایر کاربر های پیش تعریف شده, همچنین ۱۰۰ تا ۹۹۹ برای اکانت ها و گروه های مدیریتی و سیستمی تعریف شده. (در آزمون LPIC با دادن UID نوع کاربر را از شما میخواهند)
- GROUP ID: این عدد شماره گروه اصلی که کاربر به آن تعلق دارد را مشخص میکند. تمام فایل های ایجاد شده توسط کاربر توسط این گروه در دسترس خواهد بود.
- این فیلد شامل اطلاعات اضافی کاربر میشود, اوراکل نیز از این فیلد برای مشخص کردن کاربر استفاده میکند, میتوانید موارد متنوعی را در این فیلد وارد کرده و با کاما از هم جدا کنید, دستور Finger این فیلد را میخواند.
- Home directory: مسیر دایرکتوری خانگی کاربر است که موقع وارد شدن به سیستم در آن قرار میگیرد. برای کاربر های ftp باید برابر پوشه ftp متعلق به کاربر باشد.
- Command/shell: مسیر شل خط فرمان کاربر است, چند کاربر میتوانند خط فرمان های متفاوتی داشته باشند. (/bin/bash) آدرس پیشفرض است.
برای جستجوی کاربر در این فایل از دستور grep استفاده کنید. به طور مثالطراحی سایتسئو برای جستجوی کاربری به نام tom:
grep tom /etc/passwd
در اسکریپت نویسی شل لینوکس میتونید با کمک گرفتن از دستور IFS و While اطلاعات کاربران را استخراج کنید.
#!/bin/bash # seven fields from /etc/passwd stored in $f1,f2…,$f7 #
do echo “User $f1 use $f7 shell and stores files in $f6 directory.”
|
فایل /etc/shadow
همانطور که قبلا اشاره شد, پسورد کاربران به صورت کد شده در این فایل نگهداری میشود و فقط توسط کاربر root قابل خواندن خواهد بود.
ساختار این فایل (حداقل در centos) به صورت زیر است:
- نام کاربری
- پسورد کد شده
- تاریخ آخرین تغییر پسورد (بر حسب روز هایی که از تاریخ اول ژوئن ۱۹۷۰ گذشته)
- حداقل فاصله بر حسب تعداد روز برای تغییر مجدد پسورد (اگر برابر ۳ قرار دهید کاربر بعد هر بار تغییر پسورد تا ۳ روز قادر به تغییر نخواهد بود)
- حداکثر تعداد روزهایی که پسورد معتبر است (بعد آن, کاربر باید پسورد را تغییر دهد.
- تعداد روز های قبل انقضای پسورد جهت هشدار دادن به کاربر
- تعداد روزهای بعد انقضای پسورد جهت غیر فعال کردن کاربر
- تاریخ منقضی شدن پسورد کاربر (تاریخ مثل فیلد ۳ محاسبه میشود)
برای تغییر پسورد لازم نیست این فایل را دستی ویرایش کنید
دستور 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}
را وارد کنید.
نوین هاست یار نوین شماست.