کاربران و مدیریت پایهای حسابهای کاربری
سیستم عامل FreeBSD این اجازه را میدهد که چند کاربر بتوانند به صورت همزمان از کامپیوتر استفاده کنند. بصورتی که اگر یک کاربر پشت کامپیوتر نشتسه باشد و با صفحهکلید و ماوس با سیستم کار کند کاربران دیگر هم بتوانند از طریق شبکه به سیستم login کرده و با همان سیستم کارهای خود را انجام دهند.
لطفاً توجه داشته باشید که هر کاربر برای استفادهاز کامپیوتر نیازمند حساب کاربری مختص به خود میباشد.
در این نوشتار به موارد زیر میپردازیم:
– تفاوت میان انواع حسابهای کاربری در سیستم عامل FreeBSD
– نحوه اضافه کردن , پاک کردن و ویرایش حسابهای کاربری
– ایجاد محدودیت برای کنترل منابعی که کاربران و گروهها به آن دسترسی دارند
– نحوه ساختن یک گروه و اضافه کردن کاربران در آن
انواع حساب کاربری
درواقع بدلیل اینکه تمام سطح دسترسی ها و اجازه ها در FreeBSD بوسیله حسابهای کاربری تعریف و تمام پروسه ها توسط کاربران اجرا میشوند به همین دلیل مدیریت کاربران مبحت مهمی محسوب میشود.
ما در اینجا (FreeBSD) سه نوع اصلی حساب کاربری داریم:
– system account حساب کاربری سیستمی
– user account حساب کاربری کاربران سیستم
– superuser account حساب کاربری ریشه
# system account حساب کاربری سیستمی
حساب کاربری سیستمی برای اجرا سرویس دهنده ها نظیر DNS , Mail , Web Server و … استفاده میشود . این کار بدلیل ایجاد امنیت میباشد بخاطر اینکه اگر همه سرویس دهنده ها تحت حساب ریشه اجرا شوند میتوانند ایجاد مشکلاتی را در سیستم بکنند.
مثالی برای حساب کاربری سیستمی :
daemon , operator , bind , news و www
nobody یک حساب سیستمی معمولی میباشد که اکثر سرویس دهنده ها و فایلهای مربوط به آنها متعلق این حساب کاربری میباشند.
# user account حساب کاربری کاربران سیستم
حساب کاربری کاربران سیستم به افراد واقعی برای login کردن و استفاده از سیستم اختصاص داده میشود.هر شخصی که به سیستم دسترسی دارد باید یک حساب کاربری اختصاصی داشته باشد. این به مدیر سیستم اجازه میدهد که دسترسی های هر کاربر را تعریف کند و از دسترسی غیر مجاز آنها به منابع و اطلاعات دیگر کاربران جلوگیری کند.
هر کاربر میتواند محیط کاربری مختص به خود را داشته باشد مثلاً از shell , ویرایشگر متن , میانبرها , زبان و … دلخواه خود استفاده کند.
هر حساب کاربری در FreeBSD شامل یکسری اطلاعت به شرح زیر میباشد:
* User Name نام کاربری
نام کاربری در هنگام login کردن در کنار نشانگر مربوط به login نوشته میشود. هر کاربر باید یک نام کاربری یکتا داشته باشد. توصیه میشود که نام کاربری حداکثر ۸ کاراکتر باشد در غیر اینصورت ممکن است با نام یک برنامه کاربردی یا کاربر سیستمی تداخل پیدا کند.
* Password کلمه عبور
هر حساب کاربری باید شامل یک کلمه عبور باشد
* User ID (UID)
User ID یک عدد یکتاست که باعث میشود تا FreeBSD تفاوت بین حسابهای کاربری (user) را متوجه شود. پر واقع یک نام کاربری (user name) ابتدا به یک UID تبدیل شده و سپس دستوراتش پردازش میشود. پیشنهاد میشود که UID عددی کمتر از ۶۵۵۳۵ باشد در غیر این صورت ممکن است با بعضی از نرمافزارها تداخل پیدا کند.
* Group ID (GID)
Group ID یک عدد یکتاست که گروه اصلی که کاربر (user) به آن تعلق دارد را نشان میدهد. گروهها مکانیزم هایی هستند برای کنترل دسترسی به منابع و اطلاعات سیستم برای کاربرها. پیشنهاد میشود که GID عددی کمتر از ۶۵۵۳۵ باشد در غیر این صورت ممکن است با بعضی از نرمافزارها تداخل پیدا کند.
* Login Class
Login Class ها درواقع جهت گسترش و انعطاف پدیزی مکانیزم های گروهها آورده شده اند.
* Password Change Time
بصورت پیشفرض کلمه عبور در FreeBSD منقضی نمیشود ولی ما میتوانیم با استفاده از این گزینه بر اساس کاربر یا گروهی که کاربر در آن است او را مجبور کنیمکهدر دوره های زمانی مشخصی کلمه عبور خود را عوض کند.
* Account Expiry Time
بصورت پیشفرض یک حساب کاربری در FreeBSD هیچگاه منقضی نمیشوذ. ولی ما میتوانیم برای هر حساب کاربری یک تاریخ انقضا تعریف کنیم که بعد از آن تاریخ دیگر نمیتواند به سیستم login کند.
* User’s Full Name
نام کاربری (user name) در FreeBSD باید یکتا باشد اما user’s full name که نام کامل آن کاربر میباشد نیاز به یکتا بودن ندارد . این گزینه اختیاری میباشد و در کرد آن لازم نیست . این گزینه میتواند شامل space , حروف کوچک و بزرگ , بیشتر از ۸ کارکتر و … باشد.
* Home Directory
درواقع یک مسیر کامل به یک دایرکتوری در سیستم میباشد . این همان دایرکتوری است که وقتی کاربر login میکند بطور پیشفرض وارد آن میشود.هر کاربر اطلاعات و فایلهای خود را در دایرکتوری خانگی خود قرار میدهد.
* User Shell
محیط کاربری پیشفرض کاربر را مشخص میکند. تعداد زیادی shell وجود دارد که کاربر میتواند از آنها به عنوان محیط کاربری خود استفاده کند.
# Superuser Account حساب کاربری ریشه
حساب کاربری ریشه معمولاً به اسم root شناخته میشود . این حساب جهت مدیریت سیستم بدون هیچگونه محدودیتی بکار میرود . به همین دلیل نباید برای استفاده روزانه مانند فرستادن ایمیل , برنامه نویسی و … استفاده شود.
کاربر ریشه مانند دیگر حسابهای کاربری سیستم نیست . او میتواند هر کاری را بدون محدودیت انجام دهد و همین میتواند باعث ایجاد فاجعه شود. برای مثال یک کاربر معمولی با یک اشتباه نمیتواند سیستم را از کار بیندازد ولی کاربر ریشه چنین قابلیتی را دارد. به همین جهت پیشنهاد میشود از این کاربر وقت در صورتی که احتیاج به یک دسترسی غیر معمول دارید استفاده کنید.
مدیریت حسابهای کاربری
FreeBSD دستورات زیادی را جهت مدیریت حسابهای کابری ارائه میدهد که مهمترین آنها در زیر لیست شده اند:
– adduser دستور پیشنهادی ایجاد حساب کاربری جدید در سیستم
– rmuser دستور پیشنهادی پاک کردن حساب کاربری از سیستم
– chpass یک ابزار انعطاف پذیر برای تغییرات در دیتابیس کاربر
– passwd دستور عوض کردن پسورد کاربران سیستم
– pw یک ابزار قوی و انعطاف پذیر برای ایجاد هر تغییری در حسابهای کاربری سیستم
* adduser
ابزار پیشنهادی ایجاد حساب کاربری جدید در سیستم میباشد . وقتی یک کاربر جدید با این ابزار ساخنه میشود این ابزار بصورت خودکار فایلهای /etc/passwd و /etc/group را بروز میکند و همچنین دایرکتوری حانگی کاربر را میسازد و تنظیمات پیشفرض را از /usr/share/skel در آن کپی میکند.واضح است که این دستور باید در حالت ریشه اجرا شود.
این دستور بصورت پرسش و پاسخی عمل میکنید. در زیر نمونه ایاز اجرای دستور آورده شده است:
# adduser
Username: jru
Full name: J. Random User
Uid (Leave empty for default):
Login group [jru]:
Login group is jru. Invite jru into other groups? []: wheel
Login class [default]:
Shell (sh csh tcsh zsh nologin) [sh]: zsh
Home directory [/home/jru]:
Home directory permissions (Leave empty for default):
Use password-based authentication? [yes]:
Use an empty password? (yes/no) [no]:
Use a random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username : jru
Password : ****
Full Name : J. Random User
Uid : ۱۰۰۱
Class :
Groups : jru wheel
Home : /home/jru
Shell : /usr/local/bin/zsh
Locked : no
OK? (yes/no): yes
adduser: INFO: Successfully added (jru) to the user database.
Add another user? (yes/no): no
Goodbye!
#
نکته: هنگام وارد کردن کلمه عبور در این دستور , کلمه عبور نمایش داده نمیشود. در وارد کردن آن دقت کافی را بخرج دهید.
* rmuser
برای اینکه بتوانیم یک حساب کاربری را بطور کامل از سیستم پاک کنیم باید این دستور را در حالت ریشه اجرا کنیم. این دستور بترتیب و بصورت زیر عمل میکند:
– crontab کاربر را در صورت وجود پاک میکند.
– at job های کاربر را پاک میکند
– تمام پروسه های مربوط به کاربر را از بین میبرد. ( می کشد)
– کاربر را از فایل محلی password (passwd) پاک میکند.
– اگر دایرکتوری کاربری متعلق به کاربر باشد آن را پاک میکند
– ایمیلهای کاربر را که در /var/mail هستند را پاک میکند.
– تمام فایلهایی که در tmp و متعلق به کاربر هستند را پاک میکند.
– در آخر هم کاربر را از تمام گروههایی که در آنها هست پاک میکند و اگر گروهی با نام کاربر وجود داشته باشد آن را هم پاک میکند.
از این دستور برای پاک کردن کاربر ریشه نمیتوان استفاده کرد. این دستور بصورت پیشفرض از یک مود پرسش و پاسخی استفاده میکند. نمونه ی خروجی دستور در زیر آمده است:
# rmuser jru
Matching password entry:
jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh
Is this the entry you wish to remove? y
Remove user’s home directory (/home/jru)? y
Removing user (jru): mailspool home passwd.
#
* chpass
از این دستور برای ویرایش اطلاعات کاربر مانند عوض کردن shell پیشفرض , وارد کردن اطلاعات کاربر و … استفاده میشود . کاربر ریشه با استفاده از این دستور میتواند اطلاعات هر کاربری را تغییر دهد.
اگر این دستور بدون پیسوندی وارد شود اطلاعات مربوط به همان کاربر را میشود ویرایش کرد.
نکته: هنگامی که یک کاربر عادی دستور را اجرا میکند در ابتدا کلمه عبور کاربر درخواست میشود.
نمونهای از خروجی دستور در حالت اجرا بوسیله کاربر ریشه:
#Changing user database information for jru.
Login: jru
Password: *
Uid [#]: 1001
Gid [# or name]: 1001
Change [month day year]:
Expire [month day year]:
Class:
Home directory: /home/jru
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
نمونهای از خروجی دستور در حالت اجرا بوسیله کاربر عادی:
#Changing user database information for jru.
Shell: /usr/local/bin/zsh
Full Name: J. Random User
Office Location:
Office Phone:
Home Phone:
Other information:
* passwd
هر کاربری میتواند به راحتی به وسیله این دستور کلمه عبور خود را تغییر دهد.
نمونهای از خروجی دستور :
% passwd
Changing local password for jru.
Old password:
New password:
Retype new password:
passwd: updating the database…
passwd: done
کاربر ربشه میتواند با استفاده از این دستور کلمه عبور هر کاربری را تغییر بدهد.
به نمونه زیر دقت کنید:
# passwd jru
Changing local password for jru.
New password:
Retype new password:
passwd: updating the database…
passwd: done
* pw
این دستور قادر به ایجاد , حذف , ویرایش و نمایش کاربران و گروهها مباشد.
این دستور در یک مقاله جداگانه و مفصل بررسی خواهد شد.
مدیریت گروهها
یک گروه لیستی از کاربران است. در FreeBSD یک گروه توسط نام گروه و GID شناسایی میشود.
اسم گروه در فایل /etc/group به GID آن map شده است . این فایل یک فایل متنی ساده است که از ۴ ستون ایجاد شده است. ستون اول شامل اسم گروه , ستون دوم شامل کلمه عبور رمز شده , ستون سوم شامل GID و ستون چهارم شامل لیست اعضای گروه میباشد که بوسیله کاما از هم جدا شده اند.
کاربر ریشه میتواند /etc/group را بوسیله یک ویرایشگر متن ویرایش کند. همچنین ابزار های جایگزینی مانند pw برای این منظور وجود دارند.
برای مثال برای اضافه کردن یک گروه به اسم teamtwo با استفاده از pw بصورت زیر عمل میکنیم:
# pw groupadd teamtwo
# pw groupshow teamtwo
teamtwo:*:1100:
برای اینگه یک کاربر را با استفاده از pw عضو گروه teamtwo کنیم بصورت زیر عمل میکنیم:
# pw groupmod teamtwo -M jru
# pw groupshow teamtwo
teamtwo:*:1100:jru
نکته: از دستور id برای دیدن اطلاعات مربوط به user و group کاربر میتوان استفاده کرد.
% id jru
uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo)