کاربران و مدیریت پایه‌ای حساب‌های کاربری

سیستم عامل 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
Fullname: J.Random User
Uid(Leave empty for default):Login
group [jru]:
Login
group is jru. Invite jru into other groups? []: wheel
Loginclass [default]:
Shell(sh csh tcsh zsh nologin) [sh]: zsh
Homedirectory [/home/jru]:
Homedirectory permissions (Leave empty for default):
Usepassword-based authentication? [yes]:
Usean empty password? (yes/no) [no]:
Usea random password? (yes/no) [no]:
Enter password:
Enter password again:
Lock out the account after creation? [no]:
Username  : jru
Password  : ****
FullName  : 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.
Addanother 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[#]: ۱۰۰۱
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:pdating 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)