NEWUIDMAP(1) دستورات کاربر NEWUIDMAP(1)

newuidmap - تنظیم نگاشت شناسههای کاربری (UID) در فضای نام کاربر

newuidmap pid uid loweruid count [uid loweruid count [ ... ]]

دستور newuidmap نگاشت شناسههای UID را برای فرآیندی که در یک فضای نام کاربری (user namespace) اجرا میشود تنظیم میکند.

دستور newuidmap فایل /proc/[pid]/uid_map را بر اساس آرگومان‌های خط فرمان خود و UIDهای مجاز تنظیم می‌کند. تفویض Subuid را می‌توان از طریق /etc/subuid یا از طریق ماژول پیکربندی‌شده NSS subid مدیریت کرد. این گزینه‌ها ناسازگار با یکدیگر (mutually exclusive) هستند.

توجه داشته باشید که کاربر ریشه (root) نیز از الزام داشتن یک مدخل معتبر در /etc/subuid مستثنی نیست.

پس از آرگومان pid، دستور newuidmap مجموعه‌هایی از ۳ عدد صحیح را انتظار دارد:

uid

شروع محدوده UIDها در داخل فضای نام کاربری.

loweruid

شروع محدوده UIDها در خارج از فضای نام کاربری.

count

طول محدوده‌ها (هم در داخل و هم در خارج فضای نام کاربری).

دستور newuidmap پیش از تنظیم /proc/[pid]/uid_map بررسی و تایید می‌کند که فراخواننده، مالک فرآیند مشخص‌شده توسط pid است و برای هر یک از مجموعه‌های بالا، تک‌تک UIDها در محدوده [loweruid, loweruid+count) طبق /etc/subuid برای فراخواننده مجاز هستند.

توجه داشته باشید که newuidmap برای یک فرآیند معین تنها یک بار قابل استفاده است.

به‌جای شناسه فرآیند (pid) عددی، آرگومان نخست می‌تواند به صورت fd:N مشخص شود، که در آن عدد صحیح N شماره توصیف‌گر فایل (file descriptor) فرآیند فراخواننده برای دایرکتوری /proc/[pid] است. در این حالت، newuidmap از openat(2) برای باز کردن فایل uid_map در آن دایرکتوری استفاده می‌کند تا از شرایط مسابقه TOCTTOU در صورت خاتمه فرآیند و استفاده مجدد فوری از pid جلوگیری شود.

در حال حاضر هیچ گزینه‌ای برای دستور newuidmap وجود ندارد.

/etc/subuid

فهرست شناسه‌های کاربری فرعی (subordinate user IDs) کاربر.

/proc/[pid]/uid_map

نگاشت UIDها بین فضاهای نام کاربری.

login.defs(5), newusers(8), subuid(5), useradd(8), usermod(8), userdel(8).

مه ۲۰۲۵ shadow