اجرای دستور sudo بدون پسورد

امروز می‌خوام یه کار خطرناک اما کاربردی! رو بهتون آموزش بدم. شاید براتون پیش اومده باشه که بخواید یه سری دستور رو توی فایل شل بنویسید تا هر وقت خواستید اجراش کنید؛ اما اگه دستورات به دسترسی روت نیاز داشته باشند درگیری‌هایی براتون ایجاد می‌کنه که در بهترین حالتش وارد کردن پسورد برای هر بار اجرای فایل شل هست. حالا می‌خوام روشی رو آموزش بدم که دیگه نیاز به وارد کردن پسورد نباشه.

linux_widescreen_desktop_sudo_root_wide_linux-other

برای این کارها معمولاْ راه حل‌های منطقی و امنی مثل محدود کردن مجوز‌های سیستم هست که روش‌های خودشون رو دارند اما این آموزشی که می‌خوام بدم بدترین کاری هست که می‌تونید انجام بدید! یعنی رمز خودتون رو تو فایل شل و کنار بقیه دستورات ذخیره کنید و امنیت خودتون رو بسپارید به دست باد!

قبل از هر چیزی یادم اومد که در آینده حتماْ آموزشی برای تنظیمات سودو قرار بدم که هم امنیت شما تضمین بشه و هم کارهاتون رو راحت انجام بدید اما حالا بیاید راه خطرناک خودمون رو آموزش بدیدم! شاید خطرناک باشه و از اون استفاده نکنید ولی یادگیریش خالی از لطف نیست.

خب فرض کنید دستورات من این‌ها باشن:

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 گفتیم که پسورد رو از ورودی استاندارد بخونه.

  • تصویر شاخص یک والپیپر هست که از سایت iphonewallpapers-hd.com گرفتم و شاید زیاد ربطی به این مطلب نداشته باشه اما برای پس‌زمینه خوبه :)