LIMITS.CONF(5) فایلهای پیکربندی LIMITS.CONF(5)

limits.conf - پرونده پیکربندی محدودیت منابع کاربری در pam_limits

پرونده /etc/security/limits.conf محدودیتهای منابع سیستم (مانند حداکثر فرآیندها، حافظه، اندازه فایل، تعداد فایلهای باز) را برای کاربران و گروهها تعیین مینماید.

ماژول pam_limits.so محدودیت‌های ulimit، اولویت nice و محدودیت تعداد نشست‌های ورود همزمان را برای نشست‌های ورود کاربر اعمال می‌کند. این توضیحات درباره نحو پرونده پیکربندی برای پرونده /etc/security/limits.conf و پرونده‌های *.conf در دایرکتوری /etc/security/limits.d به‌کار می‌رود.

نحو خطوط به شرح زیر است:

<domain> <type> <item> <value>

فیلدهای فهرست‌شده در بالا باید به صورت زیر پر شوند:

<domain>

•یک نام کاربری
•یک نام گروه، با نحو @group. این نباید با netgroupها اشتباه گرفته شود.
•نویسه عام *، برای ورودی پیش‌فرض.
•نویسه عام %، تنها برای محدودیت maxlogins، همچنین می‌تواند با نحو %group استفاده شود. اگر نویسه عام % به‌تنهایی استفاده شود، معادل استفاده از * با محدودیت maxsyslogins است. با مشخص کردن یک گروه پس از %، تعداد کل ورودهای تمام کاربرانی که عضو آن گروه هستند محدود می‌شود.
•یک بازه uid که به‌صورت <min_uid>:<max_uid> مشخص می‌شود. اگر min_uid حذف شود، تطبیق دقیق برای max_uid خواهد بود. اگر max_uid حذف شود، تمام uidهای بزرگتر یا مساوی min_uid مطابقت خواهند داشت.
•یک بازه gid که به‌صورت @<min_gid>:<max_gid> مشخص می‌شود. اگر min_gid حذف شود، تطبیق دقیق برای max_gid خواهد بود. اگر max_gid حذف شود، تمام gidهای بزرگتر یا مساوی min_gid مطابقت خواهند داشت. برای تطبیق دقیق، تمام گروه‌ها از جمله گروه‌های ثانویه (تکمیلی) کاربر بررسی می‌شوند. برای تطبیق‌های بازه، فقط گروه اصلی کاربر بررسی می‌شود.
•یک gid که به‌صورت %:<gid> مشخص شده و فقط برای محدودیت maxlogins کاربرد دارد. این مقدار تعداد کل ورودهای همه کاربران عضو گروه با gid مشخص‌شده را محدود می‌کند.

توجه: محدودیت‌های گروهی و نویسه عام بر کاربر root اعمال نمی‌شوند. برای تنظیم محدودیت برای کاربر root، این فیلد باید دقیقاً شامل نام کاربری root باشد.

<type>

hard

برای اعمال محدودیت‌های منابع از نوع سخت‌گیرانه (hard). این محدودیت‌ها توسط مدیر سیستم (superuser) تعیین شده و توسط هسته سیستم‌عامل (Kernel) اعمال می‌شوند. کاربران نمی‌توانند نیازمندی منابع سیستم خود را فراتر از این مقادیر افزایش دهند.

soft

برای اعمال محدودیت‌های منابع از نوع انعطاف‌پذیر (soft). این محدودیت‌ها مقادیری هستند که کاربر می‌تواند آنها را در محدوده مجاز تعیین‌شده توسط هرگونه محدودیت hard پیشین کاهش یا افزایش دهد. مقادیر تعیین‌شده با این شناسه را می‌توان به عنوان مقادیر پیش‌فرض برای استفاده معمول از سیستم در نظر گرفت.

-

برای اعمال همزمان هر دو محدودیت منابع soft و hard با هم.

توجه داشته باشید که اگر نوع را '-' تعیین کنید اما از درج فیلدهای item و value غفلت نمایید، ماژول هرگز هیچ محدودیتی را بر کاربر/گروه مشخص‌شده اعمال نخواهد کرد.

<item>

core

محدود کردن اندازه پرونده core برحسب کیلوبایت (KB)

data

حداکثر اندازه بخش داده برحسب کیلوبایت (KB)

fsize

حداکثر اندازه پرونده برحسب کیلوبایت (KB)

memlock

حداکثر فضای آدرس قفل‌شده در حافظه (KB)

nofile

حداکثر تعداد توصیف‌گرهای پرونده باز (open file descriptors)

rss

حداکثر اندازه مجموعه مقیم حافظه (KB) (در لینوکس 2.4.30 و بالاتر نادیده گرفته می‌شود)

stack

حداکثر اندازه پشته (KB)

