هنگامی که این مطلب را میخوانید، ممکن است توسط خودم یا دیگران تغییراتی کرده باشد. بدین ترتیب مشکلات آن برطرف شده و قسمتهای جدیدی به آن اضافه میشوند. همواره میتوانید آخرین نسخه این مطلب را در دانشنامه BSD مطالعه کنید.
FreeBSD یک سیستم عامل چندکاربره است. به همین دلیل چندین کاربر میتوانند به صورت همزمان از کامپیوتر استفاده کنند. برای استفاده از سیستم، هر کاربر باید یک حساب کاربری جداگانه داشته باشد. تمام دسترسیها به سیستم توسط این حسابهای کاربری صورت میگیرد. تمام پروسهها هم توسط این حسابهای کاربری اجرا میشوند. بنابراین توانایی مدیریت این حسابهای کاربری یکی از مهارتهای بسیار مهم و پایه محسوب میشود.
در هنگام ایجاد یک حساب کاربری موارد زیر از شما سؤال میشود:
نام کاربری (username):
نام کاربری همان چیزی است که در جلوی اعلان login: مینویسید. این نام باید منحصر به فرد باشد؛ شما نمیتوانید دو حساب کاربری مختلف با یک username داشته باشید. انتخاب نام کاربری قوانینی دارد که در passwd(5) بحث شده است. نام کاربری معمولاً باید از حروف کوچک تشکیل شده باشد و بیشتر از ۸ کاراکتر طول نداشته باشد.
کلمهعبور (password):
هر حساب کاربری یک کلمه عبور دارد تا اشخاص غیرمجاز قادر به استفاده از آن نباشند. کلمه عبور میتواند خالی باشد که در این مورد دسترسی به سیستم بدون کلمه عبور امکانپذیر است. البته این ایده بدی است. تمام حسابهای کاربری باید کلمه عبور داشته باشند.
شماره کاربری (User ID یا UID ):
شماره کاربری، عددی است بین ۰ تا ۶۵۵۳۵ که به هر حسابکاربری اختصاص مییابد. رابطه بین UID و حسابکاربری رابطهای یکبهیک است. یعنی هر حساب کاربری توسط یک UID مشخص میشود. برنامهها برای دسترسی به یک حسابکاربری، تمایل به استفاده از UID آن دارند. یعنی هر جا که شما username خود را مینویسید، برنامه مورد نظر قبل از استفاده آن را تبدیل به UID متناظر میکند. اما رابطه بین UID و نامکاربری یک رابطه یکبهچند است. یعنی شما میتوانید برای یک UID ،username های مختلفی مشخص کنید.
شماره گروه (Group ID یا GID):
گروهها برای دستهبندی و مدیریت حسابهای کاربری استفاده میشوند. به کمک گروهها میتوانید دسترسی کاربران به منابع مختلف سیستم را مدیریت کرده و امنیت آن را بالا ببرید. یک کاربر میتواند عضو چند گروه مختلف باشد اما یک گروه به عنوان گروه اصلی کاربر درنظر گرفته میشود. گروهها هم مانند کاربران یک شماره منحصر به فرد به نام GID دارند که عددی است بین ۱ تا ۶۵۵۳۵٫
دایرکتوری خانگی (Home Directory):
دایرکتوری خانگی، به دایرکتوری میگویند که کاربر به محض ورود به سیستم در آنجا قرار میگیرد. کاربران باید فایلهای شخصی، تنظیمات و … خود را در این دایرکتوری ذخیره کنند. دایرکتوریهای خانگی معمولاً در مسیر /home/username یا /usr/home/username قرار دارند.
نامِ کاملِ کاربر (User’s full name) :
username ها خیلی گویای نام واقعی یک کاربر نیستند. به همین دلیل نام واقعی کاربران باید مشخص شود.
زمان تغییر کلمهعبور
برای امنیت بیشتر، میتوان کاربران را وادار کرد تا کلمهعبور خود را هر چندوقتیکبار عوض کنند. FreeBSD به صورت پیشفرض کاربران را مجبور به این انجام این کار نمیکند. اما شما میتوانید این رفتار را برای یکسری کاربر خاص یا همه کاربران درنظر بگیرید.
تاریخ انقضای حسابهای کاربری
حسابهای کاربری میتوانند تاریخ انقضا داشته باشند. با فرا رسیدن این تاریخ، حساب کاربری مورد نظر دیگر نمیتواند به سیستم login کند. اما فایلها و تنظیمات مربوط به آن حساب کاربری باقی خواهند ماند. اگر در هنگام ساخت یک حسابکاربری، میدانید که آن حساب یک عمر محدود دارد، (مثلاً در مدارس) میتوانید آن را مشخص کنید.
پوسته (shell):
هر کاربر برای تعامل با سیستم احتیاج به یک پوسته دارد. پوسته برنامهای است که دستورات را از کاربر گرفته، بعد از تفسیر آنها را به هسته سیستمعامل میسپارد تا اجرا شوند. سپس نتیجه را به کاربر تحویل میدهد. پوستههای مختلفی وجود دارد که کاربران بسته به سلیقه و تجربه خود میتوانند یکی را انتخاب کنند. پوسته پیشفرض در FreeBSD پوسته tcsh است.
انواع مختلف کاربران
به طور کلی سه نوع کاربر مختلف داریم:
- کاربر ریشه
- کاربران سیستمی
- کاربران معمولی
کاربر ریشه
این کاربر که معمولاً با نام root شناخته میشود برای انجام کارهای مدیریتی در سیستم استفاده میشود. از این کاربر نباید برای انجام کارهای روزانه مانند ارسال و دریافت ایمیل، گشتوگذار در سیستم، برنامهنویسی و … استفاده کنید. به این خاطر که کاربر ریشه، برخلاف کاربران معمولی، میتواند بدون هیچ محدودیتی هر کاری که خواست انجام دهد. استفاده نادرست از کاربر ریشه میتواند نتایج بدی به همراه داشته باشد. همیشه قبل از اینکه دستوری را از طریق این کاربر اجرا کنید، آن را دو یا سه بار بررسی کنید. وجود یک فضای خالی اضافه یا تایپ اشتباه یک کاراکتر میتواند باعث از بین رفتن اطلاعات مهم شود. بنابراین، اولین کاری که بعد از خواندن این مقاله باید انجام دهید این است که یک حسابکاربری برای خود ایجاد کرده و کارهای معمولی خود را با آن انجام دهید. (البته اگر تا حالا این کار را نکردید)
کاربران سیستمی
کاربران سیستمی به کاربرانی میگویند که برای اجرای سرویسهایی مثل DNS,mail,web server و … استفاده میشوند. به دلیل مسائل امنیتی نباید سرویسها را با کاربر ریشه اجرا کرد. اگر سرویسها را با کاربر ریشه اجرا کنیم، آنها میتوانند بدون محدودیت هر کاری که خواستند انجام دهند.
daemon,operator,bind,news,www نمونههایی از کاربران سیستمی هستند. هر کدام از این کاربران برای اجرای سرویسهای خاصی استفاده میشوند. مثلاً کاربر bind برای اجرای سرویس DNS استفاده میشود. با این حال یک کاربر سیستمی به نام nobody هم وجود دارد که مورد استفاده کلیتری داشته و میتوان انواع سرویسها را با آن اجرا کرد. اما همیشه یادتان باشد که هر چه سرویسهای بیشتری توسط nobody اجرا کنید، دسترسی این کاربر به پروسهها و فایلها بیشتر شده و قدرتمندتر میشود.
کاربران معمولی
این نوع حسابها برای استفاده افراد واقعی از سیستم درنظر گرفته شدهاند. استفاده از این حسابها از آسیب زدن به سیستم جلوگیری میکند. همچنین کاربران میتوانند برنامههای خود را سفارشی کنند؛ بدون اینکه بر روی برنامههای دیگر کاربران تأثیری بگذارد. هر کسی که از سیستم استفاده میکند باید یک حساب کاربری جداگانه داشته باشد. به این ترتیب میتوانید به راحتی بفهمید که چه کسی چه کاری را انجام میدهد. همچنین کاربران فقط میتوانند به فایلها، تنظیمات و ایمیلهایِ خودشان دسترسی داشته باشند که باعث بالا رفتن امنیت میشود.
مدیریت کاربران
دستورات مختلفی برای مدیریت کاربران در یونیکس وجود دارد. رایجترین آنها را به همراه توضیح مختصری در زیر میبینید:
نام دستور | عملکرد |
---|---|
adduser
|
این دستور برای اضافه کردن یک کاربر جدید به سیستم استفاده میشود. |
rmuser
|
این دستور برای حذف یک کاربر از روی سیستم استفاده میشود. |
chpass
|
یک دستورِ انعطاف پذیر برای تغییر مشخصات مختلف کاربران |
passwd
|
یک دستور ساده برای تغییر دادن کلمه عبور کاربران |
pw
|
یک دستور قدرتمند و انعطاف پذیر برای تغییر دادن تمام ویژگیهای یک حساب کاربری |
adduser
دستور adduser، یک دستور ساده برای اضافه کردن کاربران به سیستم است. این دستور خطوطی را در فایلهای passwd و groups اضافه میکند. این دستور همچنین که دایرکتوری خانگی برای کاربر مورد نظر ایجاد کرده و فایلهای پیکربندی پیشفرض را از مسیر /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 مرتبط با کاربر را پاک میکند.
- تمام پروسههایی که متعلق به کاربر مورد نظر هستند را از بین میبرد.
- کاربر را از فایل /etc/passwd حذف میکند.
- دایرکتوری خانگی کاربر را پاک میکند (اگر متعلق به او باشد)
- ایمیلهای کاربر را از فایل /var/mail پاک میکند.
- تمام فایلهای موقتی که متعلق به کاربر هستند را از دایرکتوری /tmp پاک میکند.
- نام کاربری را از تمام گروههای عضو در فایل /etc/groups پاک میکند.
از این دستور نمیتوانید برای پاک کردن کاربر root استفاده کنید. این دستور به صورت تعاملی عمل میکند تا مطمئن شود که شما حواستان هست که چه کار میکنید.
مثال:
# 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 Updating password file, updating databases, done. Updating group file: trusted (removing group jru -- personal group is empty) done. Removing user\'s incoming mail file /var/mail/jru: done. Removing files belonging to jru from /tmp: done. Removing files belonging to jru from /var/tmp: done. Removing files belonging to jru from /var/tmp/vi.recover: done. #
chpass
این دستور برای تغییر دادن اظلاعات مختلف یک حساب کاربری استفاده میشود. اطلاعاتی نظیر پوسته پیشفرض، کلمه عبور، و اطلاعات شخصی را میتوانید با این دستور تغییر دهید. تنها کابر ریشه اجازه تغییر کلمهعبور دیگران را با استفاده از chpass دارد. اگر این دستور را بدون هیچ گزینهای اجرا کنید، یک ویرایشگر باز شده که میتوانید مشخصات کاربر مورد نظرتان را در آن تغییر دهید. بعد از اینکه از ویرایشگر خارج شدید، اطلاعات جدید ذخیره میشوند. اگر یک کاربر معمولی این دستور را اجرا کند، هنگام خروج از ویرایشگر کلمه عبورش پرسیده میشود.
#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