fakeNss
فایلهای /etc/passwd و /etc/group شامل root و nobody را فراهم میکند، تا جستجوی کاربر/گروه در باینریهایی که بر انجام این کار اصرار دارند، کار کند.
اگر فقط به وجود این فایلها با چند ورودی نیاز دارید، این گزینه ممکن است انتخاب بهتری نسبت به یک اسکریپت سفارشی باشد که useradd و ابزارهای مرتبط را اجرا میکند.
fakeNss همچنین /etc/nsswitch.conf را ارائه میدهد که تحلیل هاست NSS را طوری پیکربندی میکند که ابتدا /etc/hosts را قبل از بررسی DNS بررسی کند، زیرا رفتار پیشفرض در صورت عدم وجود فایل پیکربندی (dns [!UNAVAIL=return] files) کاملاً غیرمنتظره است.
همچنین یک پوشه خالی در /var/empty ایجاد میکند زیرا از آن به عنوان پوشه خانه برای کاربران root و nobody استفاده میکند.
پوشه /var/empty میتواند به عنوان هدف chroot نیز استفاده شود تا در صورت اجرای چنین فرآیندهایی در کنتینر شما، از دسترسی به فایلها در فرآیندهایی که نیازی به دسترسی به فایل ندارند جلوگیری کند.
ورودیهای کاربر ایجادشده توسط fakeNss از شل /bin/sh استفاده میکنند که توسط fakeNss ارائه نمیشود، زیرا در بیشتر موارد از آن استفاده نخواهد شد.
اگر نیاز دارید آن در دسترس باشد، به dockerTools.binSh مراجعه کنید یا شل خودتان را ارائه دهید.
ورودیها
fakeNss در Nixpkgs به عنوان یک بسته به جای یک تابع در دسترس قرار گرفته است، اما دارای دو صفت است که میتوان آنها را بازنویسی کرد و ممکن است در موارد خاص مفید باشد.
برای جزئیات بیشتر در مورد نحوه کارکرد بازنویسی، به و مراجعه کنید.
extraPasswdLines (فهرستی از رشتهها؛ اختیاری)
: فهرستی از خطوط که به /etc/passwd اضافه خواهند شد.
در صورتی مفید است که کاربران اضافی نیاز باشد در خروجی fakeNss وجود داشته باشند.
اگر extraPasswdLines مشخص شود، ورودیهای root و nobody ایجادشده توسط fakeNss را بازنویسی نخواهد کرد.
آن ورودیها همواره وجود خواهند داشت.
خطوط مشخصشده در اینجا باید از قالب passwd(5) پیروی کنند.
مقدار پیشفرض: [].
extraGroupLines (فهرستی از رشتهها؛ اختیاری)
: فهرستی از خطوط که به /etc/group اضافه خواهند شد.
در صورتی مفید است که گروههای اضافی نیاز باشد در خروجی fakeNss وجود داشته باشند.
اگر extraGroupLines مشخص شود، ورودیهای root و nobody ایجادشده توسط fakeNss را بازنویسی نخواهد کرد.
آن ورودیها همواره وجود خواهند داشت.
خطوط مشخصشده در اینجا باید از قالب group(5) پیروی کنند.
مقدار پیشفرض: [].
مثالها
> > > **مثال** > > # استفاده از `fakeNss` با `dockerTools.buildImage` > > این مثال نحوه استفاده از `fakeNss` را به همان صورت موجود نشان میدهد. > این ویژگی با توابع موجود در `dockerTools` مفید است تا امکان ساخت تصاویر Docker حاوی فایلهای `/etc/passwd` و `/etc/group` را فراهم کند. > این مثال شامل باینری `hello` در تصویر است تا بتواند علاوه بر داشتن فایلهای اضافی، کاری انجام دهد. >> > > **مثال** > > # استفاده از `fakeNss` همراه با یک override برای افزودن سطرهای اضافی > > کد زیر از `override` برای افزودن سطرهای اضافی به `/etc/passwd` و `/etc/group` جهت ایجاد یک ورودی کاربر و گروه دیگر استفاده میکند. >{ dockerTools, fakeNss, hello, }: dockerTools.buildImage { name = "image-with-passwd"; tag = "latest"; copyToRoot = [ fakeNss hello ]; config = { Cmd = [ "/bin/hello" ]; }; }
{ fakeNss }: fakeNss.override { extraPasswdLines = [ "newuser:x:9001:9001:new user:/var/empty:/bin/sh" ]; extraGroupLines = [ "newuser:x:9001:" ]; }