جلوگیری از حذف تصادفی فایل ها در لینوکس با دستور chattr
بعضی وقت ها ممکن است به صورت کاملاً تصادفی روی 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 مواجه خواهیم شد.
البته، موقع حذف فایل با رابط گرافیکی هم قضیه از همان قرار است و با خطای حذف مواجه خواهید شد.
حتی اگر بخواهید متن جدیدی را به انتهای فایل اضافه کنید:
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 قبل بازیابی هستند.