إدارة المجموعات
- مفهوم المجموعات في لينكس
- أنواع المجموعات في لينكس
- عرض المجموعات في لينكس
- إنشاء مجموعة جديدة في لينكس
- تغيير أذونات الملفات و المجلدات حسب المجموعة في لينكس
- إضافة المستخدم إلى مجموعة في لينكس
- إزالة المستخدم من مجموعة في لينكس
- حذف مجموعة في لينكس
مفهوم المجموعات في لينكس
في نظام لينكس، يتم استخدام المجموعات ( Groups ) لتنظيم المستخدمين و منحهم صلاحيات مشتركة للوصول إلى الملفات و المجلدات و التطبيقات. مما يعني أنه بدلاً من تحديد صلاحيات كل مستخدم في النظام على حدا فإنه يتم تحديد صلاحيات المجموعات و عندها على حسب المجموعة التي يوجد فيها المستخدم يتم تحديد صلاحياته بشكل تلقائي. يمكن للمستخدم أن يكون عضواً في مجموعة واحدة أو عدة مجموعات.
مدير النظام هو من يستطيع ضم المستخدم لمجموعات أخرى مما يعني أنه هو فقط من يستطيع منحه المزيد من الأذونات.
أنواع المجموعات في لينكس
يوجد نوعان رئيسيان من المجموعات:
- المجموعات الأساسية ( Primary Groups ).
- المجموعات الثانوية ( Secondary Groups ).
عند إنشاء مستخدم جديد فإنه بشكل تلقائي يتم إنشاء مجموعة جديدة خاصة به و هي تكون بمثابة المجموعة الأساسية التي يتبع لها.
أي مجموعة أخرى يتم ضم المستخدم فيها، تكون بمثابة مجموعة ثانوية بالنسبة له.
بشكل عام، صلاحيات المستخدم على الملفات الخاصة به يتم تحديدها في مجموعته الأساسية. في حال أراد مدير النظام منحه صلاحيات على باقي الملفات الموجودة في النظام فإنه يستطيع ضمه لمجموعات أخرى بدون تغيير مجموعته الأساسية.
عرض المجموعات في لينكس
المجموعات الموجودة في لينكس يتم تسجيلها في الملف /etc/group
بشكل منظم على النحو التالي.
group-name:x:GID:user-list
group-name
- يقصد بها إسم المجموعة.x
- يقصد بها أنه يوجد كلمة مرور خاصة بالمجموعة و التي عادةً ما تكون مخزنة بشكل مشفر في الملف/etc/gshadow
.GID
- يقصد بها رقم التعرفة الخاص بالمجموعة و الذي يكون موحداً بحيث لكل مجموعة رقم تعرفة خاص بها.user-list
- يقصد بها أسماء جميع المستخدمين المشتركين في المجموعة مع الإشارة إلى أنه يتم وضع فاصلة بين كل إسمين.
إذا كان للمجموعة كلمة مرور، فهذا يعني أن أي مستخدم يعرف كلمة المرور يمكنه الإنضمام إليها أو الإنسحاب منها.
كمدير للنظام يمكنك التحكم بجميع المجموعات، إضافة أو إزالة مستخدمين منها بشكل مباشر بدون الحاجة لمعرفة كلمة المرور الخاصة بها و لكن كن حذراً عند فعل ذلك حتى تمنح أو تحذف أي صلاحيات للمستخدمين بدون قصد!
عرض جميع المجموعات
في المثال التالي قمنا بطباعة جميع المجموعات الموجودة في النظام.
Linux Terminal
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 : root
2- يمكنك استخدام الأمر id
لطباعة جميع المجموعات التي ينتمي إليها مستخدم محدد.
في المثال التالي قمنا بطباعة جميع المجموعات التي ينتمي إليها المستخدم root
.
Linux Terminal
uid=0(root) gid=0(root) groups=0(root)
uid
يمثل رقم المعرف الخاص بالمستخدمroot
هو0
.gid
يمثل المجموعة الأساسية للمستخدمroot
و لاحظ أن إسمهاroot
و رقم المعرف الخاص بها هو0
أيضاً.groups
يمثل جميع المجموعات التي ينتمي إليها المستخدمroot
و لاحظ أنه لا ينتمي لمجموع أخرى - باستثناء مجموعته الخاصة - حيث يظهر رقم المجموعة الخاصة به فقط في الآخر.
عرض معلومات مجموعة محددة
يمكنك استخدام الأمر getent group
لطباعة معلومات مجموعة محددة.
في المثال التالي قمنا بطباعة معلومات المجموعة root
.
Linux Terminal
root:x:0:
هنا فعلياً تم عرض السطر الخاص بالمجموعة root
كما هو مسجّل في الملف /etc/group
.
إنشاء مجموعة جديدة في لينكس
لإنشاء مجموعة جديدة يمكنك استخدام الأمر groupadd
على النحو التالي.
groupadd [options] group-name
[options]
- يقصد بها الباراميترات الإختيارية التي يمكنك تمريرها للأمر.group-name
- مكانها يجب كتابة إسم المجموعة المراد إنشاؤها.
فيما يلي الباراميترات التي يمكنك استخدامها مع هذا الأمر لتحديد معلومات المجموعة الجديدة المراد إنشاءها.
الباراميتر و استخدامه | |
---|---|
-g |
يستعمل هذا الباراميتر لتحديد رقم المعرّف للمجموعة. |
-U |
يستعمل هذا الباراميتر لتحديد أسماء المستخدمين التابعين للمجموعة. |
في حال تم إنشاء المجموعة بدون تحديد رقم المعرّف الخاص بها فإنه سيتم إعطاؤها الرقم 1000 أو أي رقم متاح بعد و لن يكون فيها أي مشترك.
إنشاء مجموعة جديدة
قم بتنفيذ الأمر التالي لإنشاء مجموعة جديدة إسمها developers
.
Linux Terminal
تغيير أذونات الملفات و المجلدات حسب المجموعة في لينكس
يمكنك استخدام الأمر chown
على النحو التالي لتغيير ملكية ملف أو مجلد لصالح مجموعة معينة.
chown :group-name file-name
group-name
- مكانها يجب كتابة إسم المجموعة المراد منحها ملكية الملف أو المجلد.file-name
- مكانها يجب كتابة إسم الملف أو المجلد المراد منح ملكيته لمجموعة أخرى.
1- قم بتنفيذ الأمر التالي لإنشاء ملف إسمه demo
و بالطبع المالك له سيكون منشئه و الذي هو المستخدم root
الذي يملك المجموعة root
.
Linux Terminal
2- قم بتنفيذ الأمر التالي لتحويل ملكية الملف demo
إلى المجموعة developers
.
Linux Terminal
3- إذا قمت بطباعة معلومات الملفات الموجودة في المسار الحالي سيظهر لك أن demo
تم إنشاؤه من قبل المستخدم root
و لكن ملكيته ممنوحة لأي مستخدم ينتمي للمجموعة developers
.
Linux Terminal
total 1 -rw-r--r--. 1 root developers 0 Mar 7 15:04 demo
4- يمكنك استخدام الأمر chmod
كما يلي لتغيير أذونات الملف و بالطبع سيتم منح هذه الأذونات لكل فرد في المجموعة.
Linux Terminal
الأمر chmod
شرحناه بالتفصيل في درس أذونات الملفات و المجلدات في حال أردت الرجوع إليه.
إضافة المستخدم إلى مجموعة في لينكس
يمكنك استخدام الأمر usermod
لتعديل أي معلومة خاصة بالمستخدم كإسم، المجلد الخاص به، المجموعات التي ينتمي إليها إلخ..
ما يهمنا الآن أنه يمكن استخدامه على النحو التالي لتحديد المجموعات التي ينتمي إليها.
usermod -aG group-name username
1- في المثال التالي قمنا بإنشاء مستخدم جديد إسمه tester
.
Linux Terminal
المستخدم tester
إفتراضياً سيكون يملك مجموعة خاصة به إسمها tester
أيضاً.
2- في المثال التالي قمنا بإضافة المستخدم tester
إلى المجموعة developers
.
Linux Terminal
3- في المثال التالي قمنا بعرض جميع المجموعات التي أصبح المستخدم tester
مشترك فيها.
لاحظ أنه أصبح عضواً في مجموعتين، مجموعته الأساسية tester
بالإضافة إلى المجموعة الثانوية developers
.
Linux Terminal
tester : tester developers
الأمر usermod
تم شرحه بشكل مفصل في درس إدارة المستخدمين في لينكس في حال أردت الرجوع إليه.
إزالة المستخدم من مجموعة في لينكس
يمكنك استخدام الأمر gpasswd
على النحو التالي لإزالة المستخدم من مجموعة محددة.
gpasswd -d username group-name
1- في المثال التالي قمنا بإخراج المستخدم tester
من المجموعة developers
.
Linux Terminal
3- في المثال التالي قمنا بعرض جميع المجموعات التي أصبح المستخدم tester
مشترك فيها.
لاحظ أنه عاد عضواً في مجموعته الأساسية tester
فقط.
Linux Terminal
tester : tester
حذف مجموعة في لينكس
يمكنك استخدام الأمر userdel
على النحو التالي لحذف مجموعة موجودة في لينكس .
groupdel [options] group-name
[options]
- يقصد بها الباراميترات الإختيارية التي يمكنك تمريرها للأمر.group-name
- مكانها يجب كتابة إسم المستخدم المراد إنشاؤه.
إفتراضياً، لا يمكنك حذف المجموعة إذا كان هناك مستخدم واحد على الأقل مشترك فيها.
لحذف المجموعة حتى لو كان فيها مشتركين يمكنك إضافة الباراميتر -f
و هكذا سيتم حذفها.
في المثال التالي قمنا بحذف المجموعة developers
.