در این آموزش 5 دستور chattr برای تغییر ناپذیر کردن فایل های مهم در لینوکس را بررسی خواهیم کرد! chattr ابزار خط فرمان لینوکس است که برای set/unset کردن ویژگیهای خاص یک فایل در سیستم لینوکس استفاده میشود تا حذف یا تغییر تصادفی فایلها و پوشههای مهم را تضمین کند، حتی اگر به عنوان کاربر اصلی وارد شده باشید.
در Linux native filesystems، یعنی ext2، ext3، ext4، btrfs و… از flagها پشتیبانی میکند، ولی non-native FS پشتیبانی نمی شود. هنگامی که ویژگی ها با دستور chattr تنظیم می شوند، نمی توان فایل یا پوشه را حذف کرد یا تغییر داد، حتی اگر کسی مجوز داشته باشد.
این آموزش برای تنظیم ویژگیها در فایلهای سیستمی مانند فایلهای passwd و shadow که اطلاعات کاربر در آنها وجود دارد بسیار مفید است.
مقاله مفید: گواهی SSL چیست و چرا استفاده از آن اهمیت دارد!
فهرست مطالب
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 تنظیم شدهاند. نتایج را ببینید، در حال حاضر هیچ ویژگی تنظیم نشده است.
[[email protected] 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’ تأیید کنید.
[[email protected] admin]# lsattr ----i----------- https://azarsys.com/wp-content/themes/azarsys/clientdemo ----i----------- https://azarsys.com/wp-content/themes/azarsys/clientimportant_file.conf
[[email protected] admin]# mv demo/ demo_alter mv: cannot move âdemo/â to âdemo_alterâ: Operation not permitted
[[email protected] admin]# chmod 755 important_file.conf chmod: changing permissions of âimportant_file.confâ: Operation not permitted
2. نحوه حذف ویژگی در File ها
در مثال بالا، نحوه تنظیم ویژگی برای ایمن سازی و جلوگیری از حذف تصادفی فایل ها را دیدیم، در این مثال، نحوه بازنشانی مجوزها (unset attribute) را خواهیم دید و اجازه می دهد تا یک فایل را تغییر پذیر کنید یا با استفاده از i flag- تغییر دهید.
[[email protected] admin]# chattr -i demo/ important_file.conf
پس از بازنشانی مجوزها، وضعیت تغییرناپذیر فایل ها را با استفاده از دستور lsattr بررسی کنید.
[[email protected] admin]# lsattr ---------------- https://azarsys.com/wp-content/themes/azarsys/clientdemo ---------------- https://azarsys.com/wp-content/themes/azarsys/clientimportant_file.conf
در نتایج بالا مشاهده می کنید که flag “-i” حذف شده است، به این معنی که می توانید با خیال راحت تمام فایل و پوشه موجود در پوشه admin را حذف کنید.
[[email protected] admin]# rm -rf * [[email protected] 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» به صورت زیر استفاده کنید.
[[email protected] admin]# chattr +a example.txt [ro[email protected] admin]# lsattr example.txt -----a---------- example.txt
پس از تنظیم append mode، فایل را می توانید فقط برای نوشتن داده ها در حالت پیوست باز کنید. شما می توانید append attribute را به صورت زیر تنظیم کنید.
[[email protected] admin]# chattr -a example.txt
اکنون سعی کنید محتوای موجود را در فایل example.txt جایگزین کنید، پس از این کار با خطای “operation not permitted” مواجه خواهید شد.
[[email protected] admin]# echo "replace contain on file." > example.txt -bash: example.txt: Operation not permitted
اکنون سعی کنید محتوای جدید را روی فایل example.txt اضافه کنید و آن را تأیید کنید.
[[email protected] admin]# echo "replace contain on file." >> example.txt
[[email protected] admin]# cat example.txt Here is the example to test 'a' attribute mean append only. replace contain on file.
5. نحوه ایمن سازی دایرکتوری ها
برای ایمن سازی کل دایرکتوری و فایل های آن، از سوئیچ flag -R (به صورت بازگشتی) با +i به همراه مسیر کامل پوشه استفاده کنید.
[[email protected] admin]# chattr -R +i myfolder
پس از تنظیم recursively attribute، سعی کنید پوشه و فایل های آن را حذف کنید.
[[email protected] admin]# rm -rf myfolder/ rm: cannot remove 'myfolder/': Operation not permitted
برای unset permission، از همان حالت سوئیچ R- با flag -i به همراه مسیر کامل پوشه استفاده کنید.
[[email protected] admin]# chattr -R -i myfolder
مقاله مفید: سرور مجازی ویندوز چیست و چرا محبوب است!
نتیجه گیری
در این آموزش 5 دستور chattr برای IMMUTABLE یا تغییر ناپذیر کردن فایل های مهم در لینوکس را بررسی کردیم. امیدوارم این مقاله برایتان مفید بوده باشد. نظرات خود را از طریق فرم زیر با ما به اشتراک بگذارید.
آذرسیس ترکونده تو هر زمینه
دستت تون درد نکنه ممنون
خیلی ممنون خوب بود
یعنی تو همه ی زمینه ها مطلب دارید مرسی واقعا