
مقدمه
افزودن و حذف کاربران روی یک سیستم لینوکسی، یکی از مهمترین وظایف مدیریت سیستم است که باید با آن آشنا شوید. وقتی یک سیستم جدید میسازید، اغلب بهصورت پیشفرض فقط به حساب root دسترسی داده میشود.
اجرای کارها بهعنوان کاربر root به شما کنترل کامل روی سیستم و کاربرانش میدهد؛ اما در عین حال خطرناک و احتمالاً مخرب است. برای وظایف معمول مدیریت سیستم، ایده بهتری است که یک کاربر بدون دسترسی (Unprivileged) اضافه کنید و آن وظایف را بدون دسترسیهای root انجام دهید. همچنین میتوانید برای هر کاربر دیگری که ممکن است روی سیستمتان داشته باشید، حسابهای بدون دسترسی اضافی بسازید. هر کاربر روی یک سیستم باید حساب جداگانه خودش را داشته باشد.
برای وظایفی که به دسترسیهای مدیریتی نیاز دارند، روی سیستمهای اوبونتو ابزاری به نام sudo نصب است. بهطور خلاصه، sudo به شما اجازه میدهد دستوری را بهعنوان کاربر دیگری — از جمله کاربران دارای دسترسیهای مدیریتی — اجرا کنید. در این راهنما یاد میگیرید که چطور حساب کاربری بسازید، دسترسیهای sudo اختصاص دهید و کاربران را حذف کنید.
اپلیکیشنهای فرانتاند خود را با پارمین کلود مستقیماً از گیتهاب مستقر کنید و مقیاسدهی اپلیکیشن را به پارمین کلود بسپارید.
نکات کلیدی
- استفاده از حساب root برای کارهای روزمره به دلیل ریسکهای امنیتی توصیه نمیشود؛ بهجای آن، کاربران استاندارد بسازید و فقط در صورت لزوم با sudo دسترسیها را ارتقا دهید.
- دستور adduser راهی سرراست و تعاملی برای ساخت حسابهای کاربری جدید فراهم میکند؛ شامل تنظیم رمز عبور و جزئیات اختیاری پروفایل.
- دسترسیهای مدیریتی بهطور مؤثر با افزودن کاربران به گروه sudo مدیریت میشوند؛ گروهی که به آنها توانایی اجرای دستورات با دسترسیهای بالاتر را میدهد.
- دستور visudo همیشه باید هنگام ویرایش فایل /etc/sudoers استفاده شود؛ چرا که تغییرات را اعتبارسنجی کرده و از خطاهای پیکربندیای که میتوانند کنترل دسترسی را خراب کنند، جلوگیری میکند.
- حذف یک حساب کاربری بهطور خودکار فایلهای او را حذف نمیکند؛ استفاده از گزینههایی مانند –remove-home در صورت نیاز، پاکسازی کامل را تضمین میکند.
- حسابهای کاربری میتوانند بدون حذف، بهطور موقت با قفلکردن رمز عبور یا اختصاص یک شل بدون ورود (Non-Login) غیرفعال شوند؛ این کار دادههای کاربر را حفظ کرده و دسترسی را محدود میکند.
پیشنیازها
برای تکمیل این آموزش، به دسترسی به یک سرور در حال اجرای اوبونتو نیاز دارید. اگر سرور اوبونتو ندارید، میتوانید برای راهاندازی سریع یک سرور، به راهنمای «راهاندازی یک سرور اوبونتو روی سرور مجازی پارمین کلود» مراجعه کنید. مطمئن شوید دسترسی root به سرور و فایروال فعال دارید. برای راهاندازی این موارد، راهنمای «راهاندازی اولیه سرور با اوبونتو» را دنبال کنید.
افزودن یک کاربر
اگر بهعنوان کاربر root وارد شدهاید، میتوانید هر زمان با اجرای دستور زیر کاربر جدیدی بسازید:
adduser newuser
اگر بهعنوان کاربر غیر rootی وارد شدهاید که به او دسترسی sudo داده شده، میتوانید کاربر جدید را با دستور زیر اضافه کنید:
sudo adduser newuser
در هر دو حالت، لازم است به یک سری سوال پاسخ دهید:
- یک رمز عبور برای کاربر جدید تعیین و تأیید کنید.
- هرگونه اطلاعات اضافی درباره کاربر جدید را وارد کنید. این بخش اختیاری است و در صورت تمایل به استفاده از این فیلدها، با فشردن ENTER قابل رد کردن است.
- در نهایت، از شما خواسته میشود تأیید کنید که اطلاعات ارائهشده درست بوده است. برای ادامه، Y را فشار دهید.
کاربر جدید شما اکنون آماده استفاده است و میتوان با رمز عبوری که وارد کردید وارد آن شد.
اگر لازم است کاربر جدید شما دسترسیهای مدیریتی داشته باشد، به بخش بعدی ادامه دهید.
اعطای دسترسیهای Sudo به کاربر
اگر کاربر جدید شما باید توانایی اجرای دستورات با دسترسیهای root (مدیریتی) را داشته باشد، باید به او دسترسی به sudo بدهید. بیایید دو رویکرد برای این کار بررسی کنیم: اول، افزودن کاربر به گروه از پیش تعریفشده sudo و دوم، مشخصکردن دسترسیها بهصورت کاربربهکاربر در پیکربندی sudo.
افزودن کاربر جدید به گروه Sudo
بهصورت پیشفرض، sudo روی سیستمهای اوبونتو طوری پیکربندی شده که دسترسیهای کامل را به هر کاربری در گروه sudo اعطا کند.
میتوانید با دستور groups ببینید کاربر جدید شما در چه گروههایی است:
groups newuser
خروجی:
newuser : newuser
بهصورت پیشفرض، کاربر جدید فقط در گروه خودش است؛ چون adduser این گروه را در کنار پروفایل کاربر میسازد. نام کاربر و گروه خودش یکسان است. برای افزودن کاربر به یک گروه جدید، میتوانید از دستور usermod استفاده کنید:
usermod -aG sudo newuser
گزینه -aG به usermod میگوید کاربر را به گروههای فهرستشده اضافه کند.
لطفاً توجه کنید که خودِ دستور usermod نیازمند دسترسی sudo است. این یعنی فقط زمانی میتوانید کاربران را به گروه sudo اضافه کنید که بهعنوان کاربر root وارد شده باشید یا بهعنوان کاربر دیگری که قبلاً عضو گروه sudo شده است. در حالت دوم، باید این دستور را با پیشوند sudo اجرا کنید؛ مانند این مثال:
sudo usermod -aG sudo newuser
مشخصکردن دسترسیهای صریح کاربر در /etc/sudoers
بهعنوان جایگزینی برای قرار دادن کاربر در گروه sudo، میتوانید از دستور visudo استفاده کنید که فایل پیکربندی به نام /etc/sudoers را در ویرایشگر پیشفرض سیستم باز میکند و دسترسیها را بهصورت کاربربهکاربر بهطور صریح مشخص میکند.
استفاده از visudo تنها روش توصیهشده برای اعمال تغییرات روی /etc/sudoers است؛ چرا که فایل را در برابر ویرایشهای همزمان متعدد قفل میکند و قبل از بازنویسی فایل، یک بررسی اعتبارسنجی روی محتوایش انجام میدهد. این کار به جلوگیری از موقعیتی کمک میکند که sudo را اشتباه پیکربندی کنید و نتوانید مشکل را رفع کنید؛ چون دسترسی sudo خود را از دست دادهاید.
اگر در حال حاضر بهعنوان root وارد شدهاید، دستور زیر را اجرا کنید:
visudo
اگر بهعنوان کاربر غیر root با دسترسی sudo وارد شدهاید، همان دستور را با پیشوند sudo اجرا کنید:
sudo visudo
بهطور سنتی، visudo فایل /etc/sudoers را در ویرایشگر vi باز میکند که برای کاربران بیتجربه میتواند گیجکننده باشد. بهصورت پیشفرض در نصبهای جدید اوبونتو، visudo از ویرایشگر متن nano استفاده میکند که تجربه ویرایش متن راحتتر و در دسترستری فراهم میکند. با کلیدهای جهتدار، مکاننما را حرکت داده و بهدنبال خطی بگردید که به این شکل است:
/etc/sudoers
root ALL=(ALL:ALL) ALL
زیر این خط، خط هایلایتشده زیر را اضافه کنید. حتماً newuser را با نام پروفایل کاربری که میخواهید به او دسترسی sudo بدهید، جایگزین کنید:
/etc/sudoers
root ALL=(ALL:ALL) ALL
newuser ALL=(ALL:ALL) ALL
برای هر کاربری که باید دسترسیهای کامل sudo بگیرد، خطی مثل این اضافه کنید. وقتی کارتان تمام شد، با فشردن CTRL+X و سپس Y و بعد ENTER برای تأیید، فایل را ذخیره کرده و ببندید.
تست دسترسیهای Sudo کاربر
اکنون کاربر جدید شما قادر به اجرای دستورات با دسترسیهای مدیریتی است.
وقتی بهعنوان کاربر جدید وارد شدهاید، میتوانید دستورات را بهعنوان کاربر معمولی خود با تایپ عادی دستورات اجرا کنید:
some_command
میتوانید همان دستور را با دسترسیهای مدیریتی و با تایپ sudo قبل از دستور اجرا کنید:
sudo some_command
هنگام انجام این کار، از شما خواسته میشود رمز عبورِ حساب کاربر معمولیای که با آن وارد شدهاید را وارد کنید.
حذف یک کاربر
در صورتی که دیگر به کاربری نیاز ندارید، بهتر است حساب قدیمی او را حذف کنید.
میتوانید خود کاربر را — بدون حذف هیچیک از فایلهایش — با اجرای دستور زیر بهعنوان root حذف کنید:
deluser newuser
اگر بهعنوان کاربر غیر root دیگری با دسترسی sudo وارد شدهاید، از دستور زیر استفاده میکنید:
sudo deluser newuser
اگر بهجای این میخواهید دایرکتوری خانگی (Home Directory) کاربر هم همراه با حذف کاربر حذف شود، میتوانید دستور زیر را بهعنوان root اجرا کنید:
deluser --remove-home newuser
اگر این دستور را بهعنوان کاربر غیر root با دسترسی sudo اجرا میکنید، همان دستور را با پیشوند sudo اجرا میکنید:
sudo deluser --remove-home newuser
اگر قبلاً برای کاربری که حذف کردهاید دسترسیهای sudo پیکربندی کرده بودید، ممکن است بخواهید خط مربوطه را دوباره حذف کنید:
visudo
یا اگر کاربر غیر root با دسترسی sudo هستید، از دستور زیر استفاده کنید:
sudo visudo
/etc/sudoers
root ALL=(ALL:ALL) ALL
newuser ALL=(ALL:ALL) ALL # این خط را حذف کنید
این کار جلوگیری میکند از اینکه کاربر جدیدی که با همان نام ساخته میشود، بهطور تصادفی دسترسی sudo بگیرد.
اگر گروهی عمدتاً برای کاربر خاصی بوده که حذف شده و هیچ کاربر دیگری عضو آن گروه نیست، ممکن است بخواهید آن را حذف کنید. این کار را میتوانید با دستور delgroup انجام دهید:
sudo delgroup groupname
قفلکردن یک کاربر بهجای حذف
سناریوهایی وجود دارند که ممکن است بخواهید بهجای حذف دائمی، حساب کاربری را بهطور موقت غیرفعال کنید. قفلکردن حساب کاربری معمولاً شامل غیرممکنکردن ورود اوست؛ بدون حذف دایرکتوری خانگی، فایلها یا شناسه کاربری (User ID) او.
قفلکردن رمز عبور
میتوانید رمز عبور کاربر را «قفل» کنید که مانع از احراز هویت او با رمز عبور حسابش میشود. این روشی رایج و مؤثر برای غیرفعالکردن ورود یک کاربر است. اگر بهعنوان root وارد شدهاید، میتوانید این کار را با دستور زیر انجام دهید:
passwd -l username
اگر بهعنوان کاربر غیر rootی وارد شدهاید که به او دسترسی sudo داده شده، میتوانید رمز عبور را با این دستور قفل کنید:
sudo passwd -l username
گزینه l- با افزودن یک کاراکتر ! به ابتدای رمز عبور هششده در /etc/shadow، رمز عبور اصلی را باطل میکند.
برای باز کردن قفل رمز عبور کاربر و اجازهدادن به او برای ورود مجدد با رمز عبور اصلیاش، دستور زیر را اجرا کنید:
passwd -u username
و اگر بهعنوان کاربر غیر root با دسترسی sudo وارد شدهاید، میتوانید از دستور زیر استفاده کنید:
sudo passwd -u username
گزینه u- با حذف قفل (پیشوند !) از هش رمز عبور، رمز را باز میکند تا رمز عبور موجود دوباره کار کند.
توجه کنید که قفلکردن رمز عبور فقط احراز هویت مبتنی بر رمز عبور را غیرفعال میکند. مثلاً، اگر کاربر بتواند با کلیدهای SSH احراز هویت کند، ممکن است همچنان بتواند به سیستم دسترسی داشته باشد؛ مگر اینکه دسترسی SSH آن کاربر را هم غیرفعال کنید.
غیرفعالکردن حساب (بدون شل ورود)
رویکرد دیگر، تغییر شل ورود پیشفرض کاربر به یک شل ناموجود یا Null (مثل /usr/sbin/nologin یا /bin/false) است. این کار مانع میشود کاربر پس از ورود، نشست شل تعاملی برقرار کند.
برای تغییر شل کاربر به /usr/sbin/nologin:
sudo usermod -s /usr/sbin/nologin username
برای برگرداندن شل به حالت اصلی (مثلاً /bin/bash):
sudo usermod -s /bin/bash username
سوالات متداول
۱. تفاوت adduser و useradd چیست؟
adduser یک اسکریپت سطح بالا و کاربرپسند است که فرایند ساخت حساب کاربری جدید را ساده میکند. این دستور بهصورت تعاملی اطلاعات را درخواست میکند، بهطور خودکار دایرکتوری خانگی میسازد، فایلهای Skeleton را کپی میکند (مثل .bashrc و .profile)، دسترسیهای مناسب را تنظیم کرده و یک شل پیشفرض اختصاص میدهد. در بیشتر موارد، دستور توصیهشده برای ساخت کاربر روی سیستمهای مبتنی بر دبیان مانند اوبونتو همین است.
useradd یک باینری سطح پایینتر است که کنترل دقیقی روی ساخت کاربر فراهم میکند. این دستور بهصورت پیشفرض دایرکتوری خانگی نمیسازد و فایلهای Skeleton را کپی نمیکند؛ و این موارد باید با گزینهها مشخص شوند یا بهصورت دستی هندل شوند. این دستور اغلب در اسکریپتها یا مدیریت خودکار سیستم استفاده میشود؛ جایی که کنترل دقیق و عملکرد غیرتعاملی لازم است.
۲. چطور در اوبونتو به کاربری دسترسی sudo بدهم؟
رایجترین و توصیهشدهترین راه برای اعطای دسترسی sudo به کاربر در اوبونتو، افزودن او به گروه sudo است. اعضای این گروه معمولاً طوری پیکربندی میشوند که بتوانند دستورات را با دسترسیهای root اجرا کنند.
میتوانید کاربر موجود را با دستور usermod به گروه sudo اضافه کنید:
sudo usermod -aG sudo username
بهجای username، نام واقعی کاربر را قرار دهید. فلگ a- مخفف «append» (افزودن) است و G- گروههای مکمل (Supplementary) را مشخص میکند. تغییرات معمولاً با ورود بعدی کاربر اعمال میشوند.
۳. آیا حذف کاربر، فایلهای او را هم حذف میکند؟
بهصورت پیشفرض، دستور deluser در اوبونتو (بدون گزینههای خاص) حساب کاربری را حذف میکند اما دایرکتوری خانگی و Mail Spool او را دستنخورده باقی میگذارد.
برای حذف دایرکتوری خانگی و Mail Spool کاربر همراه با حساب، باید از گزینه –remove-home استفاده کنید:
sudo deluser --remove-home username
اگر میخواهید دایرکتوری خانگی کاربر حذف شود و همزمان قبل از حذف، یک بکاپ از آن ساخته شود، میتوانید از گزینه –backup-home استفاده کنید:
sudo deluser --backup-home username
۴. آیا میتوانم کاربر حذفشده را بازیابی کنم؟
«بازیابی» مستقیم یک حساب کاربری حذفشده با یک دستور واحد در لینوکس معمولاً ممکن نیست. وقتی حساب کاربری حذف میشود، ورودی آن از فایلهای سیستمی مثل /etc/passwd و /etc/shadow و /etc/group حذف میشود.
با این حال، امکان بازیابی دادهها به نحوه حذف کاربر بستگی دارد. اگر فقط حساب حذف شده باشد (مثلاً اجرای deluser username بدون –remove-home)، دایرکتوری خانگی و فایلهای کاربر همچنان روی سیستم وجود خواهند داشت. سپس میتوانید کاربر را با همان نام کاربری و در صورت امکان با همان شناسه کاربری (UID) و شناسه گروه (GID) دوباره بسازید و دایرکتوری خانگی جدیدش را به دایرکتوری قدیمی اشاره دهید. این کار به او اجازه میدهد دوباره به فایلهای اصلی خود دسترسی پیدا کند.
۵. چطور بررسی کنم که کاربری دسترسی sudo دارد یا خیر؟
میتوانید با بررسی عضویت کاربر در گروهها، تأیید کنید که آیا دسترسی sudo دارد یا نه. کاربرانِ گروه sudo معمولاً دسترسی مدیریتی دارند. اجرا کنید:
groups username
اگر sudo در خروجی ظاهر شود، کاربر دسترسی sudo دارد. همچنین میتوانید فایل /etc/sudoers را (با استفاده از visudo) بررسی کنید تا ببینید دسترسیهای صریحی به او اختصاص داده شده است یا نه.
۶. چطور در اوبونتو بین کاربران جابهجا شوم؟
میتوانید با دستور su (Substitute User) به حساب کاربر دیگری سوئیچ کنید:
su - username
این دستور یک نشست ورود جدید برای کاربر مشخصشده شروع کرده و رمز عبور او را درخواست میکند. اگر خودتان دسترسی sudo دارید، میتوانید بدون نیاز به رمز عبور او سوئیچ کنید:
sudo su - username
این روش معمولاً توسط مدیران برای انجام کارها بهعنوان کاربر دیگر استفاده میشود.
جمعبندی
اکنون باید تسلط نسبتاً خوبی به نحوه افزودن و حذف کاربران از سیستم اوبونتوی خود، همراه با مدیریت دسترسیهای sudo، حذف گروههای کاربری و قفلکردن حسابهای کاربری داشته باشید. مدیریت مؤثر کاربران برای حفظ امنیت، سازمانیافتگی و یکپارچگی سیستم اوبونتو مهم است. مهارتهایی که امروز یاد گرفتید به شما اجازه میدهد کاربران را از هم جدا کرده و به هر کدام فقط دسترسیای را بدهید که برای انجام کارشان لازم است.




