كيفية تفعيل حصص المستخدمين والمجموعات


محمد هاني صباغ

يفترض هذا الدرس أنّك قد قمتَ بالفعل بإنشاء خادوم افتراضي خاصّ (VPS) وإضافة العديد من حسابات المستخدمين إليه. يتم تطبيق نظام الحصص (Quotas) في غالب الأحيان على مستخدمي FTP أو SFTP، ولكن من الممكن أيضًا تطبيقه على أيّ مستخدم على النظام. لاحظ أنّه من غير الممكن استخدام ميّزة المستخدم الوهمي (virtual user) عبر VSFTP، لأنّ المستخدمين لا يجب أن يكونوا موجودين على النظام أصلًا.

linux-qutoa.thumb.png.4a9218213d77c73ade

يتم استخدام الحصص لتقييد المساحة التي يمكن لمستخدم أو مجموعة أن يستخدمها على الخادوم. هناك عادةً طريقتان لإدارة الحصص: الأولى عبر إنشاء نظام ملفّاتٍ فارغ خاصّ بمستخدمٍ معيّن ومن ثمَّ ضمّه (mount) إلى النظام. ميّزة هذه الطريقة هي أنّك لا تحتاج تثبيت أيّ حزمة إضافية خارجية. والطريقة الثانية هي عبر استخدام أداة لإدارة الحصص وتنظيمها. ميّزة هذه الطريقة هي إمكانية تغيير الحصص بسهولة بدون الحاجة إلى القيام بأيّ تغييراتٍ معقّدة على نظام الملفّات.

تثبيت Quota

سنبدأ العملية عبر تثبيت برنامج quota:

apt-get install quota

يجب أن يتم تعديل خيارات الضمّ (mount) الخاصّة بنظام الملفّات قبل أن نتمكّن من استخدام الحصص. يجب أن نفتح ملفّ fstab ونقوم بتعديله عبر الأمر التالي:

sudo nano /etc/fstab

يتم تفعيل الحصص عبر إضافة usrquota و/أو grpquota إلى خيارات الضمّ للقرص الصلب الرئيسي. عند استخدام usrquota، فإنّه سيتم تفعيل الحصص على مستخدمين معيّنين فقط، بينما يسمح خيار grpquota بتفعيل نظام الحصص لمجموعات معيّنة.

يمكن إضافة الخيارين بشكلٍ منفصل بناء على النتيجة التي تريد الوصول إليها. يجب أن يتم تعديل ملفّ fstab كالتالي لتفعيل نظام الحصص على حسابات المستخدمين (إذا كنتَ تريد تفعيل نظام الحصص على المجموعات، فقم بإضافة grpquota):

LABEL=DOROOT  / ext4  errors=remount-ro,usrquota  0 1

احفظ الملفّ وقم بتفعيل خيارات الضمّ الجديدة عبر إعادة ضمّ نظام الملفّات بالأمر:

mount -o remount /

سيقوم الأمر التالي بإنشاء ملفّ حصص جديد في مسار الجذر الخاصّ بنظام الملفّات. سيكون هذا الملفّ عبارةً عن ملف فهرس يتم استخدامه بواسطة نظام الحصص لإدارة حجم حصّة كلّ مستخدم من مساحة القرص. يحتوي الملفّ أيضًا على تقييدات المستخدمين والإعدادات المضبوطة.

quotacheck -cum /

يتألّف الأمر من المُعامِلات الثلاثة التالية:

  • يقوم المُعامِل c بالإشارة إلى ضرورة إنشاء ملفٍّ جديد، وسيقوم بالكتابة فوقه في حال كان موجودًا مسبقًا.
  • يشير المُعامِل u إلى أنّه يجب إنشاء ملفّ فهرس جديد للمستخدمين. لإنشاء ملفّ فهرس للمجموعات كذلك، قم بإضافة المُعامِل g في الأمر السابق.
  • وأخيرًا يحدد المُعامِل m أنّه ليس هناك حاجة إلى القيام بعمليّة ضمّ بوضع القراءة فقط لنظام الملفّات بأكمله لإنشاء ملفّات الفهارس.

بسبب استخدام المُعامِل m، فإنّه من الممكن أن يحصل عدم تطابق صغير بين الحجم الذي قمتَ بتحديده لحصّة مساحة المستخدم وبين الحجم الذي سيتم استخدامه بالفعل من قبل برنامج quota. تأكّد من أنّه لا يوجد مستخدم يقوم حاليًا برفع الملفّات إلى الخادوم عند تطبيق الأمر السابق لتقليل حجم الفرق.

يقوم الأمر التالي بتفعيل نظام الحصص على نظام الملفّات المطلوب:

quotaon /

يمكن استخدام أمرٍ مشابه لتعطيل نظام الحصص بأكمله:

quotaoff

إعداد الحصص المختلفة لحسابات المستخدمين

يمكن إعداد الحصص باستخدام الأمر edquota متبوعًا باسم المستخدم أو اسم المجموعة. سيقوم الأمر بفتح محرر الملفّات الافتراضي، في درسنا هذا، سنفترض أنّ المستخدم ftpuser يجب أن يتم تخصيص مساحة 10ميغابت له. الأمر الذي سنستخدمه هو هذا:

edquota ftpuser

والذي سيقوم بفتح الملفّ للتعديل:

Disk quotas for user ftpuser (uid 1001):
Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/disk/by-label/DOROOT         8      10000      10240          2        0        0

