Sudo: تفاوت بین نسخهها
(صفحهای تازه حاوی «نکته: برای تنظیمات دسترسیهای sudo توسط فایل پیکره بندی صفحه sudoers را بخو...» ایجاد کرد) |
جز |
||
(۱۵ نسخهٔ میانی ویرایش شده توسط ۶ کاربر نشان داده نشده) | |||
سطر ۱: | سطر ۱: | ||
− | + | توجّه: برای تنظیمات دسترسیهای ''sudo'' توسط فایل پیکربندی، صفحهی [[sudoers|sudoers]] را بخوانید. | |
− | + | در [[GNU/Linux|گنو/لینوکس]] (به طور کلی در [[unix|یونیکس]]) یک کاربر مدیر به نام [[root|ریشه(root)]] وجود دارد، معادل این کاربر در ویندوز Administrator است. کاربر ریشه بالاترین سطح دسترسی را داشته و میتواند هرکاری انجام دهد، از این رو استفاده روزانه از رایانه توسّط این کاربر میتواند خطرناک باشد. ممکن است یک دستور را اشتباه تایپ کنید و همه چیز را از بین ببرید. در حالت عادی با کاربری کار میکنید که تنها دسترسیهای لازم برای انجام کارهای مورد نظر را دارد، در بعضی مواقع این کاربر الزاماً باید دسترسی ریشه داشته باشد، اما در اکثر اوقات تنها یک کاربر عادی است. | |
− | در گنو/لینوکس (به طور کلی در یونیکس) یک کاربر مدیر به نام [[root|root]] وجود دارد، معادل این کاربر در ویندوز Administrator | ||
− | + | ''در حالت عادی کاربر ریشه در [[Ubuntu|اوبونتو]] قفل شده است''، این بدان معناست که نمیتوانید از کاربر ریشه برای وارد شدن به حساب کاربری استفاده کنید. با این حال با توجه به اینکه حساب کاربر ریشه وجود دارد، میتوان دستورات را با دسترسی این کاربر اجرا نمود. در اینجاست که دستور [[sudo]] وارد میشود، sudo این اجازه را به کاربران میدهد تا دستورات و برنامهها را بدون حضور کاربر ریشه، با دسترسی او اجرا نمایند. | |
− | این | + | این یعنی شما در [[terminal|پایانه]] باید برای اجرای برنامههایی که نیاز به دسترسی ریشه دارند از sudo استفاده کنید. در حالت مشابه وقتی یک برنامهی گرافیکی را اجرا میکنید که به دسترسی ریشه نیاز دارد (برای مثال تنظیمات شبکه)، sudo گرافیکی گذرواژه را درخواست مینماید. به یاد داشته باشید وقتی sudo از شما درخواست ورود گذرواژه میکند، گذرواژهی ''شما'' را میخواهد، نه کاربر ریشه. |
− | + | لطفاً به خاطر داشته باشید تعداد زیادی از کاربران اوبونتو در مرحله آشنا شدن با گنو/لینوکس هستند. در هر [[OS|سیستمعامل]] یک منحنی یادگیری وجود دارد که برخی کاربران تلاش میکنند با عملکردهایی چون فعّال کردن حساب ریشه، ورود به عنوان کاربر ریشه، تغییر سطح دسترسی پروندهها و… یک میانبر ایجاد کنند. به یاد داشته باشید یادگیری با خراب کردن سامانه، فرایندی طاقتفرسا است و میتواند از دستدادن اطلاعات را به دنبال داشته باشد. | |
− | به | + | ''مهم'': لطفاً زمانی که به دیگران مشورت میدهید، موارد پایهای چون مالکیت پروندهها، سطوح دسترسی، و نحوهی بهکارگیری sudo را به گونهای که کاربران تازهکار به سامانهی خود صدمهای وارد نکنند شرح دهید. |
− | + | =مزایای استفاده و معایب= | |
+ | ==مزایا== | ||
+ | # نصب کننده سوالات کمتری خواهد پرسید. | ||
+ | # کاربران نیازی برای به خاطر سپردن گذرواژهی اضافی ندارند که کهگاه آن را استفاده کنند. | ||
+ | # جلوی من هرکاری میتوانم انجام دهم را میگیرد. در هر عملیات مهم که تأثیر قابل توجّهی روی سامانه شما دارد، درخواست ورود گذرواژه میشود، این موضوع باعث میشود تا دوباره به دستوری که درحال اجرای آن هستید فکر کنید. | ||
+ | # دستور sudo یک گزارش در نشانی '''var/log/auth.log/''' اضافه میکند، اگر اشتباهی رخ داد، میتوانید ببینید چه دستوراتی اجرا شدهاند. | ||
+ | # زمانی که یک نفوذگر قصد دارد از حملات brute-force استفاده نماید، میداند حسابی با نام root بر روی سیستم شما وجود دارد و چیزی که نمی داند نام بقیهی حسابهاست. در نتیجه حملات خود را بر روی حساب ریشه اجرا میکند، اما اگر این حساب قفل شده باشد، اینگونه حملات یا حدس زدن گذرواژهی حساب ریشه، عملی بی معنی خواهد بود. | ||
+ | # انتقال آسان دسترسیهای مدیریت به وسیلهی افزودن و حذف کردن کاربران از گروهها را ممکن میسازد. در حالتی که اگر فقط از گذرواژهی حساب ریشه استفاده شود، تنها راه گرفتن دسترسیها، تغییر این رمز است. | ||
+ | # sudo میتواند با سیاست های امنیتی ویژهای پیکربندی شود. | ||
+ | # دیگر نیازی به بهاشتراک گذاشتن گذرواژهی حساب ریشه بین تمامی کاربرانی که نیاز به اجرای دستورات مدیریتی دارند نیست. | ||
+ | # تصدیق هویت کاربران پس از زمان کمی منقضی میشود (میتوان این مقدار را تعیین کرد). با این قابلیت، زمانی که از رایانهی خود فاصله بگیرید، دیگران فرصت اجرای هر دستوری روی رایانهی شما را از دست میدهند. | ||
− | == | + | ==معایب== |
+ | ۱. انتقال خروجی دستورات توسّط sudo روش دیگری را دنبال میکند. برای مثال دستور زیر کار نمیکند: | ||
+ | <pre> | ||
+ | $ sudo ls > /root/test | ||
+ | </pre> | ||
+ | برای هدایت خروجی باید از دستور زیر استفاده شود که خروجی را به انتهای پرونده اضافه میکند: | ||
+ | <pre> | ||
+ | $ ls | sudo tee -a /root/test | ||
+ | </pre> | ||
+ | یا دستور زیر که پرونده را با خروجی جدید باز نویسی میکند: | ||
+ | <pre> | ||
+ | $ ls | sudo tee /root/test | ||
+ | </pre> | ||
+ | همینطور میتوانید کل دستور را به یک شل که با sudo اجرا شده ارسال کنید: | ||
+ | <pre> | ||
+ | $ sudo sh -c "ls > /root/test" | ||
+ | </pre> | ||
+ | ۲. در برخی محیطهای اداری تنها حساب سامانه، حساب ریشه است و دیگر کاربران توسط روشهای NSS از جمله nss-ldap وارد میشوند. برای راهاندازی ایستگاه کاری یا حل کردن مشکلات شبکه هنگامی که nss-ldap خراب شده به حساب ریشه احتیاج داریم. | ||
− | + | =استفاده= | |
+ | ==sudo== | ||
+ | برای استفاده از sudo در خطفرمان، در ابتدای دستور از sudo استفاده کنید. | ||
− | ۱ | + | مثال ۱: |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<pre> | <pre> | ||
− | sudo | + | $ sudo chown bob:bob /home/bob/* |
</pre> | </pre> | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
مثال ۲: | مثال ۲: | ||
− | <pre>sudo /etc/init.d/networking restart</pre> | + | <pre> |
+ | $ sudo /etc/init.d/networking restart | ||
+ | </pre> | ||
− | برای اجرای آخرین | + | برای اجرای آخرین دستوری که در پایانه وارد شده با دسترسی ریشه میتوان از دستور زیر استفاده کرد: |
− | <pre>sudo !!</pre> | + | <pre> |
+ | $ sudo !! | ||
+ | </pre> | ||
− | + | =کاربران= | |
− | + | ==اجازه دادن به کاربران برای اجرای sudo== | |
+ | برای افزودن یک کاربر جدید به گروه sudo: | ||
+ | <pre> | ||
+ | $ sudo usermod <username> --append --groups sudo | ||
+ | </pre> | ||
+ | ==ورود به عنوان کاربری دیگر== | ||
+ | از این راه برای ورود به عنوان کاربر ریشه استفاده نکنید. | ||
+ | <pre> | ||
+ | $ sudo -i -u username | ||
+ | </pre> | ||
− | + | ==فعّال کردن حساب ریشه== | |
+ | این کار بسیار خطرناک است و ریسک آن به عهده خود شماست: | ||
+ | <pre> | ||
+ | $ sudo passwd root | ||
+ | </pre> | ||
+ | از شما درخواست میشود رمزعبوری برای حساب ریشه انتخاب نمایید. | ||
− | + | ==غیر فعّال کردن حساب ریشه== | |
− | + | اگر بنا به دلایلی حساب ریشه را فعّال کرده و اکنون قصد دارید آن را دوباره غیرفعّال کنید، از دستور زیر استفاده کیند: | |
− | + | <pre> | |
− | + | $ sudo passwd -dl root | |
− | + | </pre> | |
− | + | ==مطمئن شدن از داشتن دسترسی sudo== | |
− | + | برای اینکه مطمئن شوید شما دسترسی sudo را دارید این دستور را وارد کنید: | |
− | + | <pre> | |
− | + | sudo whoami | |
− | + | </pre> | |
− | <pre> | + | خروجی باید این باشد: |
− | + | <pre> | |
− | + | root | |
− | + | </pre> | |
− | == | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | <pre>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
مطمئن شدن از داشتن دسترسی sudo
برای اینکه مطمئن شوید شما دسترسی sudo را دارید این دستور را وارد کنید:
sudo whoami
خروجی باید این باشد:
root