اگر شما مدیر یک سیستم لینوکس هستید که چندین کاربر از آن استفاده میکنند، یکی از چالشهای شما احتمالاً مربوط به استفاده از فایلهای مشترک و ویرایش ناخواسته و حذف تصادفی آنها است. فایلها در لینوکس دارای ویژگیهایی مانند مجوزها، خواندن/نوشتن محتوای فایل و غیره هستند که امنیت و کنترل فایلها را فراهم میکنند.
لینوکس از ابزارهای قدرتمندی برای مدیریت بهینه فایلها پشتیبانی میکند که ابزار خط فرمان chattr یکی از آنهاست. chattr (تغییر ویژگی) یک ابزار خط فرمان چندمنظوره در لینوکس است که برای تغییر ویژگیهای فایل در سطح سیستم فایل استفاده میشود. ابزار خط فرمان chattr به کاربر امکان میدهد تا ویژگیهایی را برای فایلها در سطح سیستم فایل تنظیم کند که غیرقابل تغییر است؛ بنابراین، مدیران سیستم لینوکس میتوانند از دستور chattr برای جلوگیری از تغییر یا حذف فایلهای ضروری در سیستمهای فایل مانند ext2، ext3، ext4 یا XFS استفاده کنند و امنیت و کنترل بیشتری برای فایلهای مهم فراهم کنند.
در این راهنمای جامع، بیشترین بهره را از دستور chattr در لینوکس ببرید و یاد بگیرید که چگونه از آن برای غیرقابل تغییر کردن فایلها و امنتر کردن آنها استفاده کنید. پس تا انتهای این مقاله با ما همراه باشید.
فهرست مطالب
- چگونه ویژگیهای تنظیم شده برای یک فایل را بررسی کنیم؟
- چگونه از دستور chattr در لینوکس استفاده کنیم؟
- ویژگیهای رایج استفاده شده با دستور chattr
- سینتکس پایه دستور chattr
- عملگرها
- غیرقابل تغییر کردن یک فایل
- جلوگیری از ایجاد حساب کاربری با غیرقابل تغییر کردن فایل
- حذف ویژگی غیرقابل تغییر از فایل در دستور chattr
- تنظیم محدودیتها در دایرکتوری
- تنظیم ویژگی append-only برای فایل به منظور جلوگیری از حذف یا تغییر
- تنظیم ویژگی حذف امن برای فایل
- نتیجهگیری
چگونه ویژگیهای تنظیم شده برای یک فایل را بررسی کنیم؟
برای تنظیم ویژگیهای یک فایل و غیرقابل تغییر کردن ویژگیهای آن فایل در لینوکس، بهتر است ابتدا ویژگیهای از پیش تنظیم شده را برای فایلهای مبتنی بر سیستم فایل در دایرکتوری جاری بررسی کنید؛ برای این منظور از دستور زیر استفاده کنید:
lsattr
خروجی:
———————-e———– ./writer-doc.odt
———————-e———–./opera-app.c
———————-e———–./opera-app
———————-e———–./text-file.txt
———————-e———–./bash-script.sh
———————-e———–./image-file.jpg
خطوطی که حاوی توالیهای خطچین هستند، ویژگیهای تنظیم شده برای یک فایل را نشان میدهند. این خروجی به معنای تنظیم ویژگی e (extents) برای فایلهاست. این نشان میدهد که inodeهای سیستم فایل از extents (یا در صورت نیاز extents) برای اشاره به کل فایل روی دیسک سخت استفاده میکنند.
Inodeها برای یک فایل باید فقط ردیابی بلوکهای اشغال شده اول و آخر را انجام دهند اگر آن بلوکها یک توالی پیوسته را تشکیل دهند. اگر فایل به چندین بخش تقسیم شده باشد، inode باید ردیابی کند که کدام بلوک متعلق به کدام بخش است. Extents یک مجموعه از شماره بلوکهای متناظر با دیسک سخت هستند.
چگونه از دستور chattr در لینوکس استفاده کنیم؟
دستور chattr در لینوکس به شما امکان میدهد تا ویژگی فایلها و دایرکتوریها را تغییر دهید تا آنها غیرقابل تغییر شوند، و هیچ کس دیگری، حتی کاربر ریشه، نمیتواند فایلها را در سیستم فایل تغییر دهد. در ادامه، نحوه استفاده از دستور chattr برای غیرقابل تغییر کردن فایلها و دایرکتوریها را آموزش خواهیم داد.
ویژگیهای رایج استفاده شده با دستور chattr
ویژگیها و پرچمهای رایجی که دستور chattr میتواند برای تنظیم/لغو تنظیم فایلها از آنها استفاده کند، به شرح زیر است:
کنترل دسترسی ندارد (A): کنترل و دسترسی به یک فایل را غیرفعال میکند که برای مدیریت ویژگیهای دسترسی جداگانه استفاده میشود. همچنین، ویژگی A از بهروزرسانی رکورد زمان (زمان دسترسی) جلوگیری میکند.
فقط الحاقی (a): تنظیم a برای یک فایل از حذف و هرگونه تغییر جلوگیری میکند و فقط اجازه نوشتن در حالت الحاقی را میدهد. تنظیم این ویژگی معمولاً برای فایلهای لاگ استفاده میشود تا از دستکاری فایلهای لاگ جلوگیری شود و اطمینان حاصل شود که فقط الحاق داده به فایل مجاز است، نه تغییرات دیگر.
فشردهسازی (c): فایل را فشرده میکند.
بدون دامپ (d): فایلی که ویژگی d برای آن تنظیم شده است، در پشتیبانگیری گنجانده نمیشود.
بهروزرسانی همزمان دایرکتوری (D): تمام تغییرات در یک فایل را به طور همزمان در دیسک سخت بهروز میکند.
فرمت گسترش (e): این ویژگی سیستم فایل را به گونهای تنظیم میکند که از گسترشها برای مدیریت فایلهای بزرگ و ردیابی بلوکها در دیسک سخت استفاده میکند که نمیتواند با دستور chattr تغییر کند.
فشردهسازی (E): فایل را بر اساس یک الگوریتم خاص فشرده میکند.
ژورنالگذاری (j): ژورنالگذاری را برای یک فایل فعال یا غیرفعال میکند؛ یعنی اطلاعات یک فایل قبل از تغییر، در ژورنال ext3 بهروز میشود.
غیرقابل تغییر (i): ویژگیهای فایل مانند نام، حذف فایل، ایجاد لینک نمادین، قابلیت اجرا و قابلیت نوشتن را غیرقابل تغییر (immutable) میکند و فقط سوپر کاربر مجاز به لغو این ویژگی است.
حذف امن (S): با تنظیم این ویژگی برای یک فایل، هنگام حذف فایل، بلوکهای دادهای فایل با بایتهایی که حاوی صفر هستند رونویسی میشوند تا بازیابی فایلهای حذف شده در لینوکس دشوارتر شود.
حذف فایل با کپی از فایل (u): هنگامی که ویژگی u برای یک فایل تنظیم شده است، هنگام حذف یک فایل، یک کپی از فایل ایجاد میشود تا بازیابی دادهها زمانی که یک فایل به طور تصادفی حذف شده است، آسانتر شود.
سینتکس پایه دستور chattr
برای استفاده از ابزار خط فرمان chattr لینوکس، نیازی به نصب آن در سیستم لینوکس خود ندارید زیرا به طور پیشفرض در تمام توزیعهای لینوکس مانند اوبونتو، دبیان، سنتاواس و دیگران موجود است. تنها کاری که باید انجام دهید این است که از یک سیستم لینوکس یا یک VPS لینوکس استفاده کنید تا بتوانید از ویژگیهای ابزار خط فرمان chattr بهرهمند شوید. سینتکس اصلی دستور chattr برای تغییر ویژگیهای فایل در سطح سیستم فایل عبارت است از:
عملگرها
عملگرهایی که میتوانید همراه با دستور chattr برای گسترش کارکرد chattr به منظور پشتیبانی از اهداف مختلف استفاده کنید، به شرح زیر است:
+ (تنظیم): برای اعمال ویژگی مورد نظر استفاده میشود.
– (لغو تنظیم): برای حذف ویژگیها برای یک فایل استفاده میشود.
= (تنظیم فقط): ویژگی مشخص شده در دستور را برای یک فایل تنظیم میکند و ویژگیهای تنظیم شده برای فایلها را حفظ میکند.
با مثالهایی که در ادامه این مقاله ارائه خواهیم داد، یاد خواهید گرفت که چگونه از دستور chattr در اوبونتو و سایر توزیعها بهتر استفاده کنید.
غیرقابل تغییر کردن یک فایل
برای غیرقابل تغییر و غیرقابل حذف کردن یک فایل و اعمال محدودیتهای فقط خواندنی بر روی آن، باید دستور chattr را با پرچم “i” اجرا کنید. بنابراین، برای غیرقابل تغییر و غیرقابل حذف کردن یک فایل، از دستور زیر استفاده کنید:
sudo chattr +i نامفایل
با اجرای دستور قبلی، از حذف تصادفی یک فایل مهم جلوگیری خواهید کرد؛ علاوه بر این، به عنوان یک مدیر سیستم لینوکس، یک فایل را حتی برای کاربر ریشه غیرقابل تغییر خواهید کرد و با استفاده از دستور chattr، فایل حاوی اطلاعات مهم در برابر حذف تصادفی ایمن خواهد بود. بنابراین، اگر سعی کنید نام فایل را تغییر دهید، مجوزها را حذف کنید یا فایل را حذف کنید، پیغام “Operation not permitted” به شما میگوید که اجازه تغییر فایل را ندارید.
برای مثال:
sudo chattr +i testfile.txt
rm testfile.txt
rm: cannot remove 'testfile.txt' : Operation not permitted
توجه: برای غیرقابل تغییر کردن یک فایل در لینوکس، باید دارای امتیازات ریشه/سودو باشید.
برای اطمینان از اینکه ویژگی غیرقابل تغییر را برای فایل خود تنظیم کردهاید، میتوانید از دستور ‘lsattr’ استفاده کنید.
lsattr
خروجی نمونه:
—-i———– ./opera-app
—-i———– ./important_file.conf
دستور chattr به شما امکان میدهد تا گزینههای مختلفی را در ترکیب با یکدیگر برای تنظیم چندین ویژگی به یک بار برای فایل تنظیم کنید. برای مثال، اگر میخواهید علاوه بر غیرقابل تغییر کردن یک فایل، رکورد دسترسی را نیز غیرفعال کنید، دستور زیر را اجرا کنید:
sudo chattr +iA نامفایل
جلوگیری از ایجاد حساب کاربری با غیرقابل تغییر کردن فایل
یکی از رایجترین کاربردهای گزینه “+i” با دستور chattr، امنسازی فایلهای مهم مانند /etc/passwd و /etc/shadow در برابر حذف یا دستکاری ناخواسته است. علاوه بر این، با غیرقابل تغییر کردن فایلهای /etc/passwd و /etc/shadow، میتوانید از ایجاد حسابهای کاربری نیز جلوگیری کنید. دستور زیر را برای امنسازی فایلهای /etc/passwd و /etc/shadow اجرا کنید:
sudo chattr +i /etc/passwd
sudo chattr +i /etc/shadow
پس از اجرای دستور قبلی، اگر سعی کنید یک کاربر جدید ایجاد کنید، با خطای ‘cannot open /etc/passwd’ مواجه خواهید شد.
حذف ویژگی غیرقابل تغییر از فایل در دستور chattr
برای حذف ویژگی غیرقابل تغییر که قبلاً برای فایل تنظیم کرده بودید، باید از گزینه “-i” با دستور chattr استفاده کنید:
sudo chattr -i نامفایل
در نتیجه، شما با موفقیت ویژگی و مجوزهای فایل مورد نظر خود را بازنشانی (لغو ویژگی) میکنید و اکنون فایل مورد نظر شما قابل تغییر است.
تنظیم محدودیتها در دایرکتوری
علاوه بر فایل، میتوانید با استفاده از دستور chattr لینوکس، ویژگیهای یک دایرکتوری را همراه با لیستی از فایلها تغییر دهید و محدودیتهایی را برای کل دایرکتوری تنظیم کنید. برای این منظور، باید گزینه “-R” (بازگشتی) را در ترکیب با “+i” با دستور chattr اجرا کنید:
sudo chattr -R +i ./mydir/
بنابراین، با اجرای دستور قبلی، میتوانید ویژگیهای پوشه یا دایرکتوری را به گونهای تنظیم کنید که در برابر حذف و تغییرات ناخواسته ایمن باشند.
برای بازنشانی ویژگیهای تنظیم شده برای دایرکتوری، فقط دستور زیر را اجرا کنید:
sudo chattr -R -i ./mydir/
تنظیم ویژگی append-only برای فایل به منظور جلوگیری از حذف یا تغییر
فرض کنید برای افزایش امنیت برخی فایلهای حیاتی، مانند فایلهای لاگ، میخواهید محدودیتی را اعمال کنید که به کاربران فقط اجازه الحاق داده به فایل داده شود و اجازه دستکاری، ویرایش یا حذف محتوای فایل را نداشته باشند. در این صورت، میتوانید به توانایی دستور chattr اتکا کنید و دستور chattr را با پرچم “a” اجرا کنید:
sudo chattr +a نامفایل
بنابراین، با اجرای دستور قبلی، فایل به گونهای تنظیم میشود که فقط برای نوشتن باز است و عملیاتهای دیگر، مانند تغییر و ویرایش محتوای فایل و حذف فایل، غیرفعال میشوند.
برای حذف ویژگی append-only از فایل، از گزینه “-a” استفاده کنید:
sudo chattr -a نامفایل
تنظیم ویژگی حذف امن برای فایل
روشهای مختلفی برای حذف یک فایل در لینوکس وجود دارد که قبلاً در مورد آنها صحبت کردهایم، اما اگر میخواهید ویژگیهای یک فایل را به گونهای تنظیم کنید که پس از حذف آن، هیچ ردی از آن در حافظه باقی نماند و بازیابی اطلاعات آن فایل دشوار باشد، استفاده از دستور chattr با گزینه “+s” یکی از روشهای مؤثر است. برای این منظور، از سینتکس زیر استفاده کنید:
sudo chattr +s نامفایل
این دستور منجر به رونویسی بلوکهای دادهای فایل با صفر هنگام حذف فایل میشود، که باعث میشود بازیابی محتوای آن دشوار شود.
توجه: برخی از سیستمهای فایل، از جمله ext4، از ویژگی حذف امن پشتیبانی نمیکنند. ویژگی s (حذف امن) معمولاً برای فایلهای متنی تنظیم میشود.
نتیجهگیری
مدیران سیستمهای لینوکس چندکاربره باید بدانند چگونه از دستور chattr در لینوکس استفاده کنند تا از این ابزار قدرتمند و چندمنظوره برای تغییر ویژگیهای فایل در سطح سیستم فایل، بهبود امنیت فایلهای حیاتی و کمک به حفظ یکپارچگی سیستم استفاده کنند. در این مقاله، یاد گرفتید چگونه از دستور chattr برای غیرقابل تغییر کردن فایلها به منظور جلوگیری از حذف و دستکاری تصادفی استفاده کنید.
با استفاده از دستور chattr، میتوانید برخی ویژگیهای فایل را تغییر دهید و دسترسی و تغییر فایلها را نظارت کنید، همچنین با جلوگیری از تغییر یا حذف غیرمجاز فایلهای ضروری، امنیت پیشرفتهای را برای فایلها فراهم کنید. اکنون که با ابزار خط فرمان chattr آشنا شدهاید، میتوانید از توانایی این دستور برای مدیریت ویژگیهای فایل و دایرکتوری حیاتی، افزایش امنیت، یکپارچگی دادهها و کارایی سیستم فایل در سیستمعاملهای مبتنی بر لینوکس بهرهمند شوید.
از اینکه این مقاله را برای مطالعه انتخاب کردید، سپاسگزاریم.
زویپ یکی از شرکتهای پیشرو در ارائه سرورهای مجازی است که با سالها تجربه در این زمینه، خدمات باکیفیتی را به مشتریان خود ارائه میدهد. در سایت زویپ، میتوانید انواع سرورهای مجازی با مشخصات متنوع را مشاهده و بر اساس نیاز خود انتخاب کنید. همچنین تیم پشتیبانی حرفهای زویپ همواره آماده کمک به شما در هر مرحله از راهاندازی و مدیریت سرور هستند. پس اگر به دنبال یک تجربه خرید آسوده و اطمینان از کیفیت سرور خود هستید، حتماً به سایت زویپ سر بزنید و از خدمات باکیفیت این شرکت بهرهمند شوید.