شما برای مطالعه این مقاله فقط 8 دقیقه وقت نیاز دارید

prevent-accidental-deletation-files-linux
دسته بندی : آموزش لینوکس

جلوگیری از حذف تصادفی فایل ها در لینوکس با دستور chattr

5/5 - (1 امتیاز)

بعضی وقت ها ممکن است به صورت کاملاً تصادفی روی SHIFT+DELETE کلیک کنید و فایل های خود را از دست بدهید. مخصوصاً اگر این داده ها حساس باشند و هیچ بکاپی از آن نداشته باشید، این حذف تصادفی می تواند برای شما خیلی گران تمام شود. ولی با این حال، خبرهای خوبی برای شما داریم و آن هم این است که روش هایی وجود دارند که با استفاده از آنها می توانید از از حذف تصادفی فایل ها و فولدرها در لینوکس جلوگیری کنید و به قولی، محکم کاری کنید.

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

ابزارهایی مثل chattr روزنه امیدی برای حفظ اتفاقی فایل های مهمی هستند که حذف آنها می تواند برای سرور یا سیستم لینوکس شما خطرساز باشد.

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

پس اگر می خواهید امنیت و پایداری سیستم لینوکس خود را راحت تر حفظ کنید و شانسی برای دسترسی ها و اقدامات غیرمنتظره قائل نشوید، توصیه می کنیم که با روش های جلوگیری از حذف تصادفی فایل ها در لینوکس آشنا شوید:

روش ۱. مالکیت ها و مجوز های دسترسی را با دقت تنظیم کنید

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

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

روش ۲. از دستور chattr استفاده کنید

chattr یا Change Attribute ابزاری است که برای حذف ویژگی های خاص فایل ها یا دایرکتوری ها در سیستم لینوکس استفاده می شود. این ابزار به شما اجازه می دهد که تغییراتی را در ویژگی های فایل ایجاد کنید که هیچ کس حتی کاربر روت نتواند به طور عمدی یا تصادفی، فایل ها را تغییر دهد یا حذف کند.

ابزار chattr مناسب فایل های سیستم های ext2/ext3/ext4 است و اکثر توزیع های مدرن مثل اوبونتو، دبیان، CentOS و فدورا موجود است. اگر به هر دلیلی موقع استفاده از آن با خطای not found روبرو شدید، با استفاده از دستور نصب مناسب توزیع خود می توانید سیستم خود مجهز به این ابزار کاربردی کنید:

نصب chattr در توزیع های مبتنی بر دبیان مثل اوبونتو

sudo apt-get update

sudo apt-get install e2fsprogs

نصب chattr در توزیع های مبتنی بر Red Hat مثل CentOS

sudo yum update

sudo yum install e2fsprogs

نصب chattr در فدروا

sudo dnf update

sudo dnf install e2fsprogs

نصب chattr در توزیع های مبتنی بر Arch Linux مثل مانجارو

sudo pacman -Sy e2fsprogs

نصب chattr در openSUSE

sudo zypper refresh

sudo zypper install e2fsprogs

بعد از اینکه از نصب این ابزار مطمئن شدید، دیگر وقت آن است که با نحوه استفاده از آن آشنا شوید.

سینتکس دستور Chattr به صورت زیر است:

chattr [operator] [switch] [filename]

این ابزار دارای عملگر های زیر است:

+: ویژگی مشخص شده را به ویژگی های فایل اضافه می کند.

: ویژگی مشخص شده را از فایل حذف می کند.

=: فقط ویژگی های مشخص شده را برای فایل لحاظ می کند.

ویژگی ها که در سینتکس هم با switch مشخص شده اند، به صورت زیر هستند:

a: فقط امکان نوشتن در انتهای فایل (بدون تغییر محتوای قبلی)

i: تنظیم فایل به حالت غیرقابل تغییر یا حذف (همان Immutable)

d: نادیده گرفته شدن فایل در فرآیند بکاپ (No Dump)

u: عدم امکان بازیابی فایل حذف شده

c: فشرده سازی فایل به صورت خودکار

e: تعیین فرمت Extent مورد استفاده در فایل سیستم های مدرن مثل Extent

j: استفاده از ژورنال سازی برای محافظت از داده ها موقع قطعی یا خرابی فایل سیستم

u: بازیابی فایل حتی در صورت حذف با دستور unlink

