<p>امروز میخوام یه کار خطرناک اما کاربردی! رو بهتون آموزش بدم. شاید براتون پیش اومده باشه که بخواید یه سری دستور رو توی فایل شل بنویسید تا هر وقت خواستید اجراش کنید؛ اما اگه دستورات به دسترسی روت نیاز داشته باشند درگیریهایی براتون ایجاد میکنه که در بهترین حالتش وارد کردن پسورد برای هر بار اجرای فایل شل هست. حالا میخوام روشی رو آموزش بدم که دیگه نیاز به وارد کردن پسورد نباشه.</p> <p><img src="/assets/images/linux_widescreen_desktop_sudo_root_wide_linux-other.jpg" alt="linux_widescreen_desktop_sudo_root_wide_linux-other" /></p> <p>برای این کارها معمولاْ راه حلهای منطقی و امنی مثل محدود کردن مجوزهای سیستم هست که روشهای خودشون رو دارند اما این آموزشی که میخوام بدم بدترین کاری هست که میتونید انجام بدید! یعنی رمز خودتون رو تو فایل شل و کنار بقیه دستورات ذخیره کنید و امنیت خودتون رو بسپارید به دست باد!</p> <p>قبل از هر چیزی یادم اومد که در آینده حتماْ آموزشی برای تنظیمات سودو قرار بدم که هم امنیت شما تضمین بشه و هم کارهاتون رو راحت انجام بدید اما حالا بیاید راه خطرناک خودمون رو آموزش بدیدم! شاید خطرناک باشه و از اون استفاده نکنید ولی یادگیریش خالی از لطف نیست.</p> <p>خب فرض کنید دستورات من اینها باشن:</p> <div class="language-sh highlighter-rouge"><pre class="highlight"><code>rm -r /tmp/<span class="k">*</span> halt </code></pre> </div> <p>یعنی اینکه من قصد دارم با اجرای این فایل اول محتویات شاخه tmp (که فایلهای موقت سیستم و برنامهها در اون ذخیره میشن) حذف بشن و سپس سیستم خاموش بشه.</p> <p>ذکر کنم که این فقط یک مثال برای آموزش هست و اگه در واقعیت، من همچین فایلی بخوام بسازم باید به عقلم شک کنید! چون هم اینکه شاخه tmp حافظه موقت هست و بعد از ریست شدن پاک میشه و هم اینکه هرچی برنامه باز دارم رو بیخیال شدم و زدم سیستم رو یهو خاموش کردم!</p> <p>خب بریم سراغ آموزشمون. اگه دقت کنید دستور halt نیاز به دسترسی روت داره و باید با دستور sudo استفاده بشه. یعنی فایلمون اینطور تغییر میکنه:</p> <div class="language-sh highlighter-rouge"><pre class="highlight"><code>rm -r /tmp/<span class="k">*</span> sudo halt </code></pre> </div> <p>اما مشکل هنوز باقی هست. اگه توی محیط میزکار باشید و فایل رو اجرا کنید که اصلا اتفاقی نمیوفته (البته اگه بجای sudo از جایگزینهاش با رابط کاربری استفاده کنید، کادری باز میشه و رمز عبور رو درخواست میکنه) و اگر در ترمینال باشید و فایل رو اجرا کنید، رمز عبور از شما خواسته میشه.</p> <p>و اما… حالا وقت کار خطرناکی هست که میگفتم. دستورات رو به شکل زیر تغییر بدید (به جای PASSWORD، رمز خودتون رو بنویسید).</p> <div class="language-sh highlighter-rouge"><pre class="highlight"><code>rm -r /tmp/<span class="k">*</span> <span class="nb">echo </span>PASSWORD | sudo -S halt </code></pre> </div> <p>کار تموم شد. با هر بار اجرای فایل، دستورات به راحتی اجرا میشن. در دستور بالا همزمان پسورد شما در ورودی استاندارد (stdin) نوشته میشه و با سویچ S هم به دستور sudo گفتیم که پسورد رو از ورودی استاندارد بخونه.</p> <ul> <li>تصویر شاخص یک والپیپر هست که از سایت iphonewallpapers-hd.com گرفتم و شاید زیاد ربطی به این مطلب نداشته باشه اما برای پسزمینه خوبه :)</li> </ul>
اجرای دستور sudo بدون پسورد
11
فوریه
برچسب ها : آموزشی