در سیستم عاملهای یونیکس مانند لینوکس، نشست ریشه (root) به طور پیشفرض میتواند تمام دایرکتوریها و فایلها را تغییر دهد. در این مقاله، ما نشان میدهیم که چگونه میتوان دایرکتوری و یا فایلهایی را غیر قابل حذف کرد، حتی توسط کاربر root!
برای ایجاد این نوع فایلها و دایرکتوریهاباید از دستور chattr استفاده کنیم. این دستور ویژگیهای فایل (attributes) را در سیستم فایل لینوکس تغییر میدهد.
توجه داشته باشید که برای انجام این کار نیاز به دسترسی با نشست روت دارید، پس از کامند sudo در ابتدای فرمانهامون استفاده میکنیم.
خوب روش انجام کار رو شروع میکنیم: (ما برای انجام اینکارها از یک دایرکتوری با نام test استفاده میکنیم.)
sudo chattr +i test/
OR
sudo chattr +i -V test/
با اجرای دستور بالا دایرکتوری test و فایلهای زیرشاخهی آن غیرقابل حذف و غیرقابل تغییر میشوند. بدین معنی که نام فایل مذکور رو به هیچ وجه نمیتوانید اصلاح کنید، نمیتوانید حذف یا تغییر دهید، نمیتوانید فایل زیرشاخه درون آن ایجاد کنید و حتی نمیتوانید یک پیوند به آن ایجاد کنید.
در صورتی که تمایل دارید دایرکتوریهای زیرشاخه رو هم غیرقابل حذف بکنید، از سوئیچ R میتونید استفاده کنید:
sudo chattr +i -R test/
الان فایل مذکور رو حتی با دسترسی روت هم نمیتونید پاک کنید و بهتون ارور زیر رو نمایش میده:
rm: cannot remove 'test/': Operation not permitted
برای بازگرداندن همه چی به حالت اول از سوئیچ -i استفاده کنید.
sudo chattr -i test/
OR
sudo chattr -i -V test/
منبع