s: جایگزینی محتویات فایل های حذف شده با داده های تصادفی

A: غیرفعال سازی تاریخ و ساعت دسترسی به فایل ها

البته این دستور ویژگی های دیگری هم دارد که می توانید به مستندات آن مراجعه کنید و از آنها کمک بگیرید.

man chattr

ما در این مقاله، بیشتر روی حذف تصادفی فایل ها و فولدرها تمرکز داریم پس بیایید با مثال های عملی در مورد نحوه استفاده از این دستور جلو برویم:

جلوگیری از حذف تصادفی فایل ها در لینوکس با chattr

برای این کار ابتدا در مسیر فعلی ترمینال خود یک فایل جدید ایجاد کنید تا تغییرات را روی آن اعمال کنید:

touch file.txt

بعد اگر می خواهید کاری کنید که این فایل غیرقابل تغییر باشد و چه تصادفی چه عمدی توسط هیچ کاربری حذف نشود یا تغییر پیدا نکند، کافیست ویژگی i که مخفف immutable است را به آن اضافه کنید:

sudo chattr +i file.txt

همچنین اگر می خواهید ویژگی های لحاظ شده در فایل را بررسی کنید، می توانید از دستور زیر استفاده کنید:

lsattr file.txt 

----i---------e---- file.txt

میبینید که تا به اینجای کار فقط ویژگی های i و e لحاظ شده اند.

حالا بیایید امتحان کنیم که این فایل با دستورات حذف فایل و دایرکتوری در لینوکس مثل rm حذف می شود یا نه:

rm file.txt

rm: cannot remove 'file.txt': Operation not permitted

نخیر. موقع اجرای این دستور با خطای cannot remove مواجه می شویم که نشان می دهد اجازه انجام این کار را نداریم. حتی اگر با sudo هم اجرا کنیم، باز با خطای cannot remove مواجه خواهیم شد.

کلیک کنید  معرفی فایروال IPTables و دستورات کاربردی در لینوکس

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

حتی اگر بخواهید متن جدیدی را به انتهای فایل اضافه کنید:

echo 'Hello World!' >> file.txt

باز با خطا مواجه خواهید شد:

bash: file.txt: Operation not permitted

حالا اگر بعدا به هر دلیلی خواستید این ویژگی را از فایل حذف کنید، کافیست عملگر + را به – تغییر دهید:

sudo chattr -i file.txt

این دستور، ویژگی i را از فایل موردنظر حذف می کند تا حذف فایل بدون هیچ خطایی انجام شود.

جلوگیری از حذف تصادفی فولدرها با chattr

اگر فولدر خاصی را در نظر دارید و می خواهید ویژگی های موردنظر را برای آن فولدر و محتویات آن لحاظ کنید، باید از آپشن R استفاده کنید.

فرض کنید با دستور زیر یک دایرکتوری حاوی file.txt ایجاد کرده ایم:

mkdir dir1 && touch dir1/file.txt

حالا اگر می خواهید ویژگی i را به صورت بازگشتی برای خود فولدر و محتویات آن که شامل file.txt است لحاظ کنید، باید از دستور زیر استفاده کنید:

sudo chattr -R +i dir1

موقع حذف این فولدر یا file.txt موجود در آن هم با خطای حذف روبرو خواهید شد:

rm: cannot remove ‘dir1/file.txt’: Operation not permitted

برای حذف بازگشتی این ویژگی هم باید از دستور زیر استفاده کنید:

sudo chattr -R -i dir1

جلوگیری از حذف فایل همراه با قابلیت الحاق

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

برای استفاده از این ویژگی باید آپشن a را به صورت زیر در دستور chattr لحاظ کنید:

sudo chattr +a file.txt

در صورتی که این ویژگی را برای یک فولدر و محتویات آن در نظر گرفته اید هم کافیست R را به دستور اضافه کنید:

sudo chattr -R +a dir1

بعد از این کار می توانید متنی به انتهای فایل اضافه کنید:

echo ‘Hello World!’ >> file.txt 

echo ‘This is me!’ >> dir1/file.txt

که برای بررسی آن هم می توانید از دستور cat استفاده کنید:

cat file.txt

cat dir1/file.txt

ولی نمی توانید فولدر یا فایل موجود در آن را حذف کنید:

rm file.txt

rm -fr dir1/

