امیرحسین کریم پور
مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

آموزش حذف تاریخچه دستورات لینوکس (Clean History)

زمانی که با سیستم عامل لینوکس کار می کنید و دستوراتی رو توی ترمینال اجرا می کنید این دستورات یک جا ذخیره میشن و شما میتونید لیست دستوراتی رو که اجرا کردید رو ببینید. اینکه تاریخچه دستورات وارد شده رو پاک کنید یا نکنید کاملا میتونه یک بحث سلیقه ای باشه یا اگه بحث سلیقه رو کنار بزاریم ممکنه کسی به لیست دستوراتی که قبلا اجرا کردید دست پیدا کنه و خرابکاری هایی روی سیستم تون بوجود بیاره پس از دیدگاه امنیتی هم میشه به این قضیه نگاه کرد. ما تو این مطلب به شما روش های مخنلف پاک کردن تاریخچه دستورات اجرا شده روی لینوکس رو آموزش میدیم. خب برای اینکه لیست دستورات اجرا شده روی سیستم تون رو مشاهده کنید کافیه دستور زیر رو اجرا کنید :

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
$ history

برای پاک کردن تاریخچه دستورات یکی از دو دستور زیر رو باید اجرا کنید :

$ history -c
$ history -cw

حالا یه کار جالب تر میتوان انجام داد و آن هم این است که زمانی که یک دستور رو اجرا می کنیم آن دستور در خروجی دستور history ظاهر نشود برای این کار ابتدا باید دستور زیر را اجرا کنید تا متغیر محیطی یا همان Environment Variable ای به نام HISTCONTROL با مقدار ignorespace را به لیست متغیر های محیطی اضافه کنیم :

# export HISTCONTROL=ignorespace

حالا کافیست قبل از اینکه دستوری رو اجرا کنیم یک خط فاصله (Space) در ابتدای دستور وارد کنیم ، برای مثال :

<space>sudo ping tosinso.com

اگر دستور فوق را اجرا کنید این دستور را در خروجی دستور history مشاهده نمی کنید و جالب تر اینکه زمانی کلید های Uppercase و Lowercase را بزنید نیز دستور وارد شده را مشاهده نخواید کرد.حالا اگر بخواهید دستورات خاصی را از خروجی دستور history پاک کنید کافیست سوئیچ d را بهمراه شماره دستور وارد کنید :

$ history -d 5

در این مثال عدد 5 پنجمین دستور وارد شده است. اگر دستور history را اجرا کنید مشاهده خواهید کرد که دستورات وارد شده را عدد گزاری کرده است.ممکن است شما بخواهید که زمانی که از سیستم Logout کردید history دستورات اجرا شده پاک شود. برای اینکار فایل bashrc. یوزر مورد نظر را ویرایش کنید و خط زیر را به فایل اضافه کنید :

unset HISTFILE

فایل را ذخیره کنید و از آن خارج شوید. حالا Logout کنید و دوباره دستور history را اجرا کنید خواهید دید که history پاک شده و دستوری بغیر از آخرین دستور که history است نمایش داده نمی شود.

یکی از مشکلاتی که روش های بالا در خودشان دارند این است که اگر دستور بخصوصی را از لیست history دستورات پاک کنید و در عین حال ترمینال (Session) های دیگری نیز باز کرده باشید دستورات در همان Session اجرا خواهند شد و به Session های دیگر تاثیری نخواهند داشت. این کار ممکن است به ضررتان تمام شود زیرا ممکن است دستور پاک کردن history را در ترمینالی اجرا کنید که دستورات مهمی را وارد نکرده اید و این کار امنیت سیستم تان را به خطر می اندازد.

پس چاره کار این است که همه دستورات اجرا شده را از روی تمامی Session هایتان پاک کنید برای انجام این کار اگر به ساختار سیستم عامل لینوکس وارد هستید قطعا میدانید که در پوشه کاربری هر یوزر یک فایل به نام bash_history. وجود دارد که تاریخچه دستورات اجرا شده توسط آن یوزر را در خود ذخیره می کند که باید محتویات آنرا پاک کنید. برای پاک کردن این محتویات باید دستور زیر را اجرا کنید :

$ cat /dev/null > ~/.bash_history

اجرای این دستور بصورت دستی ممکن است کمی خسته کننده باشد از این رو می توانید با استفاده از ساختار cron job این کار را بصورت اتوماتیک توسط خود سیستم انجام بدهید. ابتدا دستور زیر را اجرا کنید تا فایل crontab یوزر مورد نظر باز شود :

$ crontab -e

حالا در این فایل دستورات زیر را وارد کنید :

00 20 * * * cat /dev/null > ~/.bash_history

حالا فایل را ذخیره کنید. این cron job هر روز ساعت 8 شب اجرا خواهد شد و کاری که انجام می دهد این است که فایل bash_history. یوزر را خالی می کند.

نویسنده : امیرحسین کریم پور

منبع : linux.tosinso.com

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد


امیرحسین کریم پور
امیرحسین کریم پور

مدیر ارشد توسینسو و متخصص سرویس های مایکروسافت

امیرحسین کریم پور ، مدیر ارشد توسینسو ، متخصص شبکه ، تخصص در حوزه سیستم عامل های کلاینت و سرور مایکروسافت و سرویس های مربوطه ، سیستم عامل لینوکس و... ، سابقه کار با سازمان ها و شرکت های مختلف در زمینه سرویس های مایکروسافت در قالب پروژه ، مشاوره و آموزش. علاقه مند به حوزه امنیت اطلاعات و تست نفوذ سنجی

نظرات