در این آموزش، نحوه افزودن، حذف و اعطای امتیازات sudo به کاربران در سیستم عامل اوبونتو توضیح داده شده است. مراحل ارائه شده در این آموزش، در نسخه اوبونتو 20.04 LTS انجام شده است. با این حال، این مراحل در توزیع‌های مبتنی بر DEB یکسان است.

 

قبل از هر کار، شرح مختصری از sudo ارائه می‌شود.

 

این مطلب نیز ممکن است برای شما مفید باشد: فعالسازی sudo بدون رمز عبور برای کاربر در لینوکس

 

کاربر sudo چیست؟

در سیستم عامل‌های لینوکس و یونیکس، کاربر خاصی به نام root وجود دارد. کاربر root می‌تواند، هر کاری را در سیستم انجام دهد. استفاده از کاربر root برای فعالیت‌های روزانه می‌تواند خطرناک باشد و توصیه نمی‌شود. چراکه یک دستور اشتباه می‌تواند کل سیستم را از بین ببرد!

استفاده از sudo برای کاربران، اجازه انجام وظایف با امتیازات سطح ریشه را فراهم می‌نماید؛ حتی اگر آن‌ها رمز عبور کاربر را ندانند. به همین دلیل، ایجاد یک کاربر معمولی و اضافه کردن وی به گروه کاربر sudo برای انجام کارهای مدیریتی بسیار حائز اهمیت است. در این صورت، این کاربر می‌تواند؛ هم به عنوان کاربر عادی و هم به عنوان کاربر مدیریتی، هنگام اجرای دستورات با استفاده از sudo قبل از دستور عمل کند.

 

مزایای استفاده از sudo

  • لازم نیست رمزعبور root با سایر کاربران به اشتراک گذاشته شود.
  • لازم نیست کاربران برای انجام کارهای مدیریتی، رمزعبور کاربر root را بدانند.
  • هنگام انجام یک فعالیت مدیریتی، قبل از رخداد هرگونه تغییر در سیستم، از کاربران خواسته می‌شود، رمز عبور sudo را وارد کنند. این باعث می‌شود تا کاربران قبل از هرکار، در مورد پیامدهای آنچه می‌خواهند انجام می‌دهند، فکر کنند.
  • امتیازات مدیر به راحتی می‌تواند به کاربران اعطا شود و در صورت عدم نیاز برای آن‌ها لغو شود.
  • برخی از توزیع‌های لینوکس، به عنوان مثال اوبونتو، به طور پیش فرض کاربر root را غیرفعال می‌کند. بنابراین، امکان راه‌اندازی brute-force به کاربر root وجود ندارد. حتی اگر کسی تلاش کند، باز هم این کار بی‌معنی خواهد بود؛ چراکه، هیچ رمز عبور rootای برای کشف کردن وجود ندارد.
  • مهم‌تر از همه اینکه، نشست sudo پس از یک دوره کوتاه به پایان می‌رسد. بدین معنی که، اگر پس از اجرای دستورات به‌عنوان کاربر root با مجوز sudo، ترمینال را باز بگذارید، تأیید اعتبار به‌طور خودکار پس از مدتی منقضی می‌شود. از این رو، سایر کاربران نمی‌توانند هیچ فعالیت مدیریتی انجام دهند. به‌طور پیش‌فرض، پسورد برای 15 دقیقه در نشست فعلی ذخیره می‌شود. پس از آن، شما باید دوباره رمز عبور را وارد کنید.
  • شما می‌توانید فعالیت خط فرمان کاربران sudo را دائماً مشاهده نمایید. بدین صورت که sudo، یک گزارش از دستورات اجرا شده توسط کاربران را در فایل var/log/auth.log/ اضافه می‌کند. بنابراین، اگر مشکلی پیش بیاید، می‌توانید به آن دستورات نگاه کرده و متوجه شوید، چه اشتباهی رخ داده است.

