PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : اجرای دستور سودو بدون پسورد



rayandata.com
February 12th, 2016, 17:17
شاید براتون پیش اومده باشه که بخواید یه سری دستور رو توی فایل شل بنویسید تا هر وقت خواستید اجراش کنید؛ اما اگه دستورات به دسترسی روت نیاز داشته باشند درگیری‌هایی براتون ایجاد می‌کنه که در بهترین حالتش وارد کردن پسورد برای هر بار اجرای فایل شل هست. در این پست آموزش لینوکس شما را با روش انجام این کار آشنا خواهیم کرد.

برای این کارها معمولاْ راه حل‌های منطقی و امنی مثل محدود کردن مجوز‌های سیستم هست که روش‌های خودشون رو دارند اما این آموزشی که می‌خوام بدم بدترین کاری هست که می‌تونید انجام بدید! یعنی رمز خودتون رو تو فایل شل و کنار بقیه دستورات ذخیره کنید و امنیت خودتون رو بسپارید به دست باد!
قبل از هر چیزی یادم اومد که در آینده حتماْ آموزشی برای تنظیمات سودو قرار بدم که هم امنیت شما تضمین بشه و هم کارهاتون رو راحت انجام بدید اما حالا بیاید راه خطرناک خودمون رو آموزش بدیدم! شاید خطرناک باشه و از اون استفاده نکنید ولی یادگیریش خالی از لطف نیست.
خب فرض کنید دستورات من این‌ها باشن:
rm -r /tmp/*
halt
یعنی اینکه من قصد دارم با اجرای این فایل اول محتویات شاخه tmp (که فایل‌های موقت سیستم و برنامه‌ها در اون ذخیره می‌شن) حذف بشن و سپس سیستم خاموش بشه.
ذکر کنم که این فقط یک مثال برای آموزش هست و اگه در واقعیت، من همچین فایلی بخوام بسازم باید به عقلم شک کنید! چون هم اینکه شاخه tmp حافظه موقت هست و بعد از ریست شدن پاک میشه و هم اینکه هرچی برنامه باز دارم رو بیخیال شدم و زدم سیستم رو یهو خاموش کردم!
خب بریم سراغ آموزشمون. اگه دقت کنید دستور halt نیاز به دسترسی روت داره و باید با دستور sudo استفاده بشه. یعنی فایلمون اینطور تغییر می‌کنه:
rm -r /tmp/*
sudo halt
اما مشکل هنوز باقی هست. اگه توی محیط میزکار باشید و فایل رو اجرا کنید که اصلا اتفاقی نمیوفته (البته اگه بجای sudo از جایگزین‌هاش با رابط کاربری استفاده کنید، کادری باز میشه و رمز عبور رو درخواست می‌کنه) و اگر در ترمینال باشید و فایل رو اجرا کنید، رمز عبور از شما خواسته میشه.
و اما… حالا وقت کار خطرناکی هست که می‌گفتم. دستورات رو به شکل زیر تغییر بدید (به جای PASSWORD، رمز خودتون رو بنویسید).
rm -r /tmp/*
echo PASSWORD | sudo -S halt
کار تموم شد. با هر بار اجرای فایل، دستورات به راحتی اجرا میشن. در دستور بالا همزمان پسورد شما در ورودی استاندارد (stdin) نوشته می‌شه و با سویچ S هم به دستور sudo گفتیم که پسورد رو از ورودی استاندارد بخونه.