Sudo
توجّه: برای تنظیمات دسترسیهای sudo توسط فایل پیکربندی، صفحهی sudoers را بخوانید.
در گنو/لینوکس (به طور کلی در یونیکس) یک کاربر مدیر به نام ریشه(root) وجود دارد، معادل این کاربر در ویندوز Administrator است. کاربر ریشه بالاترین سطح دسترسی را داشته و میتواند هرکاری انجام دهد، از این رو استفاده روزانه از رایانه توسّط این کاربر میتواند خطرناک باشد. ممکن است یک دستور را اشتباه تایپ کنید و همه چیز را از بین ببرید. در حالت عادی با کاربری کار میکنید که تنها دسترسیهای لازم برای انجام کارهای مورد نظر را دارد، در بعضی مواقع این کاربر الزاماً باید دسترسی ریشه داشته باشد، اما در اکثر اوقات تنها یک کاربر عادی است.
در حالت عادی کاربر ریشه در اوبونتو قفل شده است، این بدان معناست که نمیتوانید از کاربر ریشه برای وارد شدن به حساب کاربری استفاده کنید. با این حال با توجه به اینکه حساب کاربر ریشه وجود دارد، میتوان دستورات را با دسترسی این کاربر اجرا نمود. در اینجاست که دستور sudo وارد میشود، sudo این اجازه را به کاربران میدهد تا دستورات و برنامهها را بدون حضور کاربر ریشه، با دسترسی او اجرا نمایند.
این یعنی شما در پایانه باید برای اجرای برنامههایی که نیاز به دسترسی ریشه دارند از sudo استفاده کنید. در حالت مشابه وقتی یک برنامهی گرافیکی را اجرا میکنید که به دسترسی ریشه نیاز دارد (برای مثال تنظیمات شبکه)، sudo گرافیکی گذرواژه را درخواست مینماید. به یاد داشته باشید وقتی sudo از شما درخواست ورود گذرواژه میکند، گذرواژهی شما را میخواهد، نه کاربر ریشه.
لطفاً به خاطر داشته باشید تعداد زیادی از کاربران اوبونتو در مرحله آشنا شدن با گنو/لینوکس هستند. در هر سیستمعامل یک منحنی یادگیری وجود دارد که برخی کاربران تلاش میکنند با عملکردهایی چون فعّال کردن حساب ریشه، ورود به عنوان کاربر ریشه، تغییر سطح دسترسی پروندهها و… یک میانبر ایجاد کنند. به یاد داشته باشید یادگیری با خراب کردن سامانه، فرایندی طاقتفرسا است و میتواند از دستدادن اطلاعات را به دنبال داشته باشد.
مهم: لطفاً زمانی که به دیگران مشورت میدهید، موارد پایهای چون مالکیت پروندهها، سطوح دسترسی، و نحوهی بهکارگیری sudo را به گونهای که کاربران تازهکار به سامانهی خود صدمهای وارد نکنند شرح دهید.
محتویات
مزایای استفاده و معایب
مزایا
- نصب کننده سوالات کمتری خواهد پرسید.
- کاربران نیازی برای به خاطر سپردن گذرواژهی اضافی ندارند که کهگاه آن را استفاده کنند.
- جلوی من هرکاری میتوانم انجام دهم را میگیرد. در هر عملیات مهم که تأثیر قابل توجّهی روی سامانه شما دارد، درخواست ورود گذرواژه میشود، این موضوع باعث میشود تا دوباره به دستوری که درحال اجرای آن هستید فکر کنید.
- دستور sudo یک گزارش در نشانی var/log/auth.log/ اضافه میکند، اگر اشتباهی رخ داد، میتوانید ببینید چه دستوراتی اجرا شدهاند.
- زمانی که یک نفوذگر قصد دارد از حملات brute-force استفاده نماید، میداند حسابی با نام root بر روی سیستم شما وجود دارد و چیزی که نمی داند نام بقیهی حسابهاست. در نتیجه حملات خود را بر روی حساب ریشه اجرا میکند، اما اگر این حساب قفل شده باشد، اینگونه حملات یا حدس زدن گذرواژهی حساب ریشه، عملی بی معنی خواهد بود.
- انتقال آسان دسترسیهای مدیریت به وسیلهی افزودن و حذف کردن کاربران از گروهها را ممکن میسازد. در حالتی که اگر فقط از گذرواژهی حساب ریشه استفاده شود، تنها راه گرفتن دسترسیها، تغییر این رمز میباشد.
- sudo میتواند با سیاست های امنیتی ویژهای پیکربندی شود.
- دیگر نیازی به بهاشتراک گذاشتن گذرواژهی حساب ریشه بین تمامی کاربرانی که نیاز به اجرای دستورات مدیریتی دارند نیست.
- تصدیق هویت کاربران پس از زمان کمی منقضی میشود (میتوان این مقدار را تعیین کرد). با این قابلیت، زمانی که از رایانهی خود فاصله بگیرید، دیگران فرصت اجرای هر دستوری روی رایانهی شما را از دست میدهند.
معایب
۱. انتقال خروجی دستورات توسّط sudo روش دیگری را دنبال میکند. برای مثال دستور زیر کار نمیکند:
$ sudo ls > /root/test
برای هدایت خروجی باید از دستور زیر استفاده شود که خروجی را به انتهای پرونده اضافه میکند:
$ ls | sudo tee -a /root/test
یا دستور زیر که پرونده را با خروجی جدید باز نویسی میکند:
$ ls | sudo tee /root/test
همینطور میتوانید کل دستور را به یک شل که با sudo اجرا شده ارسال کنید:
$ sudo sh -c "ls > /root/test"
۲. در برخی محیطهای اداری تنها حساب سامانه، حساب ریشه است و دیگر کاربران توسط روشهای NSS از جمله nss-ldap وارد میشوند. برای راهاندازی ایستگاه کاری یا حل کردن مشکلات شبکه هنگامی که nss-ldap خراب شده به حساب ریشه احتیاج داریم.
استفاده
sudo
برای استفاده از sudo در خطفرمان، در ابتدای دستور از sudo استفاده کنید.
مثال ۱:
$ sudo chown bob:bob /home/bob/*
مثال ۲:
$ sudo /etc/init.d/networking restart
برای اجرای آخرین دستوری که در پایانه وارد شده با دسترسی ریشه میتوان از دستور زیر استفاده کرد:
$ sudo !!
کاربران
اجازه دادن به کاربران برای اجرای sudo
برای افزودن یک کاربر جدید به گروه sudo:
$ sudo usermod <username> --append --groups sudo
ورود به عنوان کاربری دیگر
از این راه برای ورود به عنوان کاربر ریشه استفاده نکنید.
$ sudo -i -u username
فعّال کردن حساب ریشه
این کار بسیار خطرناک است و ریسک آن به عهده خود شماست:
$ sudo passwd root
از شما درخواست میشود رمزعبوری برای حساب ریشه انتخاب نمایید.
غیر فعّال کردن حساب ریشه
اگر بنا به دلایلی حساب ریشه را فعّال کرده و اکنون قصد دارید آن را دوباره غیرفعّال کنید، از دستور زیر استفاده کیند:
$ sudo passwd -dl root