| CHATTR(1) | دستورهای کاربری | CHATTR(1) |
نام (NAME)
chattr - تغییر خصوصیات و صفات فایلها در سیستمفایل لینوکس
خلاصه دستور (SYNOPSIS)
chattr [ -RVf ] [ -v نسخه ] [ -p پروژه ] [ عملگر[صفات] ] فایل...
توضیحات (DESCRIPTION)
دستور chattr صفات و خصوصیات سطح سیستمفایل (مانند a برای الحاقتنها، i برای تغییرناپذیر و...) را در سیستمفایلهای ext2/ext3/ext4 تغییر میدهد.
قالب نمادین حالت (mode) به صورت +-=[aAcCdDeFijmPsStTux] است.
عملگر '+' باعث اضافه شدن صفات انتخابشده به صفات موجود فایلها میشود؛ '-' باعث حذف آنها میشود؛ و '=' باعث میشود که فایلها تنها دارای صفات مشخصشده باشند.
حروف 'aAcCdDeFijmPsStTux' صفات جدید را برای فایلها انتخاب میکنند: فقط الحاق (a), عدم بهروزرسانی زمان دسترسی (A), فشردهشده (c), عدم کپیهنگامنوشتن (C), بدون پشتیبانگیری دامپ (d), بهروزرسانی همگام دایرکتوری (D), قالب اکستنت (e), جستجوی بدون حساسیت به حروف در دایرکتوری (F), تغییرناپذیر (i), ژورنالنویسی دادهها (j), عدم فشردهسازی (m), سلسلهمراتب پروژه (P), حذف ایمن (s), بهروزرسانی همگام (S), عدم ادغام انتهای فایل (t), بالای سلسلهمراتب دایرکتوری (T), غیرقابلحذف (u), و دسترسی مستقیم برای فایلها (x).
صفات زیر فقطخواندنی هستند و ممکن است توسط lsattr(1) فهرست شوند، اما توسط chattr قابل تغییر نیستند: رمزگذاریشده (E), دایرکتوری نمایهگذاریشده (I), دادههای درونخطی (N), و اعتبارسنجی ورایتی (V).
تمامی فلگها توسط همه سیستمفایلها پشتیبانی یا استفاده نمیشوند؛ برای جزئیات خاص هر سیستمفایل به صفحات راهنمای اختصاصی مانند btrfs(5), ext4(5), mkfs.f2fs(8) و xfs(5) مراجعه کنید.
گزینهها (OPTIONS)
صفات (ATTRIBUTES)
- a
- فایلی با صفت a فقط میتواند در حالت الحاق (append) برای نوشتن باز شود. تنها کاربر ارشد (مدیر سیستم) یا فرآیندی با مجوز CAP_LINUX_IMMUTABLE میتواند این صفت را تنظیم یا پاک کند.
- A
- هنگامی که به فایلی با صفت A دسترسی پیدا میشود، مقدار atime (زمان دسترسی) آن تغییر نمیکند. این امر از حجم مشخصی از عملیات ورودی/خروجی دیسک در لپتاپها جلوگیری میکند.
- c
- فایلی با صفت c بهطور خودکار روی دیسک توسط هسته فشرده میشود. خواندن از این فایل دادههای غیرفشرده را بازمیگرداند. نوشتن در این فایل، دادهها را قبل از ذخیره روی دیسک فشرده میکند. توجه: لطفاً بخش اشکالات و محدودیتها را در انتهای این سند مطالعه کنید. (توجه: برای btrfs، اگر فلگ c تنظیم شده باشد، فلگ C نمیتواند تنظیم شود. همچنین با گزینه مانت nodatasum در btrfs تداخل دارد).
- C
- فایلی با صفت C مشمول بهروزرسانیهای کپیهنگامنوشتن (Copy-on-Write) نخواهد شد. این فلگ فقط در سیستمفایلهایی که کپیهنگامنوشتن را انجام میدهند پشتیبانی میشود. (توجه: برای btrfs، فلگ C باید روی فایلهای جدید یا خالی تنظیم شود. اگر روی فایلی تنظیم شود که قبلاً دارای بلوکهای داده است، مشخص نیست که چه زمانی بلوکهای تخصیصیافته به فایل کاملاً پایدار میشوند. اگر فلگ C روی یک دایرکتوری تنظیم شود، اثری روی خود دایرکتوری ندارد، اما فایلهای جدید ایجادشده در آن دایرکتوری صفت No_COW را خواهند داشت. اگر فلگ C تنظیم شده باشد، فلگ c نمیتواند تنظیم شود).
- d
- فایلی با صفت d هنگام اجرای برنامه dump(8) نامزد پشتیبانگیری نخواهد بود.
- D
- هنگامی که دایرکتوری با صفت D تغییر میکند، تغییرات بهصورت همگام (synchronously) روی دیسک نوشته میشوند؛ این معادل اعمال گزینه مانت dirsync به زیرمجموعهای از فایلها است.
- e
- صفت e نشان میدهد که فایل برای نگاشت بلوکها روی دیسک از اکستنتها (extents) استفاده میکند. این صفت را نمیتوان با استفاده از chattr(1) حذف کرد.
- E
- فایل، دایرکتوری یا پیوند نمادین با صفت E توسط سیستمفایل رمزگذاری شده است. این صفت نمیتواند با استفاده از chattr(1) تنظیم یا پاک شود، هرچند توسط lsattr(1) قابل نمایش است.
- F
- دایرکتوری با صفت F نشان میدهد که تمام جستجوهای مسیر داخل آن دایرکتوری بدون حساسیت به حروف کوچک و بزرگ (case-insensitive) انجام میشوند. این صفت فقط در دایرکتوریهای خالی و در سیستمفایلهایی که ویژگی casefold در آنها فعال است قابل تغییر میباشد.
- i
- فایلی با صفت i نمیتواند تغییر یابد: نمیتوان آن را حذف کرد یا تغییر نام داد، هیچ پیوندی نمیتوان به این فایل ایجاد کرد، بیشتر متادادههای فایل قابل تغییر نیستند، و فایل نمیتواند در حالت نوشتن باز شود. تنها کاربر ارشد (مدیر سیستم) یا فرآیندی با مجوز CAP_LINUX_IMMUTABLE میتواند این صفت را تنظیم یا پاک کند.
- I
- صفت I توسط کد htree استفاده میشود تا نشان دهد یک دایرکتوری با استفاده از درختهای درهمسازیشده (hashed trees) نمایهگذاری شده است. این صفت نمیتواند با استفاده از chattr(1) تنظیم یا پاک شود، هرچند توسط lsattr(1) قابل نمایش است.
- j
- فایلی با صفت j اگر سیستمفایل با گزینههای "data=ordered" یا "data=writeback" مانت شده باشد و سیستمفایل دارای ژورنال باشد، تمامی دادههای آن قبل از نوشته شدن در خود فایل، در ژورنال ext3 یا ext4 نوشته میشوند. هنگامی که سیستمفایل با گزینه "data=journal" مانت شده باشد، تمامی دادههای فایل قبلاً در ژورنال ثبت شدهاند و این صفت تأثیری ندارد. تنها کاربر ارشد یا فرآیندی با مجوز CAP_SYS_RESOURCE میتواند این صفت را تنظیم یا پاک کند.
- m
- فایلی با صفت m در سیستمفایلهایی که از فشردهسازی برای هر فایل پشتیبانی میکنند، از فشردهسازی مستثنی میشود.
- N
- فایلی با صفت N نشان میدهد که دادههای فایل بهصورت درونخطی (inline) در خود inode ذخیره شدهاند. این صفت نمیتواند با استفاده از chattr(1) تنظیم یا پاک شود، هرچند توسط lsattr(1) قابل نمایش است.
- P
- دایرکتوری با صفت P یک ساختار سلسلهمراتبی را برای شناسه پروژه (project ID) اعمال میکند. این بدان معناست که فایلها و دایرکتوریهای ایجادشده در این دایرکتوری، شناسه پروژه آن دایرکتوری را به ارث میبرند؛ عملیات تغییر نام مقید میشود به طوری که وقتی یک فایل یا دایرکتوری به دایرکتوری دیگری منتقل میشود، شناسههای پروژه آنها باید یکسان باشند. علاوه بر این، پیوند سخت به فایل تنها زمانی قابل ایجاد است که شناسه پروژه فایل با دایرکتوری مقصد مطابقت داشته باشد.
- s
- هنگامی که فایلی با صفت s حذف میشود، بلوکهای آن با صفر بازنویسی شده و دوباره روی دیسک نوشته میشوند. توجه: لطفاً بخش اشکالات و محدودیتها را در انتهای این سند مطالعه فرمایید.
- S
- هنگامی که فایلی با صفت S تغییر داده میشود، تغییرات بهصورت همگام روی دیسک نوشته میشوند؛ این معادل اعمال گزینه مانت sync به زیرمجموعهای از فایلها است.
- t
- فایلی با صفت t تکه بلوک ناقص در انتهای فایل با سایر فایلها ادغام نخواهد شد (برای سیستمفایلهایی که از ادغام انتهای فایل یا tail-merging پشتیبانی میکنند). این امر برای برنامههایی مانند LILO که مستقیماً از سیستمفایل میخوانند و فایلهای ادغامشده با tail-merging را تشخیص نمیدهند لازم است. توجه: تا زمان نگارش این متن، سیستمفایلهای ext2، ext3 و ext4 از tail-merging پشتیبانی نمیکنند.
- T
- دایرکتوری با صفت T برای اهداف تخصیصدهنده بلوک Orlov به عنوان رأس سلسلهمراتب دایرکتوریها در نظر گرفته میشود. این یک راهنمایی برای تخصیصدهنده بلوک ext3 و ext4 است که زیردایرکتوریهای این دایرکتوری ارتباطی با یکدیگر ندارند و بنابراین جهت تخصیص باید از یکدیگر دور نگه داشته شوند. به عنوان مثال، ایده بسیار خوبی است که صفت T روی دایرکتوری /home تنظیم شود تا /home/john و /home/mary در گروههای بلوکی مجزا قرار گیرند. برای دایرکتوریهایی که این صفت روی آنها تنظیم نشده است، تخصیصدهنده بلوک Orlov تلاش میکند زیردایرکتوریها را تا حد امکان در کنار یکدیگر گروهبندی کند.
- u
- هنگامی که فایلی با صفت u حذف میشود، محتوای آن ذخیره میگردد. این به کاربر اجازه میدهد درخواست بازگردانی (undeletion) فایل را داشته باشد. توجه: لطفاً بخش اشکالات و محدودیتها را در انتهای این سند مطالعه فرمایید.
- x
- فایلی با صفت x در صورتی که هسته از DAX پشتیبانی کند، استفاده از حالت دسترسی مستقیم (dax) را درخواست میکند. این را میتوان با گزینه مانت 'dax=never' لغو کرد. برای اطلاعات بیشتر، مستندات هسته برای dax را ببینید: https://www.kernel.org/doc/html/latest/filesystems/dax.html
- اگر این صفت روی یک دایرکتوری موجود تنظیم شود، توسط تمام فایلها و زیردایرکتوریهایی که بعداً در این دایرکتوری ایجاد میشوند به ارث برده خواهد شد. اگر دایرکتوری از قبل شامل فایلها و زیردایرکتوریهایی باشد، تغییر این صفت در دایرکتوری والد باعث تغییر صفات فایلها و زیردایرکتوریهای موجود نخواهد شد.
- V
- فایلی با صفت V دارای fs-verity فعال است. امکان نوشتن روی آن وجود ندارد، و سیستمفایل بهطور خودکار تمامی دادههای خواندهشده از آن را در برابر یک هش رمزنگاری که کل محتوای فایل را پوشش میدهد (مثلاً از طریق درخت مرکل - Merkle tree) اعتبارسنجی میکند. این امر احراز هویت کارآمد فایل را ممکن میسازد. این صفت را نمیتوان با استفاده از chattr(1) تنظیم یا پاک کرد، هرچند توسط lsattr(1) قابل نمایش است.
نویسنده (AUTHOR)
دستور chattr توسط Remy Card <Remy.Card@linux.org> نوشته شده است. در حال حاضر توسط Theodore Ts'o <tytso@alum.mit.edu> نگهداری میشود.
اشکالات و محدودیتها (BUGS AND LIMITATIONS)
صفات c, s و u توسط سیستمفایلهای ext2، ext3 و ext4 همانطور که در هستههای اصلی کنونی لینوکس پیادهسازی شدهاند رعایت نمیشوند. تنظیم صفات a و i تأثیری بر توانایی نوشتن روی توصیفکنندههای فایل موجود نخواهد داشت.
گزینه j تنها برای سیستمفایلهای ext3 و ext4 کاربرد دارد.
گزینه D تنها در هسته لینوکس 2.5.19 و بالاتر کارایی دارد.
در دسترس بودن (AVAILABILITY)
دستور chattr بخشی از بسته e2fsprogs است و از نشانی http://e2fsprogs.sourceforge.net قابل دریافت است.
همچنین ببینید (SEE ALSO)
| مه ۲۰۲۵ | e2fsprogs |