دستور Chattr ابزار خط فرمان Linux است که برای Set/ Unset کردن ویژگیهای خاص یک فایل در سیستم لینوکس استفاده میشود تا حذف یا تغییر تصادفی فایلها و پوشههای مهم را تضمین کند، حتی اگر به عنوان کاربر اصلی وارد شده باشید. در Linux Native Filesystems، یعنی ext2، ext3، ext4، btrfs و… از flagها پشتیبانی میکند ولی Non-Native FS پشتیبانی نمی شود.
هنگامی که ویژگی ها با دستور Chattr تنظیم می شوند، نمی توان فایل یا پوشه را حذف کرد یا تغییر داد، حتی اگر کسی مجوز داشته باشد. این آموزش برای تنظیم ویژگیها در فایل های سیستمی مانند فایلهای Passwd و Shadow که اطلاعات کاربر در آنها وجود دارد بسیار مفید است. همراه آذرسیس باشید و از آموزش های پیشرفته دستور Chattr لذت ببرید.
فهرست مطالب
نکات مهم برای تغییرناپذیر کردن فایل ها در لینوکس
نکات زیر را در 5 دستور Chattr برای Immutable یا تغییرناپذیر کردن فایل های مهم در لینوکس، باید در نظر بگیرید:
1- Syntax of Chattr در دستور Chattr
chattr [operator] [flags] [filename]
2- ویژگی ها و Flag های در دستور Chattr
در زیر لیستی از ویژگیهای رایج و Flag های مرتبط ارائه شده است که می توان با استفاده از دستور Chattr Set/ Unset کرد.
- اگر به فایلی با مجموعه ویژگی “A” دسترسی پیدا شود، رکورد زمان آن به روز نمی شود.
- اگر فایلی با مجموعه ویژگی “S” اصلاح شود، تغییرات بهطور همزمان روی دیسک بهروزرسانی میشوند.
- فایلی که با ویژگی “a” تنظیم شده است، فقط می تواند در حالت ضمیمه برای نوشتن باز شود.
- فایلی که با ویژگی “i” تنظیم شده است، نمی توان آن را تغییر داد (غیرقابل تغییر). به این معنی که بدون تغییر نام و بدون ایجاد پیوند نمادین، بدون اجرا، بدون قابلیت نوشتن، فقط Superuser می تواند ویژگی را تنظیم کند.
- فایلی که با ویژگی “j” تنظیم شده است، تمام اطلاعات آن قبل از به روز رسانی به خود فایل در ext3 Journal به روز می شود.
- فایلی که با ویژگی “t” تنظیم شده است، Tail-Merging نمی شود.
- فایلی با ویژگی “d”، دیگر کاندیدای پشتیبان گیری در هنگام اجرای فرآیند Dump نخواهد بود.
- هنگامی که یک فایل دارای ویژگی “u” حذف می شود، داده های آن ذخیره می شود. این مورد به کاربر امکان می دهد تا درخواست حذف آن را بکند.
3- اپراتور دستور Chattr
- + : Attribute را به ویژگی موجود فایل ها اضافه می کند.
- – :Attribute را از ویژگی موجود فایل ها حذف می کند.
- = : ویژگی های موجودی که فایل ها دارند را حفظ می کند.
در اینجا، برخی از نمونههای دستور Chattr را برای Set/ Unset کردن ویژگیهای یک فایل و پوشهها آماده کرده ایم.
5 دستور Chattr برای Immutable یا تغییرناپذیر کردن فایل های مهم در لینوکس
5 دستور Chattr برای Immutable یا تغییرناپذیر کردن فایل های مهم در لینوکس به شکل زیر است، با اندکی توجه می توانید به مفاهیم دست یابید. اما در صوررت وجود هرگونه سوال کارشناسان ما به صورت 24 ساعته در اختیار شما عزیزان می باشند:
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 Bt +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 یا تغییر ناپذیر کردن فایل های مهم در لینوکس، برای شما عزیزان مفید واقع شود. برای کسب اطلاعات بیشتر در جهت پیشبرد اهداف بیزینس تان در فضای آنلاین، نگاهی به تعرفه های مشخص شده در زمینه ارتقا وب سایت های خود در وب سایت رسمی آذرسیس بیندازید و از داشتن یک مرجع راهنما کامل در بروز هرگونه سوالات و ایرادات فنی مطمئن باشید. برای دریافت راهنمایی رایگان می توانید یک تیکت رایگان در صفحه اصلی ما ایجاد کرده و منتظر دریافت فوری پاسخ برای آن بمانید. به خاطر داشته باشید که ما همواره در تیم شما هستیم!
مینو جعفری
یعنی تو همه ی زمینه ها مطلب دارید مرسی واقعا
طناز سلامی
خیلی ممنون خوب بود
هستی عابد
دستت تون درد نکنه ممنون
غزال داور
آذرسیس ترکونده تو هر زمینه