آذرسیس

5 دستور chattr برای Immutable یا تغییرناپذیر کردن فایل های مهم در لینوکس
5/5 - (1 امتیاز)

در این آموزش 5 دستور chattr برای تغییر ناپذیر کردن فایل های مهم در لینوکس را بررسی خواهیم کرد! chattr ابزار خط فرمان لینوکس است که برای set/unset کردن ویژگی‌های خاص یک فایل در سیستم لینوکس استفاده می‌شود تا حذف یا تغییر تصادفی فایل‌ها و پوشه‌های مهم را تضمین کند، حتی اگر به عنوان کاربر اصلی وارد شده باشید.

در Linux native filesystems، یعنی ext2، ext3، ext4، btrfs و… از flagها پشتیبانی می‌کند، ولی non-native FS پشتیبانی نمی شود. هنگامی که ویژگی ها با دستور chattr تنظیم می شوند، نمی توان فایل یا پوشه را حذف کرد یا تغییر داد، حتی اگر کسی مجوز داشته باشد.

این آموزش برای تنظیم ویژگی‌ها در فایل‌های سیستمی مانند فایل‌های passwd و shadow که اطلاعات کاربر در آن‌ها وجود دارد بسیار مفید است.

مقاله مفید: گواهی SSL چیست و چرا استفاده از آن اهمیت دارد!

5 دستور chattr برای IMMUTABLE (غیر قابل تغییر) فایل های مهم در لینوکس

5 دستور chattr برای تغییرناپذیر کردن فایل های مهم در لینوکس

Syntax of chattr

chattr [operator] [flags] [filename]

ویژگی ها و flag ها

در زیر لیستی از ویژگی‌های رایج و flag های مرتبط ارائه شده است که می توان با استفاده از دستور chattr set/unset کرد.

  • اگر به فایلی با مجموعه ویژگی “A” دسترسی پیدا شود، رکورد زمان آن به روز نمی شود.
  • اگر فایلی با مجموعه ویژگی “S” اصلاح شود، تغییرات به‌طور همزمان روی دیسک به‌روزرسانی می‌شوند.
  • فایلی که با ویژگی “a” تنظیم شده است، فقط می تواند در حالت ضمیمه برای نوشتن باز شود.
  • فایلی که با ویژگی “i” تنظیم شده است، نمی توان آن را تغییر داد (غیرقابل تغییر). به این معنی که بدون تغییر نام و بدون ایجاد پیوند نمادین، بدون اجرا، بدون قابلیت نوشتن، فقط superuser می تواند ویژگی را تنظیم کند.
  • فایلی که با ویژگی “j” تنظیم شده است، تمام اطلاعات آن قبل از به روز رسانی به خود فایل در ext3 journal به روز می شود.
  • فایلی که با ویژگی “t” تنظیم شده است، tail-merging نمی شود.
  • فایلی با ویژگی “d”، دیگر کاندیدای پشتیبان گیری در هنگام اجرای فرآیند dump نخواهد بود.
  • هنگامی که یک فایل دارای ویژگی “u” حذف می شود، داده های آن ذخیره می شود. این مورد به کاربر امکان می دهد تا درخواست حذف آن را بکند.

اپراتور

  • + : attribute را به ویژگی موجود فایل ها اضافه می کند.
  • – :attribute را از ویژگی موجود فایل ها حذف می کند.
  • = : ویژگی های موجودی که فایل ها دارند را حفظ می کند.

در اینجا، برخی از نمونه‌های دستور chattr را برای set/unset کردن ویژگی‌های یک فایل و پوشه‌ها آماده کرده ایم.

1. نحوه اضافه کردن ویژگی ها به فایل ها برای ایمن شدن از حذف

برای این منظور، ما به ترتیب از folder demo و file important_file.conf استفاده کرده‌ایم. قبل از تنظیم ویژگی‌ها، مطمئن شوید که فایل‌های موجود دارای ویژگی‌هایی هستند که با استفاده از دستور ls -l تنظیم شده‌اند. نتایج را ببینید، در حال حاضر هیچ ویژگی تنظیم نشده است.

[root@admin admin]# ls -l
total 0
drwxr-xr-x. 2 root root 6 Aug 31 18:02 demo
-rwxrwxrwx. 1 root root 0 Aug 31 17:42 important_file.conf

برای تنظیم ویژگی ها، از علامت + و برای از تنظیم خارج کردن از علامت – با دستور chattr استفاده کنید. بنابراین، immutable bit را روی فایل‌ها با flags +i تنظیم کنید تا از حذف فایل جلوگیری شود، حتی یک کاربر root اجازه حذف آن را ندارد.

نکته: immutable bit +i را فقط می‌توان توسط کاربر superuser (یعنی root) تنظیم کرد یا کاربری با امتیازات sudo می‌تواند تنظیم کند.

پس از تنظیم immutable bit ، ویژگی را با دستور ‘lsattr’ تأیید کنید.

[root@admin admin]# lsattr
----i----------- ./demo
----i----------- ./important_file.conf
[root@admin admin]# mv demo/ demo_alter
mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[root@admin admin]# chmod 755 important_file.conf
chmod: changing permissions of âimportant_file.confâ: Operation not permitted

2. نحوه حذف ویژگی در File ها

در مثال بالا، نحوه تنظیم ویژگی برای ایمن سازی و جلوگیری از حذف تصادفی فایل ها را دیدیم، در این مثال، نحوه بازنشانی مجوزها (unset attribute) را خواهیم دید و اجازه می دهد تا یک فایل را تغییر پذیر کنید یا با استفاده از i flag- تغییر دهید.

[root@admin admin]# chattr -i demo/ important_file.conf

پس از بازنشانی مجوزها، وضعیت تغییرناپذیر فایل ها را با استفاده از دستور lsattr بررسی کنید.

[root@admin admin]# lsattr
---------------- ./demo
---------------- ./important_file.conf

در نتایج بالا مشاهده می کنید که flag “-i” حذف شده است، به این معنی که می توانید با خیال راحت تمام فایل و پوشه موجود در پوشه admin را حذف کنید.

[root@admin admin]# rm -rf *
[root@admin admin]# ls -l
total 0

3. نحوه ایمن کردن فایل های /etc/passwd  و /etc/shadow

تنظیم ویژگی immutable روی فایل‌های /etc/passwd یا /etc/shadow، آنها را از حذف یا دستکاری تصادفی ایمن می‌کند و همچنین ایجاد حساب کاربری را غیرفعال می‌کند.

[root@ admin admin]# chattr +i /etc/passwd
[root@ admin admin]# chattr +i /etc/shadow

اکنون اگر یک کاربر جدید بسازید، با پیغام خطایی مواجه می شوید که می گوید “cannot open /etc/passwd”.

[root@ admin admin]# useradd admin
useradd: cannot open /etc/passwd

به این ترتیب می‌توانید مجوزهای تغییرناپذیر را روی فایل‌های مهم یا فایل‌های پیکربندی سیستم خود تنظیم کنید تا از حذف آن جلوگیری کنید.

4. اضافه کردن داده ها بدون تغییر داده های موجود در یک فایل

فرض کنید، فقط می‌خواهید به همه اجازه دهید داده‌ها را بدون تغییر یا اصلاح داده‌های وارد شده به فایل اضافه کنند، می‌توانید از ویژگی «a» به صورت زیر استفاده کنید.

[root@admin admin]# chattr +a example.txt
[root@admin admin]# lsattr example.txt
-----a---------- example.txt

پس از تنظیم append mode، فایل را می توانید فقط برای نوشتن داده ها در حالت پیوست باز کنید. شما می توانید append attribute را به صورت زیر تنظیم کنید.

[root@admin admin]# chattr -a example.txt

اکنون سعی کنید محتوای موجود را در فایل example.txt جایگزین کنید، پس از این کار با خطای “operation not permitted” مواجه خواهید شد.

[root@admin admin]# echo "replace contain on file." > example.txt
-bash: example.txt: Operation not permitted

اکنون سعی کنید محتوای جدید را روی فایل example.txt اضافه کنید و آن را تأیید کنید.

[root@admin admin]# echo "replace contain on file." >> example.txt
[root@admin admin]# cat example.txt
Here is the example to test 'a' attribute mean append only.
replace contain on file.

5. نحوه ایمن سازی دایرکتوری ها

برای ایمن سازی کل دایرکتوری و فایل های آن، از سوئیچ flag -R (به صورت بازگشتی) با +i به همراه مسیر کامل پوشه استفاده کنید.

[root@admin admin]# chattr -R +i myfolder

پس از تنظیم recursively attribute، سعی کنید پوشه و فایل های آن را حذف کنید.

[root@admin admin]# rm -rf myfolder/
rm: cannot remove 'myfolder/': Operation not permitted

برای unset permission، از همان حالت سوئیچ R- با flag -i به همراه مسیر کامل پوشه استفاده کنید.

[root@admin admin]# chattr -R -i myfolder

مقاله مفید: سرور مجازی ویندوز چیست و چرا محبوب است!

نتیجه گیری

در این آموزش 5 دستور chattr برای IMMUTABLE یا تغییر ناپذیر کردن فایل های مهم در لینوکس را بررسی کردیم. امیدوارم این مقاله برایتان مفید بوده باشد. نظرات خود را از طریق فرم زیر با ما به اشتراک بگذارید.

Share this Post

4 Comments

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *