Programming Basics SQL HTML CSS JavaScript React Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Linux Learn Typing

إدارة المجموعات

  • مفهوم المجموعات في لينكس
  • أنواع المجموعات في لينكس
  • عرض المجموعات في لينكس
  • إنشاء مجموعة جديدة في لينكس
  • تغيير أذونات الملفات و المجلدات حسب المجموعة في لينكس
  • إضافة المستخدم إلى مجموعة في لينكس
  • إزالة المستخدم من مجموعة في لينكس
  • حذف مجموعة في لينكس

مفهوم المجموعات في لينكس

في نظام لينكس، يتم استخدام المجموعات ( Groups ) لتنظيم المستخدمين و منحهم صلاحيات مشتركة للوصول إلى الملفات و المجلدات و التطبيقات. مما يعني أنه بدلاً من تحديد صلاحيات كل مستخدم في النظام على حدا فإنه يتم تحديد صلاحيات المجموعات و عندها على حسب المجموعة التي يوجد فيها المستخدم يتم تحديد صلاحياته بشكل تلقائي. يمكن للمستخدم أن يكون عضواً في مجموعة واحدة أو عدة مجموعات.

مدير النظام هو من يستطيع ضم المستخدم لمجموعات أخرى مما يعني أنه هو فقط من يستطيع منحه المزيد من الأذونات.

أنواع المجموعات في لينكس

يوجد نوعان رئيسيان من المجموعات:

  • المجموعات الأساسية ( Primary Groups ).
  • المجموعات الثانوية ( Secondary Groups ).

عند إنشاء مستخدم جديد فإنه بشكل تلقائي يتم إنشاء مجموعة جديدة خاصة به و هي تكون بمثابة المجموعة الأساسية التي يتبع لها.
أي مجموعة أخرى يتم ضم المستخدم فيها، تكون بمثابة مجموعة ثانوية بالنسبة له.

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

عرض المجموعات في لينكس

المجموعات الموجودة في لينكس يتم تسجيلها في الملف /etc/group بشكل منظم على النحو التالي.

group-name:x:GID:user-list
  • group-name - يقصد بها إسم المجموعة.
  • x - يقصد بها أنه يوجد كلمة مرور خاصة بالمجموعة و التي عادةً ما تكون مخزنة بشكل مشفر في الملف /etc/gshadow.
  • GID - يقصد بها رقم التعرفة الخاص بالمجموعة و الذي يكون موحداً بحيث لكل مجموعة رقم تعرفة خاص بها.
  • user-list - يقصد بها أسماء جميع المستخدمين المشتركين في المجموعة مع الإشارة إلى أنه يتم وضع فاصلة بين كل إسمين.

إذا كان للمجموعة كلمة مرور، فهذا يعني أن أي مستخدم يعرف كلمة المرور يمكنه الإنضمام إليها أو الإنسحاب منها.

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


عرض جميع المجموعات

في المثال التالي قمنا بطباعة جميع المجموعات الموجودة في النظام.

Linux Terminal

root@fedora:~$ cat /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:mhamad
...

قد يظهر لك عشرات المجموعات الموجودة في النظام مع أنك تستعمل فيه مستخدم واحد فقط!

هذا الأمر طبيعي، لا تعتقد أن جهازك مخترق و ذلك لأن نظام التشغيل قد ينشئ مستخدم جديد لكل برنامج أو قطعة هاردوير مشبوكة بجهازك و كما ذكرنا سابقاً أن لكل مستخدم مجموعة خاصة به.


عرض جميع مجموعات المستخدم

1- يمكنك استخدام الأمر groups لطباعة جميع المجموعات التي ينتمي إليها المستخدم الحالي.

في المثال التالي قمنا بطباعة مجموعات المستخدم الحالي و الذي هو root و لاحظ أنه يملك مجموعة واحدة فقط و بنفس إسمه.

Linux Terminal

root@fedora:~$ groups root
root : root

2- يمكنك استخدام الأمر id لطباعة جميع المجموعات التي ينتمي إليها مستخدم محدد.

في المثال التالي قمنا بطباعة جميع المجموعات التي ينتمي إليها المستخدم root.

Linux Terminal

root@fedora:~$ id root
uid=0(root) gid=0(root) groups=0(root)
  • uid يمثل رقم المعرف الخاص بالمستخدم root هو 0.
  • gid يمثل المجموعة الأساسية للمستخدم root و لاحظ أن إسمها root و رقم المعرف الخاص بها هو 0 أيضاً.
  • groups يمثل جميع المجموعات التي ينتمي إليها المستخدم root و لاحظ أنه لا ينتمي لمجموع أخرى - باستثناء مجموعته الخاصة - حيث يظهر رقم المجموعة الخاصة به فقط في الآخر.

عرض معلومات مجموعة محددة

يمكنك استخدام الأمر getent group لطباعة معلومات مجموعة محددة.

في المثال التالي قمنا بطباعة معلومات المجموعة root.

Linux Terminal

root@fedora:~$ getent group root
root:x:0:

هنا فعلياً تم عرض السطر الخاص بالمجموعة root كما هو مسجّل في الملف /etc/group.

إنشاء مجموعة جديدة في لينكس

لإنشاء مجموعة جديدة يمكنك استخدام الأمر groupadd على النحو التالي.