يعرض محرر النصوص 7 أعمدة مختلفة:

  1. يحدد اسم نظام الملفّات الذي تمّ تفعيل نظام الحصص عليه.
  2. يحدد حجم الكُتَل (Blocks) المُستخدمة حاليًا من قبل المستخدم.
  3. يحدد حدّ soft block للمستخدم على نظام الملفّات.
  4. يحدد حدّ hard block للمستخدم على نظام الملفّات.
  5. يحدد عدد عُقَد inodes المُستخدمة حاليًا بواسطة المستخدم.
  6. يحدد حدّ soft inode للمستخدم على نظام الملفّات.
  7. يحدد حدّ hard inode للمستخدم على نظام الملفّات.

تشير الكُتَل (Blocks) إلى حجم المساحة التي يجب استخدامها، بينما تشير الـinodes إلى عدد الملفّات/المجلّدات التي يمكن استخدامها. عادةً ما يتم استخدام حجم الكتلة في برنامج quota.

حدّ hard block هو المساحة القصوى من القرص الصلب التي يمكن لمستخدم أو مجموعة استخدامها. بمجرّد الوصول إلى هذا الحدّ، فلن يتم استخدام أيّ مساحة إضافية من على القرص الصلب. يُعرِِّف حدّ soft block أيضًا أقصى مساحة يمكن للمستخدم أو المجموعة استخدامها، إلّا أنّه وعلى عكس hard block، فإنّه يمكن للمستخدم أن يقوم بتخطّي الحدّ الأقصى المسموح لفترة معيّنة من الزمن فقط، تعرف هذه الفترة باسم فترة المهلة (grace period). سنتعرّف على المزيد من المعلومات عنها لاحقًا في هذا الدرس.

في المثال أعلاه، استخدمنا الحدّ الناعم (soft limit) بمساحة 9,785Mb والحدّ الصلب (hard limit) بمساحة 10Mb. يمكنك القيام ببدء عملية نقل ملفّات عبر برتوكول FTP/SFTP، حيث يكون الملفّات المرفوعة بحجم 12Mb مثلًا(طالما يكون حجمها أكبر من الحدّ الصلب hard limit). سيتم إرجاع رسالة خطأ إليك من طرف برنامج عميل FTP/SFTP تخبرك بأنّ عملية الرفع قد فشلت. بالطبع فإنّ تخصيص مساحة 10Mb للمستخدم ليس أمرًا منطقيًا، وسنخصص الآن حدًّا ناعمًا بمساحة 976Mb وحدًّا صلبًا بمساحة 1Gb:

Disk quotas for user ftpuser (uid 1001):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/disk/by-label/DOROOT         8    1000000    1048576          2        0        0

للتحقق من حصّة مستخدم معيّن، يمكن أن يتم تنفيذ الأمر التالي متبوعًا باسم المستخدم أو اسم المجموعة:

quota ftpuser

وسيكون الخرج على شكل:

Disk quotas for user ftpuser (uid 1001):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/disk/by-label/DOROOT         8    1000000    1048576          2        0        0

إنشاء التقارير

من الممكن إنشاء التقارير من مختلف أنظمة الحصص عبر الأمر:

repquota -a

والذي سيقوم بطباعة الخرج التالي لك:

*** Report for user quotas on device /dev/disk/by-label/DOROOT
Block grace time: 7days; Inode grace time: 7days
                        Block limits                File limits
User                used        soft      hard    grace    used    soft  hard  grace
------------------------------------------------------------------------------------
root          --   1118708        0         0             37093     0     0
daemon        --        68        0         0                 4     0     0
man           --      9568        0         0               139     0     0
www-data      --      2908        0         0                15     0     0
nobody        --         0        0         0                 1     0     0
libuuid       --        24        0         0                 2     0     0
Debian-exim   --        44        0         0                10     0     0
mysql         --     30116        0         0               141     0     0
ftpuser       --         8  1000000   1048576                 2     0     0

فرعي: تحديد فترة مهلة

لإعطاء المستخدمين الحاليين بعض الوقت لتقليل مساحة ملفّاتهم على الخادوم، يمكن إعداد فترة مهلة (grace period). تسمح هذه الفترة للمستخدمين بأن يتعدّوا الحدّ الناعم (soft limit) المحدد لهم بينما يبقون تحت سقف الحدّ الصلب (hard limit). يمكن إعداد فترة المهلة عن طريق الأمر التالي (لاحظ أنّ هذه الفترة سيتم تطبيقها على جميع المستخدمين، لا يوجد إمكانية لتطبيقها على مستخدمين معيّنين مثلًا) ويمكنك التعبير عن الفترة التي تريدها بالثواني أو الدقائق أو الساعات أو الشهور.. إلخ:

edquota -t

سيعطيك الأمر أعلاه الخرج التالي وسيقوم بإخبارك بالوقت الذي يمكنك أن تستخدمه. في هذا الدرس، تمّ استخدام فترة 7 أيام لفترة المهلة:

Grace period before enforcing soft limits for users:
Time units may be: days, hours, minutes, or seconds
  Filesystem                    Block grace period     Inode grace period
  /dev/disk/by-label/DOROOT                  7days                  7days

خاتمة

سيتم تحديث وتطبيق الحصص تلقائيًا عندما يقوم مستخدمٌ ما بإنشاء / حذف / نقل ملفّ أو مجلّد. تذكّر أنّ برنامج quota يعمل عبر النظر إلى مجلّدات المستخدمين أو المجموعات المحددة. يمكن لمستخدمي SSH التخلّص من نظام الحصص عبر تغيير مالك الملفّات الخاصّة بهم.

ترجمة -وبتصرف- للمقال: How To Enable User and Group Quotas لصاحبه: Jan Stevens.





تفاعل الأعضاء


لا توجد أيّة تعليقات بعد



يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن