دستور sudo و نحوه استفاده از آن در لینوکس

دستور sudo به شما امکان می دهد برنامه هایی را با امتیازات امنیتی کاربر دیگر اجرا کنید. از شما درخواست پسورد می شود و برای اجرای یک دستور با بررسی فایلی به نام sudoers تأیید می کند، که البته مدیر سیستم آن را پیکربندی کرده است.
با استفاده از فایل sudoers مدیران سیستم می توانند به یکسری از کاربران یا گروه ها دسترسی به برخی یا همه دستورات را بدون اینکه این کاربران نیازی به دانستن رمز عبور root داشته باشند را بدهند. همچنین همه دستورات را ثبت می کند. بنابراین سوابقی وجود دارد که چه کسی برای چه زمانی و چه زمانی از آن استفاده کرده است.
لازم به ذکر است در هاست لینوکس امکان اجرای دستوراتی که در این مقاله ذکر شده است را ندارید و فقط در صورت خریداری سرور مجازی امکان دسترسی به سرور خواهید داشت.
در این مقاله sudo و نحوه استفاده از آن در لینوکس توضیح خواهیم داد.
پکیج sudo روی اکثر توزیع های لینوکس از قبل نصب شده است.جهت اطلاعات بیشتر می توانید به مقاله لینوکس چیست؟ مراجعه نمائید.
برای بررسی اینکه آیا sudo روی سیستم شما نصب شده است ، کنسول خود را باز کنید، sudo را تایپ کرده و Enter را فشار دهید. اگر sudo را نصب کرده باشید، یک پیام کوتاه نمایش می دهد. در غیر این صورت ، چیزی مانند ذیل نمایش خواهد داد.
sudo command not found
اگر sudo نصب نشده است، می توانید با استفاده از دستور ذیل به راحتی آن را نصب کنید.
نصب Sudo بر روی Ubuntu و Debian
apt install sudo
نصب Sudo بر روی CentOS و Fedora
yum install sudo
افزودن کاربر به Sudoers
در اکثر سیستم عامل های لینوکس به طور پیش فرض جهت دادن دسترسی sudo به گروه می بایست در فایل sudoers تغییرات اعمال گردد. اعضای این گروه می توانند هر دستوری را به عنوان کاربر root اجرا کنند. نام گروه ممکن است در هر سیستم عاملی لینوکسی متفاوت باشد.
در سیستم عامل های مبتنی بر RedHat مانند CentOS و Fedora نام گروه sudo به صورت wheel است
usermod -aG wheel username
در Debian ،Ubuntu و دیگر مشتقات آنها به صورت ذیل دسترسی داده می شود:
usermod -aG sudo username
به طور پیش فرض کاربر root در اوبونتو به دلایل امنیتی غیرفعال است و به کاربران توصیه می شود که دستوراتی که در نظر دارند در سرور اجرا کنند با استفاده از دستور sudo انجام دهند. کاربر ابتدایی که در زمان نصب ایجاد شده است عضوی از گروه sudo است، بنابراین اگر اوبونتو را استفاده می کنید، این احتمال وجود دارد که کاربری که با آن وارد شده اید امکان استفاده از دستورات Sudo را داشته باشید.
در صورتی که مدنظر دارید فقط به یکا کاربر دسترسی اجرای برنامه های خاصی را به عنوان sudo داشته باشد، می بایست کاربر را به گروه sudo در فایل sudoers اضافه نمائید.
به عنوان مثال: برای دادن دسترسی به کاربر با استفاده از linuxize فقط دستور mkdir را به عنوان sudo اجرا کنید:
sudo visudo
و سپس خط زیر را اضافه نمائید:
linuxize ALL=/bin/mkdir
در بیشتر سیستم ها، دستور visudo فایل/ etc / sudoers را با ویرایشگر متن vim باز می کند.همچنین می توان بدون وارد کردن پسورد به کاربران اجازه دهید دستورات sudo را اجرا کنند:
linuxize ALL=(ALL) NOPASSWD: ALL
نحوه استفاده از دستور sudo در لینوکس
نحو استفاده از دستور sudo به شرح زیر است:
sudo OPTION.. COMMAND
دستور sudo گزینه های زیادی دارد که رفتار آن را کنترل می کند.برای استفاده از آن دستور sudo را به عنوان پیشوند قرار دهید:
sudo command
sudo با خواندن فایل etc/sudoers/ بررسی می کند که آیا کاربر ایجاد شده با ارزیابی sudo همخوانی دارد یا خیر. زمانی که وارد سرور می شوید و در نظر دارید از دستور Sudo استفاده نمائید،می بایست نام کاربری به همراه پسورد را حتما وارد کنید.سپس امکان اجرای دیگر دستورات را همچون کاربر root خواهید داشت.
به عنوان مثال: برای لیست کردن تمامی فایل ها در پوشه root/ :
sudo ls /root
خروجی
[sudo] password for linuxize: . .. .bashrc .cache .config .local .profile
مدت زمان برای استفاده از پسورد (Password Timeout)
به طور پیش فرض در صورت گذشت پنج دقیقه و نداشتن هیچگونی فعالیتی Sudo از شما می خواهد مجدد رمز ورود خود را وارد نمائید. با ویرایش فایل sudoers می توانید مهلت زمانی پیش فرض را تغییر دهید. فایل را با visudo باز کنید:
sudo visudo
مدت زمانی پیش فرض را با افزودن خط زیر تنظیم کنید، در قسمت timestamp می توانید عدد ۱۰ را تغییر دهید:
Defaults timestamp_timeout=10
اگر می خواهید مدت زمان را فقط برای یک کاربر خاص تغییر دهید از قسمت user_name تغییرات را اعمال نمائید.
Defaults:user_name timestamp_timeout=10
اجرای دستورات با کاربری غیر از کاربر Root
تصور اشتباهی وجود دارد که sudo فقط برای ارائه مجوزهای Root به یک کاربر معمولی استفاده می شود. در واقع شما می توانید از sudo برای اجرای یک دستور به عنوان هر کاربری استفاده کنید.
گزینه u- به شما اجازه می دهد تا یک فرمان را به عنوان یک کاربر مشخص اجرا نمائید.
در مثال ذیل ما از sudo برای اجرای دستور whoami به عنوان کاربر “Ali” استفاده می کنیم:
sudo -u Ali whoami
دستور whoami نام کاربری را که فرمان را اجرا می کند چاپ می کند:
خروجی
Ali