تغییر کاربر فعلی به حساب کاربری دیگر استفاده میشود، معمولاً حساب کاربری root. با استفاده از این دستور، کاربر فعلی به حساب کاربری دیگر (مانند root) تغییر میکند و دسترسی به تمامی دستورات و مواردی که با آن حساب کاربری مرتبط هستند را پیدا میکند.
در مقابل، دستور sudo
(یا superuser do) به کاربران با دسترسی های مدیریتی اجازه میدهد تا دستورات خود را با دسترسی های حساب کاربری root یا حساب کاربری دیگری با دسترسی های ارتفاعی اجرا کنند. این دستور معمولاً برای اجرای وظایفی که نیاز به دسترسی های ارتفاعی دارند مانند نصب نرم افزار یا ویرایش فایل های پیکربندی سیستم استفاده میشود.
دستور sudo
نیاز به تأیید هویت کاربر توسط رمز عبور خود دارد (نه رمز عبور کاربر root یا حساب کاربری مورد نظر با دسترسی های ارتفاعی) که این روش امنیت بیشتری را برای اجرای دستورات با دسترسی های ارتفاعی فراهم میکند.
یکی از تفاوتهای اساسی بین sudo
و su
این است که sudo
به مدیران اجازه میدهد دسترسی محدود به دستورات یا وظایف خاصی را اختصاص دهند، در حالی که su
دسترسی کامل به تمامی دستورات و وظایف مرتبط با حساب کاربری هدف را میدهد. همچنین، دستور sudo
نیاز به تأیید هویت کاربر توسط رمز عبور خود دارد، در حالی که دستور su
نیاز به رمز عبور حساب کاربری مورد نظر با دسترسی های ارتفاعی دارد.
آیا میتوانم دستور su را برای تغییر به یک حساب کاربری دیگر به جز root استفاده کنم؟
حساب کاربری دیگری با دسترسی های ارتفاعی استفاده کنید، شرط این است که حساب کاربری مورد نظر در سیستم وجود داشته باشد و از پیش تعریف شده باشد.
برای تغییر به یک حساب کاربری دیگر با استفاده از دستور su
، نیاز است که نام کاربری مورد نظر را به عنوان پارامتر از دستور su
استفاده کنید. به عنوان مثال، برای تغییر به حساب کاربری user1
، میتوانید از دستور زیر استفاده کنید:
su user1
پس از اجرای این دستور، سیستم از شما درخواست رمز عبور حساب کاربری user1
را میکند و پس از وارد کردن رمز عبور صحیح، شما به حساب کاربری user1
تغییر میکنید. اگر حساب کاربری user1
دسترسی های ارتفاعی داشته باشد، شما میتوانید دستورات با دسترسی های ارتفاعی را اجرا کنید.
آیا میتوانم با استفاده از دستور sudo به یک حساب کاربری دیگر تغییر دهم؟
دهید، اما برای این کار باید ابتدا دسترسی لازم را در فایل پیکربندی sudoers تنظیم کنید.
در فایل پیکربندی sudoers میتوانید دسترسی های لازم را برای یک حساب کاربری خاص تعریف کنید. برای مثال، فرض کنید میخواهید حساب کاربری user1
دسترسی به دستورات sudo
با دسترسی های root داشته باشد. برای این کار، باید فایل پیکربندی sudoers را با یک ویرایشگر متنی باز کرده و به آن این خط را اضافه کنید
user1 ALL=(ALL:ALL) ALL
این خط به حساب کاربری user1
اجازه میدهد تا با دسترسی های root هر دستور sudo
را اجرا کند. پس از ذخیره فایل پیکربندی sudoers، کاربر user1
میتواند با استفاده از دستور sudo
دستورات با دسترسی های root را اجرا کند.
برای تغییر به حساب کاربری دیگر (به جز root) با دستور sudo
، میتوانید از دستور زیر استفاده کنید.
sudo -u username command
در این دستور، username
نام حساب کاربری مورد نظر است و command
دستوری است که میخواهید با دسترسی حساب کاربری username
اجرا کنید. برای مثال، برای اجرای دستور ls
با دسترسی حساب کاربری user1
، میتوانید از دستور زیر استفاده کنید:
sudo -u user1 ls
در این حالت، دستور ls
با دسترسی حساب کاربری user1
اجرا میشود.
آیا میتوانم دستورات خاصی را برای یک حساب کاربری خاص محدود کنم؟
برای این کار، میتوانید در فایل پیکربندی sudoers برای هر حساب کاربری دسترسی های خاصی را تعریف کنید.
برای مثال، فرض کنید میخواهید حساب کاربری user1
فقط به اجرای دستور service
با دسترسی های root دسترسی داشته باشد. برای این کار، باید فایل پیکربندی sudoers را با یک ویرایشگر متنی باز کرده و به آن این خط را اضافه کنید:
user1 ALL=(root) /usr/sbin/service
این خط به حساب کاربری user1
فقط اجازه میدهد تا دستور service
را با دسترسی های root اجرا کند. پس از ذخیره فایل پیکربندی sudoers، کاربر user1
میتواند با استفاده از دستور sudo
دستور service
را با دسترسی های root اجرا کند، اما نمیتواند دستورات دیگری را با دسترسی های root اجرا کند.
همچنین، میتوانید برای هر حساب کاربری دسترسی های محدود شده ایجاد کنید، به عنوان مثال، فقط به دسترسی به یک فایل یا دایرکتوری خاص. به این صورت، کاربر مورد نظر تنها میتواند به فایل یا دایرکتوری مورد نظر دسترسی داشته باشد و نمیتواند به دسترسی های دیگری دسترسی پیدا کند.
آیا میتوانید نحوه حذف دسترسی های یک حساب کاربری را توضیح دهید؟
بله، میتوانید دسترسی های یک حساب کاربری را در فایل پیکربندی sudoers حذف کنید. برای حذف دسترسی های یک حساب کاربری، باید فایل پیکربندی sudoers را با یک ویرایشگر متنی باز کرده و خط مربوط به دسترسی مورد نظر را حذف کنید. برای مثال، فرض کنید برای حساب کاربری user1
دسترسی به دستور service
با دسترسی های root تعریف کردهاید، حال میخواهید این دسترسی را حذف کنید. برای این کار، باید خط زیر را از فایل پیکربندی sudoers حذف کنید:
user1 ALL=(root) /usr/sbin/service
پس از ذخیره فایل پیکربندی sudoers، دسترسی به دستور service
برای حساب کاربری user1
حذف میشود.
توجه داشته باشید که همواره باید با احتیاط و دقت بالا در فایل پیکربندی sudoers اقدام به تغییرات کنید، زیرا تغییرات نادرست ممکن است باعث بروز مشکلات جدی در سیستم شود. برای اطمینان از صحت تغییرات، پیش از ذخیره فایل پیکربندی sudoers، آن را با استفاده از دستور visudo
بررسی کنید. دستور visudo
به شما امکان میدهد فایل پیکربندی sudoers را با یک ویرایشگر متنی باز کنید و پس از ذخیره تغییرات، فایل را بررسی کرده و در صورت وجود خطاها، اعلام کند.
مشکلات رایج در استفاده از sudo
در اینجا ۵ تا از مشکلاتی که sudo دارد را برایتان آورده ایم.
- sudo از مدیریت مؤثر و متمرکز برخوردار نیست، که باعث میشود مدیران سیستم وقت زیادی را برای ساخت و توزیع فایلهای سودو در سرور صرف کنند.
- sudo ریسک امنیتی را به وجود میآورد زیرا تحت کنترل فایلهای محلی است. مدیران امنیتی باید این فایلها را به درستی توزیع کنند. همچنین، فایل پیکربندی سودو به گونهای ذخیره میشود که مدیران محلی به راحتی تغییراتی اعمال کنند که یک ریسک امنیتی بزرگ است.
- sudo ممکن است مشکل تطبیق با استانداردها را به وجود آورد. بازرسان از فایلهای پیکربندی sudo توزیع شده راضی نیستند؛ زیرا از «static trust» استفاده میکنند. به همین دلیل، استفاده شما از سودو ممکن است باعث مشکلاتی در گذراندن بازرسیها شود.
- سازمانهایی که از sudo استفاده میکنند باید قادر باشند فایل را توزیع کنند، بنابراین یک روش توزیع خوب باید حفظ شود که منجر به هزینههای بیشتر برای سازمان شما خواهد شد.
- sudo به طور ذاتی قابلیت اتصال به احراز هویت چند عاملی (MFA) را به عنوان بخشی از فرآیند اعتبارسنجی کاربران مجاز را فراهم نمیکند.
بطور تئوری، sudo ابزاری قابل قبول است، اما نکات ضعف خود را دارد. من توصیه میکنم از یک سیستم مدیریت دسترسی مجاز خودکار استفاده کنید. راهحلهای مدیریت دسترسی مجاز Unix/Linux که در بازار امروز موجود است، جایگزینهای بسیار کارآمد و مؤثری برای سودو ارائه میدهند. با استفاده از یک سیستم PAM مناسب، شما قادر خواهید بود امنیت سرور Unix/Linux را به طور قابل توجهی بهبود بخشید، تطبیق با تجزیههای نظارتی را سادهتر نمایید و همچنین از طریق سادهسازی مدیریت، بهبودهای درز از طریق بهبود بهرهوری را تجربه کنید. مدیریت مناسب امتیاز کاربران به شما امکان میدهد تا کاربران را جدا کنید و تنها دسترسی مورد نیاز آنها را برای انجام وظایفشان به آنها ارائه دهید.
جمع بندی
دستور sudo به کاربران اجازه میدهد تا با استفاده از هویت کاربری خود دستورات را با دسترسی مدیریتی (root) اجرا کنند. با استفاده از sudo، کاربران میتوانند دستورات خاصی را با دسترسی Administrator اجرا کنند، بدون اینکه نیاز به ورود به حساب کاربری root داشته باشند. این مکانیزم امنیتی برای کنترل دسترسی کاربران به منابع سیستمی استفاده میشود.
در مقابل، دستور su (به معنای تغییر کاربر) به کاربران اجازه میدهد که به حساب کاربری root یا حساب دیگری با دسترسی مدیریتی تغییر کنند. با استفاده از دستور su، کاربران وارد یک حساب کاربری دیگر میشوند و تمام دستورات را با دسترسی root اجرا میکنند. این نوع تغییر کاربر ممکن است به دلایل امنیتی محدود شود و فقط به کاربرانی که اجازه دسترسی به حساب root را دارند محدود شود.