cpu

حداکثر زمان مصرفی پردازنده (CPU) برحسب دقیقه

nproc

حداکثر تعداد فرآیندها

as

محدودیت فضای آدرس برحسب کیلوبایت (KB)

maxlogins

حداکثر تعداد ورود برای این کاربر (این محدودیت برای کاربر با uid=0 اعمال نمی‌شود)

maxsyslogins

حداکثر تعداد کل ورودها در کل سیستم؛ در صورتی که تعداد کل ورودهای همه کاربران از مقدار تعیین‌شده بیشتر باشد، به کاربر اجازه ورود داده نمی‌شود (این محدودیت برای کاربر با uid=0 اعمال نمی‌شود)

nonewprivs

مقدار 0 یا 1؛ در صورت تنظیم روی 1، دستیابی به دسترسی‌های جدید با فراخوانی prctl(PR_SET_NO_NEW_PRIVS) غیرفعال می‌شود

priority

اولویت اجرای فرآیند کاربر (مقادیر منفی اولویت فرآیند را افزایش می‌دهند)

locks

حداکثر پرونده‌های قفل‌شده (لینوکس 2.4 و بالاتر)

sigpending

حداکثر تعداد سیگنال‌های معلق (لینوکس 2.6 و بالاتر)

msgqueue

حداکثر حافظه مورداستفاده صف‌های پیام POSIX برحسب بایت (لینوکس 2.6 و بالاتر)

nice

حداکثر اولویت nice مجاز برای افزایش (لینوکس 2.6.12 و بالاتر) مقادیر: [-20,19]

rtprio

حداکثر اولویت بلادرنگ (realtime) مجاز برای فرآیندهای غیرمجاز/کاربر عادی (لینوکس 2.6.12 و بالاتر)

chroot

دایرکتوری که کاربر باید به آن chroot شود

تمام موارد از مقادیر -1، unlimited یا infinity به نشانه عدم محدودیت پشتیبانی می‌کنند، به استثنای priority، nice و nonewprivs. اگر قرار باشد nofile روی یکی از این مقادیر تنظیم شود، در عوض روی محتویات /proc/sys/fs/nr_open تنظیم خواهد شد (به setrlimit(3) مراجعه کنید).

اگر یک محدودیت hard یا soft مربوط به یک منبع روی مقدار معتبری تنظیم شود اما خارج از بازه پشتیبانی‌شده سیستم محلی باشد، سیستم ممکن است محدودیت جدید را رد کند یا رفتارهای پیش‌بینی‌نشده رخ دهد. اگر از مقدار کنترلی required استفاده شود، در صورتی که نتوان محدودیتی را تنظیم کرد ماژول فرآیند ورود را رد خواهد کرد.

به طور کلی، محدودیت‌های فردی بر محدودیت‌های گروهی اولویت دارند؛ بنابراین اگر برای گروه admin هیچ محدودیتی قائل نشوید، اما یکی از اعضای این گروه یک خط محدودیت داشته باشد، محدودیت‌های این کاربر مطابق با این خط تنظیم خواهد شد.

همچنین، لطفاً توجه داشته باشید که تمام تنظیمات محدودیت به ازای هر نشست ورود (per login) تعیین می‌شوند. آنها سراسری نبوده و دائمی نیز نیستند؛ و فقط در طول مدت نشست وجود دارند. یک استثنا گزینه maxlogins است که در سطح کل سیستم اعمال می‌شود. با این حال یک حالت مسابقه (race condition) وجود دارد و ورودهای همزمان در یک لحظه ممکن است همیشه شناسایی نشده و فقط به عنوان یک ورود شمرده شوند.

در پرونده پیکربندی limits، نویسه '#' یک توضیح (کامنت) ایجاد می‌کند که پس از آن بقیه خط نادیده گرفته می‌شود.

ماژول pam_limits مشکلات پیکربندی یافت‌شده در پرونده پیکربندی خود و خطاهای مربوطه را از طریق syslog(3) گزارش می‌دهد.

این‌ها نمونه خطوطی هستند که ممکن است در /etc/security/limits.conf تعیین شوند:

*               soft    core            0
root            hard    core            100000
*               hard    nofile          512
@student        hard    nproc           20
@faculty        soft    nproc           20
@faculty        hard    nproc           50
ftp             hard    nproc           0
@student        -       maxlogins       4
@student        -       nonewprivs      1
:123            hard    cpu             5000
@500:           soft    cpu             10000
600:700         hard    locks           10

pam_limits(8), pam.d(5), pam(7), getrlimit(2), getrlimit(3p)

ماژول pam_limits در ابتدا توسط Cristian Gafton <gafton@redhat.com> نوشته شده است.

مه ۲۰۲۵ Linux-PAM