groupadd [options] group-name
  • [options] - يقصد بها الباراميترات الإختيارية التي يمكنك تمريرها للأمر.
  • group-name - مكانها يجب كتابة إسم المجموعة المراد إنشاؤها.

فيما يلي الباراميترات التي يمكنك استخدامها مع هذا الأمر لتحديد معلومات المجموعة الجديدة المراد إنشاءها.

الباراميتر و استخدامه
-g يستعمل هذا الباراميتر لتحديد رقم المعرّف للمجموعة.
-U يستعمل هذا الباراميتر لتحديد أسماء المستخدمين التابعين للمجموعة.

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


إنشاء مجموعة جديدة

قم بتنفيذ الأمر التالي لإنشاء مجموعة جديدة إسمها developers.

Linux Terminal

root@fedora:~$ groupadd developers

تغيير أذونات الملفات و المجلدات حسب المجموعة في لينكس

يمكنك استخدام الأمر chown على النحو التالي لتغيير ملكية ملف أو مجلد لصالح مجموعة معينة.

chown :group-name file-name
  • group-name - مكانها يجب كتابة إسم المجموعة المراد منحها ملكية الملف أو المجلد.
  • file-name - مكانها يجب كتابة إسم الملف أو المجلد المراد منح ملكيته لمجموعة أخرى.

1- قم بتنفيذ الأمر التالي لإنشاء ملف إسمه demo و بالطبع المالك له سيكون منشئه و الذي هو المستخدم root الذي يملك المجموعة root.

Linux Terminal

root@fedora:~$ chown :developers project.txt

2- قم بتنفيذ الأمر التالي لتحويل ملكية الملف demo إلى المجموعة developers.

Linux Terminal

root@fedora:~$ chown :developers demo

3- إذا قمت بطباعة معلومات الملفات الموجودة في المسار الحالي سيظهر لك أن demo تم إنشاؤه من قبل المستخدم root و لكن ملكيته ممنوحة لأي مستخدم ينتمي للمجموعة developers.

Linux Terminal

root@fedora:~$ ls -l
total 1 -rw-r--r--. 1 root developers 0 Mar 7 15:04 demo

4- يمكنك استخدام الأمر chmod كما يلي لتغيير أذونات الملف و بالطبع سيتم منح هذه الأذونات لكل فرد في المجموعة.

Linux Terminal

root@fedora:~$ chmod g+rwx demo

الأمر chmod شرحناه بالتفصيل في درس أذونات الملفات و المجلدات في حال أردت الرجوع إليه.

إضافة المستخدم إلى مجموعة في لينكس

يمكنك استخدام الأمر usermod لتعديل أي معلومة خاصة بالمستخدم كإسم، المجلد الخاص به، المجموعات التي ينتمي إليها إلخ..
ما يهمنا الآن أنه يمكن استخدامه على النحو التالي لتحديد المجموعات التي ينتمي إليها.

usermod -aG group-name username

1- في المثال التالي قمنا بإنشاء مستخدم جديد إسمه tester.

Linux Terminal

root@fedora:~$ useradd tester

المستخدم tester إفتراضياً سيكون يملك مجموعة خاصة به إسمها tester أيضاً.


2- في المثال التالي قمنا بإضافة المستخدم tester إلى المجموعة developers.

Linux Terminal

root@fedora:~$ usermod -aG developers tester

3- في المثال التالي قمنا بعرض جميع المجموعات التي أصبح المستخدم tester مشترك فيها.
لاحظ أنه أصبح عضواً في مجموعتين، مجموعته الأساسية tester بالإضافة إلى المجموعة الثانوية developers.

Linux Terminal

root@fedora:~$ groups tester
tester : tester developers

الأمر usermod تم شرحه بشكل مفصل في درس إدارة المستخدمين في لينكس في حال أردت الرجوع إليه.

إزالة المستخدم من مجموعة في لينكس

يمكنك استخدام الأمر gpasswd على النحو التالي لإزالة المستخدم من مجموعة محددة.

gpasswd -d username group-name

1- في المثال التالي قمنا بإخراج المستخدم tester من المجموعة developers.

Linux Terminal

root@fedora:~$ gpasswd -d tester developers

3- في المثال التالي قمنا بعرض جميع المجموعات التي أصبح المستخدم tester مشترك فيها.
لاحظ أنه عاد عضواً في مجموعته الأساسية tester فقط.

Linux Terminal

root@fedora:~$ groups tester
tester : tester

حذف مجموعة في لينكس

يمكنك استخدام الأمر userdel على النحو التالي لحذف مجموعة موجودة في لينكس .

groupdel [options] group-name
  • [options] - يقصد بها الباراميترات الإختيارية التي يمكنك تمريرها للأمر.
  • group-name - مكانها يجب كتابة إسم المستخدم المراد إنشاؤه.

إفتراضياً، لا يمكنك حذف المجموعة إذا كان هناك مستخدم واحد على الأقل مشترك فيها.
لحذف المجموعة حتى لو كان فيها مشتركين يمكنك إضافة الباراميتر -f و هكذا سيتم حذفها.


في المثال التالي قمنا بحذف المجموعة developers.

Linux Terminal

root@fedora:~$ groupdel developers