این موارد، مزایای استفاده از sudo برای کاربران است. در ادامه، نحوه افزودن، حذف و اعطای امتیازات sudo به کاربران لینوکس شرح داده شده است.

 

این مطلب نیز ممکن است برای شما مفید باشد: فعال کردن کاربر root در لینوکس اوبونتو

 

افزدون، حذف و اعطای امتیازات sudo به کاربران در اوبونتو

 

افزودن کاربر جدید در لینوکس

در این بخش می‌خواهیم، یک کاربر معمولی با نام ubuntuserver ایجاد نماییم. بدین منظور، باید دستور زیر را اجرا نمایید:

$ sudo adduser ubuntuserver

در این صورت خروجی به صورت زیر خواهد بود.

Adding user `ubuntuserver' ...
Adding new group `ubuntuserver' (1001) ...
Adding new user `ubuntuserver' (1001) with group `ubuntuserver' ...
Creating home directory `/home/ubuntuserver' ...
Copying files from `/etc/skel' ...
New password: 
Retype new password: 
passwd: password updated successfully
Changing the user information for ubuntuserver
Enter the new value, or press ENTER for the default
	Full Name []: ubuntu 20.04 server
	Room Number []: 
	Work Phone []: 
	Home Phone []: 
	Other []: 
Is the information correct? [Y/n] y

اکنون، کاربر جدیدی به نام ubuntuserver ایجاد شد.

 

این مطلب نیز ممکن است برای شما مفید باشد: مدیریت رمز عبور حساب کاربری در لینوکس

 

اعطای امتیازات sudo به کاربران در لینوکس

در برخی از سیستم‌های لینوکس، به عنوان مثال Arch Linux، قبل از ایجاد کاربر جدید sudo، باید بسته “sudo” را به صورت زیر نصب کنید.

# pacman -S sudo

در دبیان:

# apt install sudo

در سرور و دسکتاپ اوبونتو، “sudo” به‌طور پیش فرض نصب شده است.

اکنون، کاربر تازه ایجاد شده را با استفاده از دستور زیر به گروه sudo اضافه نمایید:

$ sudo adduser ubuntuserver sudo

در این صورت خروجی به صورت زیر خواهد بود:

Adding user `ubuntuserver' to group `sudo' ...
Adding user ubuntuserver to group sudo
Done.

اکنون، به کاربر ubuntuserver مجوز sudo داده شد.

 

شما همچنین می‌توانید، از دستور زیر برای اضافه کردن یک کاربر به گروه sudo استفاده نمایید.

$ sudo usermod -aG sudo ubuntuserver

برای تأیید اینکه آیا کاربری در گروه sudo قرار دارد یا خیر، دستور زیر را اجرا کنید:

$ sudo -l -U ubuntuserver

در این صورت خروجی به صورت زیر خواهد بود:

Matching Defaults entries for ubuntuserver on ostechnix:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User ubuntuserver may run the following commands on ostechnix:
    (ALL : ALL) ALL

در اینجا، خط “(ALL: ALL) ALL” به این معنی است که کاربر از امتیازات نامحدودی برخوردار است و می‌تواند هر دستور را روی سیستم اجرا کند. در این حالت، کاربر ubuntuserver در گروه کاربر sudo است و اکنون می‌تواند همه نوع کارهای مدیریتی را انجام دهد.

 

این مطلب نیز ممکن است برای شما مفید باشد: اجازه یا منع دسترسی SSH برای یک کاربر یا گروه خاص در لینوکس

 

اکنون، اگر محتویات فایل sudoers را باز کنید؛

$ sudo cat /etc/sudoers

سطرهایی مانند زیر را مشاهده می‌نمایید.

