| mkcomposefs(1) | دستورات کاربر | mkcomposefs(1) |
نام (NAME)
mkcomposefs - ایجاد تصویر فایلسیستم composefs
خلاصه دستور (SYNOPSIS)
mkcomposefs SOURCE IMAGE
توضیحات (DESCRIPTION)
پروژه composefs از فایل تصویر EROFS برای ذخیره متاداده و یک یا چند پوشه مجزا شامل دادههای پشتیبان با آدرسدهی محتوا (content-addressed) برای فایلهای معمولی استفاده میکند.
دستور mkcomposefs یک "تصویر composefs" قابل اتصال (قابل mount) را با استفاده از منبع به عنوان ورودی میسازد. همچنین میتواند دایرکتوری ذخیرهساز پشتیبان را ایجاد کند. معمولاً منبع یک پوشه است، اما با گزینه --from-file میتواند یک فایل نیز باشد.
گزینهها (OPTIONS)
آرگومان ورودی SOURCEDIR باید یک پوشه باشد و کل محتویات آن به صورت بازگشتی خوانده خواهد شد. آرگومان ارائه شده IMAGE یک تصویر composefs قابل اتصال خواهد بود.
دستور mkcomposefs گزینههای زیر را میپذیرد:
- --digest-store=PATH
- این مسیر
تبدیل به یک
"مخزن
اشیاء" (object store)
برای composefs
میشود.
فایلهای
معمولی
بزرگتر از
۶۴ بایت در
SOURCEDIR بر اساس
شناسهٔ
چکیدهٔ fsverity
آنها درون
این پوشه
مقصد کپی
میشوند (در
صورت امکان
با reflink).
فایلهای
کوچک در
متادیتای
تصویر به
صورت
درونخطی
قرار
میگیرند.
در صورت
امکان،
فایلهای
اضافهشده
قابلیت fs-verity
فعال
خواهند
داشت.
این پوشه باید هنگام سوار کردن تصویر، به گزینه basedir ارسال شود.
- --print-digest
- چاپ چکیدهٔ fsverity فایل متاداده composefs.
- --print-digest-only
- چاپ چکیدهٔ fsverity فایل متاداده composefs، اما بدون نوشتن فایل تصویر. در صورت ارسال این گزینه، آرگومان IMAGE باید حذف شود.
- --use-epoch
- استفاده از زمان صفر (مبدأ زمان یونیکس - unix epoch) به عنوان زمان تغییر تمام فایلها.
- --skip-devices
- عدم افزودن گرههای دستگاه (device nodes) به تصویر.
- --skip-xattrs
- عدم افزودن صفتهای گسترده (xattrs) به فایلها در تصویر.
- --user-xattrs
- فقط افزودن صفتهای گسترده با پیشوند "user." به فایلها در تصویر.
- --from-file
- منبع یک فایل در قالب composefs-dump(5) است. اگر فایل مشخصشده "-" باشد، دادهها از stdin خوانده میشوند.
- --version
- نسخهٔ پایه برای استفاده در قالب تصویر.
- --max-version
- اگر این گزینه نسخهای بالاتر از --version مشخص کند، در صورتی که برای تصویر مفید باشد، نسخه واقعی قالب تصویر تا این حداکثر نسخه افزایش مییابد.
- --threads=count
- تعداد ریسهها (تردها) برای محاسبه چکیده فایلها و کپی. در صورتی که --threads مشخص نشود، مقدار پیشفرض برابر با تعداد پردازندهها است.
نسخهبندی قالب (FORMAT VERSIONING)
تصاویر Composefs از نظر باینری بازتولیدپذیر هستند؛ به این معنا که برای یک ورودی مشخص، نتیجه همیشه یکسان بوده و چکیده تصویر ثابتی ایجاد میکند. این موضوع بسیار مهم است چرا که از چکیده برای اعتبارسنجی تصویر استفاده میشود، حتی اگر تصویر مجدداً ساخته شده باشد نه اینکه عینا منتقل شود. با این حال، گاهی اوقات قالب نیاز به تغییر دارد؛ مثلاً زمانی که نوع جدیدی از فایل معرفی میشود یا باگی برطرف میگردد. این کار با معرفی نسخهٔ قالب مدیریت میشود.
تعیین نسخه با دو گزینه انجام میشود: نسخه پایه (--version) و حداکثر نسخه (--max-version). هنگام ساخت یک تصویر، mkcomposefs تلاش میکند نسخه قالب تصویر را تا حد امکان پایین نگه دارد، اما اگر قابلیت خاصی در نسخه پایه در دسترس نباشد ولی در حداکثر نسخه پشتیبانی شود، نسخهٔ مورد استفاده افزایش مییابد. این به ما امکان میدهد قابلیتهای جدید را معرفی کرده و باگها را در نسخههای بعدی اصلاح کنیم و با حداکثر نسخه به آنها مهاجرت کنیم، در حالی که چکیدهها برای تصاویر بدون تغییر دستنخورده باقی میمانند.
اگر به بازتولیدپذیری باینری ۱۰۰٪ در گذر زمان نیاز دارید، هر بار نسخه و حداکثر نسخه یکسانی را مشخص کنید.
تاریخچه نسخههای قالب:
- 0 - نسخه اولیه
- 1 - پشتیبانی از فایلهای overlay whiteout در تصویر (اضافهشده در 1.0.3)
در صورت عدم تعیین آرگومانهای نسخه، مقدار پیشفرض نسخه 0 و حداکثر نسخه 1 است.
توصیههای سندباکس (SANDBOXING RECOMMENDATIONS)
این ابزار اساساً فقط یک پوشه ورودی یا فایل متنی را پردازش کرده و یک فایل خروجی مینویسد. این ابزار به هیچ امتیازی نیاز ندارد. اگر آن را به عنوان بخشی از یک فرایند دارای امتیاز (مانند زمان اجرای کانتینر) فراخوانی میکنید، توصیه میکنیم پیش از فراخوانی mkcomposefs اختیارات را کاهش دهید (drop privileges).
بهویژه اگر از --from-file استفاده میکنید، میتوانید آن را به عنوان یک uid غیرممتاز اجرا کنید که هیچگونه دسترسی نوشتن روی فایلسیستم ندارد، مگر به توصیفکننده فایل (file descriptor) پاس داده شده. برای مثال، میتوانید توصیفکننده فایل هدف مورد نظر را به عنوان fd 3 ارسال کنید و دستور mkcomposefs --from-file - /proc/self/fd/3 را اجرا کنید تا از mkcomposefs به شکل کارآمد در یک خطلوله (pipeline) استفاده نمایید.
یک نمونه سندباکسسازی ساده که از ریشه (root) شروع میشود: setpriv --nnp --reuid nobody -- mkcomposefs .... نمونه دیگر استفاده از systemd-run -P DynamicUser=yes -P ProtectSystem=strict است. راه دیگر (بهویژه اگر کد شما بخشی از زمان اجرای کانتینر است) استفاده از قابلیتهای موجود آن رانتایم است (مانند seccomp، جداسازی فضای نام کاربر، سوار کردن زیرمجموعه محدودی از rootfs و غیره).
همچنین ببینید (SEE ALSO)
composefs-info(1), mount.composefs(1), composefs-dump(5)
بالادست composefs: ⟨https://github.com/containers/composefs⟩
| composefs |