چون با خطای زیر مواجه خواهید شد. خطایی که نشان می دهد شما مجوز حذف این فایل یا فولدر را ندارید:

rm: cannot remove ‘file.txt’: Operation not permitted

rm: cannot remove ‘dir1/file.txt’: Operation not permitted

برای حذف ویژگی a از دستور هم می توانید از دستور زیر استفاده کنید:

sudo chattr -R -a dir1

اضافه کردن ویژگی امکان بازیابی بعد از حذف

با اینکه روش هایی برای بازیابی فایل های حذف شده لینوکس وجود دارند ولی اگر می خواهید بعد از حذف فایل های مهم، امکان بازیابی آنها را تضمین کنید تا در صورت تمایل، حتماً بتوانید آن را به سیستم فایل برگردانید، باید از ویژگی u استفاده کنید.

sudo chattr -u file.txt

البته این را هم بگوییم که بازیابی فایل شاید برای شما راهکار خوبی باشد ولی از لحاظ امنیتی کار چندان درستی نیست. این فایل ها می توانند در دسترس کاربران دیگری قرار بگیرند که بعد از شما از سیستم استفاده می کنند و درکل هر کاربر غیرمجازی می تواند با بازیابی فایل های مهم به آنها دسترسی پیدا کند و در صورت تمایل، از آنها سو استفاده کند.

پس متوجه شدید که chattr چگونه با استفاده از عملگرها و ویژگی ها خاص خود خیلی از کارها را برایتان راحت تر کرده است ولی ما چند توصیه دیگر هم داریم که می توانید برای جلوگیری از حذف تصادفی فایل ها استفاده کنید.

چند تکنیک دیگر برای جلوگیری از حذف تصادفی فایل ها در لینوکس

  • از فایروال های خود برای محدود کردن دسترسی به دستورات حذف استفاده کنید.
  • به صورت مداوم از داده ها و فایل های حساس خود بکاپ بگیرید.
  • از سطل زباله یا Trash استفاده کنید تا در صورت حذف موقت، امکان بازیابی وجود داشته باشد.
  • با استفاده از سطح دسترسی sudo، امکانات و مجوزهای کاربران برای حذف فایل را کنترل کنید.
  • از برنامه های قفل کننده فایل استفاده کنید.
  • به جای فایل ها، مجوزهای دسترسی را برای فولدرهای مهم خود لحاظ کنید تا کل محتوای مهم موجود در آن محافظت شوند.

در کل، بهتر است به یک روش اکتفا نکنید و از روش های بالا به صورت ترکیبی استفاده کنید تا اطمینان و دقت کار خود را بالا ببرید.

مزایای استفاده از روش های جلوگیری از حذف اتفاقی فایل ها در لینوکس

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

  • حفاظت از داده ها و اطلاعات مهم
  • حفاظت از امنیت سیستم
  • مدیریت بهتر منابع
  • حفظ پایداری و قابلیت اطمینان سیستم
  • جلوگیری از خطاهای انسانی
  • کنترل دقیق دسترسی ها
  • اعمال فیلترها و محدودیت های خاص برای جلوگیری از بازیابی غیرمجاز

اینکه با جلوگیری از حذف تصادفی فایل ها، یک وضعیت پایدار را برای سیستم یا سرور لینوکس فراهم می کنید، باعث می شود که کارایی آن را بالا ببرید و در هزینه و زمان لازم برای مدیریت سیستم صرفه جویی کنید.

سخن آخر

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

از اینکه تا انتهای مقاله با ما همراه بودید، از شما متشکریم. امیدواریم که مطالعه این مقاله برای شما مفید واقع شده باشد. در صورت داشتن هرگونه سوال، درخواست و نیاز به راهنمایی، می توانید با ثبت نظر خود، با ما وارد ارتباط شوید تا هر چه زودتر به شما پاسخ دهیم.

سوالات متداول:

بله. با اینکه موقع حذف فایل ها، اشاره گرهای مربوط به آن از فهرست سیستم فایل حذف می شود ولی داده های واقعی همچنان در دیسک می مانند و با استفاده از ابزارهایی مثل TestDisk قبل بازیابی هستند.

مطالب مشابهی که شاید علاقمند باشید

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

دیدگاه های شما

برای دریافت این مقاله لطفا ایمیلتان را وارد کنید

می توانید مقاله را دانلود کنید یا پرینت بگیرید