Sudo

از ویکی فارسی اوبونتو
پرش به: ناوبری، جستجو

توجّه: برای تنظیمات دسترسی‌های sudo توسط فایل پیکربندی، صفحه‌ی sudoers را بخوانید.

در گنو/لینوکس (به طور کلی در یونیکس) یک کاربر مدیر به نام ریشه(root) وجود دارد، معادل این کاربر در ویندوز Administrator است. کاربر ریشه بالاترین سطح دسترسی را داشته و می‌تواند هرکاری انجام دهد، از این رو استفاده روزانه از رایانه توسّط این کاربر می‌تواند خطرناک باشد. ممکن است یک دستور را اشتباه تایپ کنید و همه چیز را از بین ببرید. در حالت عادی با کاربری کار می‌کنید که تنها دست‌رسی‌های لازم برای انجام کارهای مورد نظر را دارد، در بعضی مواقع این کاربر الزاماً باید دسترسی ریشه داشته باشد، اما در اکثر اوقات تنها یک کاربر عادی است.

در حالت عادی کاربر ریشه در اوبونتو قفل شده است، این بدان معناست که نمی‌توانید از کاربر ریشه برای وارد شدن به حساب کاربری استفاده کنید. با این حال با توجه به اینکه حساب کاربر ریشه وجود دارد، می‌توان دستورات را با دسترسی این کاربر اجرا نمود. در این‌جاست که دستور sudo‌ وارد می‌شود، sudo‌ این اجازه را به کاربران می‌دهد تا دستورات و برنامه‌ها را بدون حضور کاربر ریشه، با دست‌رسی او اجرا نمایند.

این یعنی شما در پایانه باید برای اجرای برنامه‌هایی که نیاز به دسترسی ریشه دارند از sudo استفاده کنید. در حالت مشابه وقتی یک برنامه‌ی گرافیکی را اجرا می‌کنید که به دست‌رسی ریشه نیاز دارد (برای مثال تنظیمات شبکه)، sudo گرافیکی گذرواژه را درخواست می‌نماید. به یاد داشته باشید وقتی sudo از شما درخواست ورود گذرواژه می‌کند، گذرواژه‌ی شما را می‌خواهد، نه کاربر ریشه.

لطفاً به خاطر داشته باشید تعداد زیادی از کاربران اوبونتو در مرحله آشنا شدن با گنو/لینوکس می‌باشند. در هر سیستم‌عامل یک منحنی یادگیری وجود دارد که برخی کاربران تلاش می‌کنند با عمل‌کردهایی چون فعّال کردن حساب ریشه، ورود به عنوان کاربر ریشه، تغییر سطح دسترسی پرونده‌ها و… یک میانبر ایجاد کنند. به یاد داشته باشید یادگیری با خراب کردن سامانه، فرایندی طاقت‌فرسا است و می‌تواند از دست‌دادن اطلاعات را به دنبال داشته باشد.

مهم: لطفاً زمانی که به دیگران مشورت می‌دهید، موارد پایه‌ای چون مالکیت پرونده‌ها، سطوح دسترسی، و نحوه‌ی به‌کارگیری sudo، gksu، kdesudo را به گونه‌ای که کاربران تازه‌کار به سامانه‌ی خود صدمه‌ای وارد نکنند شرح دهید.

مزایای استفاده و معایب

مزایا

  1. نصب کننده سوالات کمتری خواهد پرسید.
  2. کاربران نیازی برای به خاطر سپردن گذرواژه‌ی اضافی ندارند که که‌گاه آن را استفاده کنند.
  3. جلوی من هرکاری می‌توانم انجام دهم را می‌گیرد. در هر عملیات مهم که تأثیر قابل توجّهی روی سامانه شما دارد، درخواست ورود گدرواژه می‌شود، این موضوع باعث می‌شود تا دوباره به دستوری که درحال اجرای آن هستید فکر کنید.
  4. دستور sudo یک گزارش در نشانی var/log/auth.log اضافه می‌کند، اگر اشتباهی رخ داد، می‌توانید ببینید چه دستوراتی اجرا شده‌اند.
  5. زمانی که یک نفوذگر قصد دارد از حملات brute-force استفاده نماید، می‌داند حسابی با نام root بر روی سیستم شما وجود دارد و چیزی که نمی داند نام بقیه‌ی حساب‌هاست. در نتیجه حملات خود را بر روی حساب ریشه اجرا می‌کند، اما اگر این حساب قفل شده باشد، این‌گونه حملات یا حدس زدن گذرواژه‌ی حساب ریشه، عملی بی معنی خواهد بود.
  6. انتقال آسان دست‌رسی‌های مدیریت به وسیله‌ی افزودن و حذف کردن کاربران از گروه‌ها را ممکن می‌سازد. در حالتی که اگر فقط از گذرواژه‌ی حساب ریشه استفاده شود، تنها راه گرفتن دسترسی‌ها، تغییر این رمز می‌باشد.
  7. sudo میتواند با سیاست های امنیتی ویژه‌ای پیکربندی شود.
  8. دیگر نیازی به به‌اشتراک گذاشتن گذرواژه‌ی حساب ریشه بین تمامی کاربرانی که نیاز به اجرای دستورات مدیریتی دارند نیست.
  9. تصدیق هویت کاربران پس از زمان کمی منقضی می‌شود (می‌توان این مقدار را تعیین کرد). با این قابلیت، زمانی که از رایانه‌ی خود فاصله بگیرید، دیگران فرصت اجرای هر دستوری روی رایانه‌ی شما را از دست می‌دهند.

معایب

۱. انتقال خروجی دستورات توسّط 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 !!

Graphical sudo

هرگز نباید از sudo برای اجرای برنامه های گرافیکی با دسترسی ریشه استفاده کرد. برای این منظور باید از gksu یا gksudo (در kubuntu از kdesudo) استفاده کنید. gksu مقدار متغیّر محیطی HOME را برابر ROOT~ قرار داده و پرونده‌ی Xauthority را در tmp قرار می‌دهد، این عمل از تغییر مالکیت پرونده‌های شاخه‌ی خانگی شما به root جلوگیری می‌کند.

مثال ۱:

$ gksudo gedit /etc/fstab

مثال۲:

$ kdesudo kate /etc/X11/xorg.conf

gksudo و kdesudo تنها پیوندی به gksu و kdesu هستند.


کشیدن و راه کردن

با دستور زیر یک اجراگر ایجاد کنید:

$ gksudo "gnome-open %u"

هنگامی که پرونده‌ای را به روی این اجراگر می‌کشید و رها می‌کنید، توسّط برنامه تعیین شده با دسترسی ریشه اجرا می‌شود. می‌توانید این اجراگر را روی میزکار یا… قرار داده و از آن برای ویرایش سریع پرونده‌های پیکربندی استفاده کنید.

کاربران

اجازه دادن به کاربران برای اجرای sudo

برای افزودن یک کاربر جدید به گروه sudo:

$ sudo usermod <username> --append --groups sudo

ورود به عنوان کاربری دیگر

از این راه برای ورود به عنوان کاربر ریشه استفاده نکنید.

$ sudo -i -u username

فعّال کردن حساب ریشه

این کار بسیار خطرناک است و ریسک آن به عهده خود شماست:

$ sudo passwd root

از شما درخواست می‌شود رمزعبوری برای حساب ریشه انتخاب نمایید.

غیر فعّال کردن حساب ریشه

اگر بنا به دلایلی حساب ریشه را فعّال کرده و اکنون قصد دارید آن را دوباره غیرفعّال کنید، از دستور زیر استفاده کیند:

$ sudo passwd -dl root