[...]
# User privilege specification
root	ALL=(ALL:ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo	ALL=(ALL:ALL) ALL

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

همانطور که در خروجی بالا مشاهده می‌کنید، همه اعضای گروه sudo می‌توانند، هر دستوری را اجرا نمایند.

  • اولین ALL در خروجی بالا، کاربران مجاز است.
  • دومین ALL در خروجی بالا، میزبان‌ها هستند. اگر فایل sudoers یکسانی را در تعدادی رایانه میزبان توزیع کنید، کاربر می‌تواند دستورات مدیریتی را در تمام میزبان‌ها انجام دهد.
  • سومین ALL در خروجی بالا کاربری است که شما با استفاده از آن دستورات را اجرا می‌نمایید.
  • آخرین ALL مربوط به دستورات مجاز است.

 

تأیید کاربران sudo

برای تأیید، اگر کاربر قادر به انجام کارهای مدیریتی باشد، باید از سیستم خارج شده و به‌عنوان کاربر جدید وارد سیستم شود.

از طرف دیگر، بدون نیاز به خروج از نشست فعلی، بصورت زیر می‌توانید، بلافاصله به‌عنوان کاربر دیگری با امتیاز sudo وارد سیستم شوید.

$ sudo -i -u <username>

مثال:

$ sudo -i -u ubuntuserver

اکنون، هر دستور را پس از دستور sudo، مانند زیر اجرا کنید.

$ sudo apt update

 

حذف کاربران sudo

شما می‌توانید مجوزهای sudo را برای یک کاربر، بدون حذف کامل او حذف نمایید. البته هنگام انجام این کار در سیستم‌های اوبونتو باید مراقب باشید که ادمین اصلی را از گروه sudo حذف نکنید؛ بلکه باید حداقل یک کاربر sudo در سیستم وجود داشته باشد.

برای لغو مجوزهای sudo از یک کاربر، باید دستور زیر را اجرا نمایید:

$ sudo deluser ubuntuserver sudo

دستور فوق، کاربر ubuntuserver را از گروه sudo حذف می‌کند.

در این صورت خروجی به صورت زیر خواهد بود:

Removing user `ubuntuserver' from group `sudo' ...
Done.

لطفا دقت داشته باشید که این دستور، کاربر ubuntuserver را تنها از گروه sudo حذف می‌کند و بطور کامل آن را از سیستم حذف نمی‌نماید.

شما می‌توانید از دستور زیر نیز برای لغو مجوز sudo از کاربر استفاده کنید:

$ sudo gpasswd -d ubuntuserver sudo

اکنون، کاربر ubuntuserver به یک کاربر معمولی تبدیل شده و با مجوز sudo نمی‌تواند، هیچ فعالیت مدیریتی انجام دهد.

برای تأیید اینکه آیا کاربر واقعاً از گروه sudo حذف شده است یا خیر، از دستور زیر استفاده نمایید:

$ sudo -l -U ubuntuserver

در این صورت خروجی به صورت زیر خواهد بود:

User ubuntuserver is not allowed to run sudo on ostechnix.

اکنون، مجوز sudo از کاربر حذف شد.

 

حذف دائمی کاربران

در مرحله بالا می‌توانیم، کاربران را تنها از گروه sudo حذف کنیم و پس از آن، کاربر هنوز در سیستم وجود دارد. برای حذف کامل کاربر از یک سیستم لینوکس، باید به عنوان کاربر root یا sudo وارد سیستم شده و دستور زیر را اجرا نمایید:

$ sudo deluser <username>

مثال:

$ sudo deluser ubuntuserver

اگر می‌خواهید، یک کاربر را همراه با دایرکتوری home و ایمیل او حذف کنید، دستور زیر را اجرا نمایید:

$ sudo deluser --remove-home ubuntuserver

در این صورت خروجی به صورت زیر خواهد بود:

Looking for files to backup/remove ...
Removing files ...
Removing user `ubuntuserver' ...
Warning: group `ubuntuserver' has no more members.
Done.

برای اطلاعات بیشتر در مورد دستور adduser، deluser و sudo می‌توانید، با استفاده از دستورات زیر، صفحات man هر دستور را بررسی کنید.

$ man adduser
$ man deluser
$ man sudo

 

 

منبع:

ostechnix