تتطلّب إدارة خادوم Red Hat Enterprise Linux، مثل أي خادوم عموما، معرفة كيفيّة إضافة حسابات المستخدمين، تعديلها، تعليقها أو حذفها. ستحتاج أيضا خلال إدارة الخادوم لمعرفة كيف تمنح المستخدمين الصّلاحيات الضروريّة على الملفات، المجلّدات وموارد النّظام الأخرى حتى يتمكنوا من إنجاز مهامهم.
إدارة حسابات المستخدمين
تحتاج حتى تتمكّن من إدارة المستخدمين أن تكون لديك صلاحيّات المدير الأعلى (الجذر root
). لذا سنبدأ بالانتقال إلى المستخدم الجذر بتنفيذ الأمر:
$ su - Password: Last login: Wed May 11 12:58:50 GMT 2016 on pts/0 [root@localhost ~]#
يُستخدَم الأمر su
للتبديل بين حسابات المستخدمين؛ وعند تمرير المعطى -
له فسينتقل للحساب الجذر بعد طلب كلمة السّر.
ملحوظة تشير العلامة #
أمام الأمر إلى أنه يُنفَّذ من الحساب الجذر.
إضافة مستخدم جديد
يُستخدَم الأمران التاليان لإضافة حساب مستخدِم جديد:
# adduser username # useradd username
حيثُ username
هو اسم الحساب الجديد.
ملحوظة 1: إن كانت لديك تجربة سابقة مع توزيعات دبيانيّة (أوبونتو مثلا) فـ adduser
هناك مختلف عنه هنا. الأمر adduser
في RHEL (والتوزيعات المبنيّة على ردهات عموما) هو مجرّد وصلة رمزيّة للأمر useradd
؛ بينما هو سكربت منفصل في دبيان؛ ولكنّه يعتمد على useradd
وأوامر أخرى.
ملحوظة 2: ستحتاج أولا لتعيين كلمة سرّ للحساب قبل التمكن من البدء في استخدامه (سنرى كيف ذلك بعد قليل).
ينفّذ النظام المهامّ التاليّة عند إضافة مستخدم جديد:
-
إنشاء مجلّد شخصي للمستخدِم (مبدئيا على المسار
home/username/
ما لم يُطلب منه غير ذلك). -
تُنسَخ الملفات
bash_logout.
وbash_profile.
وbashrc.
(وهي ملفات مخفيّة) إلى المجلّد الشخصي للمستخدِم. تُستعمَل هذه الملفات لضبط الإعدادات الخاصّة بجلسة Session المستخدم. - إنشاء مجلّد خاص بمسلَك بريد Mail spool المستخدِم.
- إنشاء مجموعة مستخدمين بنفس اسم الحساب وإضافته إليها.
ملحوظة: مسلك البريد هو ملفّ يخزّن رأسيات البريد (مثل عنوان المُرسِل، تاريخ التسليم، … إلخ) ومحتوياته. يوجد على المسار /var/spool/mail/
مجلّد فرعي لكلّ مستخدم على النّظام. يستخدم بعض عملاء البريد هذا المجلّد بينما لا يستخدمه البعض الآخر.
يُخزّن النظام معلومات عامّة عن جميع الحسابات في الملف etc/passwd/
. توجد في هذا الملفّ أسطُر يمثّل كل واحد منها سجلّا لحساب مستخدِم. يأخذ كلّ سطر الصّيغة التاليّة:
[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell]
السّطر مكوّن من حقول تفصل نقطتان :
بين كل حقلين.
-
يضمّ الحقل الأول
[username]
اسمَ الحساب. -
يشير الحقل الثاني
[x]
إلى أن الحساب محميّ بكلمة سرّ توجد معمّاةً Encrypted في الملفّ (etc/shadow/
). -
يوجد في الحقليْن الثالث والرابع (
[UID]
و[GID]
) على التوالي معرّف المستخدِم ومعرّف المجموعة الأوليّة Primary group التي ينتمي إليها. -
الحقل الخامس
[Comment]
هو تعليق حول الحساب؛ يوضع فيه عادة وصفٌ للحساب وعمله. -
يعرّف الحقل السادس
[Home directory]
المسار المُطلق لمجلد المستخدِم الشخصي. -
يحدّد الحقل السابع الأخير
[Default shell]
الصّدفة Shell التي تُسنَد للمستخدِم بعد ولوجه إلى النظام.
يوجد ملفّ آخر يشبه etc/passwd/
من المهمّ التعوّد عليه وهو etc/group/
. يحتفظ النظام في هذا الملفّ بمعلومات مجموعات المستخدِمين، سطر لكلّ مجموعة. صيغة السّطر هي كالتالي:
[Group name]:[Group password]:[GID]:[Group members]
-
يحدّد الحقل الأول
[Group name]
اسم المجموعة. -
يُخصّص الحقل الثاني
[Group password]
لكلمة سر المجموعة في حال وجودها. توجد غالبا علامةx
في هذا الحقل دلالةً على عدم وجود كلمة سر. -
الحقل الثالث
[GID]
مطابق للحقل الرابع[GID]
في ملفetc/passwd
. -
يقدّم الحقل الرابع
[Group members]
لائحة بالمستخدمين المنضوين تحت هذه المجموعة. يفصل بين أسماء الحسابات بفاصلة,
.
تعيين كلمة سر للمستخدم
يبقى الحساب المنشَأ حديثا بالأمر useradd
(أو adduser
) معطّلا إلى أن نعيّن له كلمة سرّ؛ نستخدم أمر passwd
لهذا الغرض:
# passwd username
سيُطلب منك إدخال كلمة سر للحساب ثم تكرارها؛ كما في المثال التالي:
# useradd academy # passwd academy Changing password for user academy. New password: Retype new password: passwd: all authentication tokens updated successfully.
طلب تغيير كلمة السر عند أول دخول
يدير الأمر chage
معلومات تاريخ الحساب مثل عدد الأيام التي يجب بعدها تغيير كلمة سرّ الحساب وتاريخ آخر تغيير لكلمة السّر. يحدّد الخيّار d-
، إذا ذُكر بعده تاريخٌ بالصيغة YYYY-MM-DD
، تاريخ آخر مرة غُيِّرت فيها كلمة السّر؛ أما إذا ذكر بعده عدد فيفترض أن آخر تعديل تمّ بعد تاريخ 1 يناير 1970 بهذا العدد من الأيام (chage -d 1
تعني أن التعديل كان يوم 2 يناير 1970، chage -d 2
تعني أن التعديل كان يوم 3 يناير 1970 وهكذا). يفرض تمريرُ القيمة 0
للخيّار d-
مع الأمر chage
على المستخدِم تغيير كلمة السّر بعد الولوج إلى الحساب.
نعدّل في المثال التالي تاريخ التعديل الأخير لكلمة السّر ثم نحاول الدخول إلى الحساب academy
بكلمة السّر التي عيّناها في الفقرة السابقة (اخرج من الحساب الجذر إن سبق لك تسجيل الدّخول به؛ واستخدم حسابا عاديًّا بعد تنفيذ الأمر chage
):
# chage -d 0 academy # exit logout $ su academy Password: You are required to change your password immediately (root enforced) Changing password for academy. (current) UNIX password: New password: Retype new password: $
ننتقل بالأمر su
لاستخدام اسم الحساب الممرّر له (academy
في حالتنا)؛ ستُطلب منا كلمة السّر التي عيناها سابق ثم بعد الولوج تظهر رسالة تطلب منا تعديل كلمة السّر. ندخل كلمة السر الحالية للاستمرار ثم نختار كلمة سر جديدة ونكرّرها.
التعديل على الحساب
يمكن بعد إضافة مستخدم تعديل حسابه في أي وقت بالأمر usermod
:
# usermod options username
تحدّد خياراتٌ options
سلوك الأمر و username
الحساب الذي تُطبَّق عليه.
تحديد تاريخ انتهاء صلاحيّة لحساب مستخدِم
يتيح خيّار expiredate--
عند استخدامه مع الأمر usermod
تحديد تاريخ يُعطَّل بعده الحساب.
ننتقل في المثال التالي إلى استخدام الحساب الإداري (الجذر root
)، ثم ننشئ حسابا جديدا باسم academy1
:
$ su - Password: # useradd academy1
يمكننا إظهار معلومات تاريخ الحساب بالأمر التالي:
# chage -l academy1 Last password change : May 11, 2016 Password expires : never Password inactive : never Account expires : never Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
نلاحظ أن قيمة Account expires
( انتهاء صلاحيّة الحساب) هي never
أي أنه لا يوجد تاريخ انتهاء صلاحيّة. نستخدم الخيار expiredate--
مع الأمر usermod
لتحديد تاريخ انتهاء صلاحية للحساب academy1
ثم نعرض معلومات عمر الحساب من جديد:
# usermod --expiredate=2016-06-01 academy1 # chage -l academy1 Last password change : May 11, 2016 Password expires : never Password inactive : never Account expires : Jun 01, 2016 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7
لاحظ تغيّر قيمة Account expires
.
إضافة مستخدم إلى مجموعة ثانية
يُستخدم الخياران aG-
مع الأمر usermod
لإضافة مستخدم موجود إلى مجموعة أخرى غير المجموعة الأوليّة. ننشئ في المثال التالي مجموعة باسم hsoub
ثم نضيف إليها المستخدم academy
:
# groupadd hsoub # usermod -aG hsoub academy
لاحظ أن اسمَ المجموعة يسبق اسم الحساب. يمكن التأكد من إضافة الحساب إلى المجموعة بعرض المجموعات التي ينتمي إليها الحساب academy
كالتالي:
# groups academy academy : academy hsoub
أي أن الحساب academy
ينتمي إلى المجموعتيْن academy
(المجموعة الأوليّة) وhsoub
.
حذف مستخدم من مجموعة
إن أردت حذف مستخدم من جميع المجموعات الثانويّة وإبقاء الأوليّة فقط فيمكن ذلك على النحو التالي:
# usermod -G "" academy # groups academy academy : academy
إن كان المستخدم عضوا في أكثر من مجموعة ثانويّة فيمكن حذفه من بعضها بذكر تلك التي ينتمي إليها فقط مع الخيّار G-
. مثلا ينتمي العضو academy
للمجموعات hsoub2
، hsoub1
وhsoub3
، ونريد حذفه من hsoub2
؛ ننفذ الأمر كالتالي:
# usermod -G hsoub1,hsoub3 academy
تعديل المسار المبدئي لمجلّد المستخدم أو الصّدفة المسندة إليه
استخدم الخيار d-
متبوعا بمسار تريده مع الأمر usermod
إن أردت تغيير مكان المجلّد الشّخصي للمستخدِم.
# usermod -d /home/test academy
نفس المبدأ مع الصّدفة المبدئية (bash
)؛ استخدم الخيار shell--
متبوعا بمسار صدفة أخرى (sh
مثلا):
# usermod --shell /bin/sh academy
قفل كلمة المرور
يمكن باستخدام الخيّار L-
مع الأمر usermod
قفل كلمة سر المستخدم وبالتالي منعه من الدخول إلى الحساب وتعطيله:
# usermod -L academy
إن جرّبت الآن الدخول إلى الحساب academy
(بعد الخروج من الحساب الجذر) فستظهر رسالة بوجود خطأ في عمليّة الاستيثاق:
$ su academy Password: su: Authentication failure
عد إلى الحساب الجذر واستخدم الخيّار U-
لإلغاء قفل كلمة المرور وتفعيل الحساب.
# usermod -U academy
يمكن الآن الدخول إلى الحساب academy
.
حذف مجموعة أو مستخدِم
استخدِم الأمر groupdel
لحذف مجموعة مستخدمين. بالنسبة لحساب مستخدم فالأمر المستخدَم هو userdel
(إضافة الخيار r-
تحذف أيضا محتوى المجلد الشخصي ومسلك البريد).
# groupdel group_name # userdel -r user_name
إدارة أذونات Permissions المستخدمين
يعدّ أمر ls
أحد أكثر الأوامر استخداما أثناء إدارة الخواديم. استخدم الخيّار l-
مع ls
لسرد قائمة مفصّلة بمحتويات مجلّد. يمكن أيضا تطبيق الأمر على ملفّ واحد لعرض تفاصيله. تظهر عند استخدام الأمر ls -l
خاصيّات الملفّ ومن بينها وضعه Mode الذي يوجد في بداية كل مُخرَج؛ وهو مكون من عشرة محارف.
يحدّد المحرف الأول نوع الملف ويمكن أن يأخذ إحدى القيم التالية:
-
-
: ملفّ عادي. -
d
: مجلّد. -
l
: وصلة رمزيّة. -
c
: جهاز طرفيّ محرفي Character device (يعالج تدفق البيانات محرفا محرفا؛ مثل الطرفيّة). -
b
: جهاز طرفيّ كتليّ Block device (يعالج البيانات على كتل، مثل وسائط التخزين).
تحدّد المحارف التسعة التاليّة الأذونات المطبّقة على الملفّ. تُقسّم المحارف التسعة إلى ثلاث مجموعات، تحوي كل مجموعة ثلاثة محارف. تمثّل المحارف الثلاثة أذونات الملف وهي، من اليسار إلى اليمين، القراءة (r
)، الكتابة (w
) والتنفيذ (x
). تشير المجموعات الثلاثة على التوالي (من اليسار إلى اليمين) إلى أذونات المستخدِم صاحب الملفّ (user, u
)، مجموعة المستخدمين مالكة الملفّ (Group, g
) وبقيّة المستخدمين (Other, o
). يظهر الحرف الموافق للإذن إذا كان الإذن معيّنا وإلا تظهر مكانه علامة -
.
راجع المقالات التاليّة لمزيد من التفاصيل عن أذونات المستخدمين:
يُستخدَم الأمر chmod
لتغيير أذونات الملفّ كالتالي:
# chmod new_mode file
حيث new_mode
رمز عددي أو عبارة تحدّد الأذون الجديدة.
يُحسَب الرمز العددي بناء على المكافئ العددي لكلّ إذن (4
للقراءة، 2
للكتابة و1
لإذن التنفيذ، و0
عند غياب الإذن) حيثُ تجمع المكافئات بالنسبة لصاحب الملفّ، المجموعة المالكة للملف وبقيّة المستخدمين.
توضّح الصورة أعلاه مثالا على حساب الرمز العددي للإذن: توجد ثلاثة مجموعات كلّ واحدة مكوّنة من ثلاثة محارف. تشير المجموعة الأولى ابتداءً من اليسار لأذون مالك الملفّ، الثانيّة لأذون المجموعة والثالثة لأذون بقيّة المستخدمين. تشير المحارف في كلّ مجموعة لإذن معيّن: القراءة (المحرف الأول في كلّ مجموعة من اليسار)، الكتابة (المحرف الثاني) والتنفيذ (المحرف الثالث). إذا كان الإذن موجودا يُشار إليه بالحرف الموافق (w
، r
أو x
) وإلا توضع مكانه علامة -
. للحصول على الرمز العددي نجمع المكافئات بالنسبة لكل مجموعة ثم نضعها معا بالترتيب المذكور: المستخدم صاحب الملف في اليسار، المجموعة في الوسط وبقية المستخدمين على اليمين.
نستخدم أمر chmod
لتعيين الأذون الجديدة. ننشئ في المثال التالي ملفّا باسم myfile
ثم نعرض معلوماته، نلاحظ أن الأذون هي:
rw-rw-r--
والرمز العددي الموافق لها هو 664
. ثم نستخدم أمر chmod
لتعيين الأذون الجديدة باستخدام الرمز 744
وفي الأخير نعرض معلومات الملفّ من جديد ونلاحظ التغيّر.
$ touch myfile $ ls -l myfile -rw-rw-r--. 1 academy academy 0 May 11 14:55 myfile $ chmod 744 myfile $ ls -l myfile -rwxr--r--. 1 academy academy 0 May 11 14:55 myfile
تعيين إذن لجميع المستخدمين
يمكنك جعل إذن على ملف متاحا لجميع المستخدمين (صاحب الملف، المجموعة والبقيّة) بالأمر chmod
. نفرض مثلا أن لديك سكربت تريد إتاحة إمكانية تنفيذه للجميع؛ استخدم الأمر chmod
كالتالي:
# chmod a+x script.sh
يُقرأ الأمر "امنح الإذن x
(التنفيذ) لجميع المستخدمين a
". يمكن أيضا استخدام نفس الطريقة مع المستخدم مالك الملف، المجموعة أو بقية المستخدمين:
-
امنح إذن الكتابة
w
للمستخدم صاحب الملفo
:
# chmod o+w script.sh
-
امنح إذن القراءة
r
للمجموعةg
:
# chmod g+r script.sh
-
امنح أذون القراءة
r
، الكتابةw
والتنفيذx
للمجموعة:
# chmod g+rwx script.sh
-
أما إذا أردنا نزع الإذن فنستخدم علامة
-
بدلا من+
كالتالي:
# chmod o-r script.sh
تغيير ملكية ملف
يظهر عند سرد ملفات مجلّد أو تفاصيل ملفّ (بأمر ls -l
) المستخدِم صاحب الملف والمجموعة التي ينتمي إليها. مثلا:
$ cd $ ls -la total 60 drwx------. 16 academy academy 4096 May 11 20:36 . drwxr-xr-x. 11 root root 4096 May 11 12:59 .. drwxr-xr-x. 2 academy academy 6 Apr 15 00:42 Desktop drwxr-xr-x. 2 academy academy 6 Apr 15 00:42 Documents drwxr-xr-x. 2 academy academy 6 Apr 15 00:42 Downloads drwxrwxr-x. 2 academy academy 6 Apr 27 20:51 folder drwxrwxr-x. 2 academy academy 38 Apr 29 17:08 links_folder drwxr-xr-x. 2 academy academy 6 Apr 15 00:42 Music -rwxr--r--. 1 academy academy 0 May 11 14:55 myfile drwxr-xr-x. 2 academy academy 6 Apr 15 00:42 Pictures drwxr-xr-x. 2 academy academy 6 Apr 15 00:42 Public drwxr-xr-x. 2 academy academy 6 Apr 15 00:42 Templates drwxr-xr-x. 2 academy academy 6 Apr 15 00:42 Videos
انتقلنا في المثال أعلاه إلى المجلّد الشخصي للمستخدم الحالي (بتنفيذ أمر cd
دون معطيات) ثم سردنا محتويات المجلّد بالأمر ls -la
. يطلُب الخيّار a-
من الأمر إظهار جميع المحتويات بما فيها الملفات المخفيّة (التي يبدأ اسمها بنقطة .
). يظهر اسم المستخدم مالك الملف في العمود الثالث واسم المجموعة في العمود الرابع (جميع الملفات الظاهرة في نتيجة الأمر تعود للمستخدم academy
والمجموعة academy
ما عدا المجلّد ..
الذي يشير إلى المجلّد الأعلى من المجلّد الحالي في البنية الشجرية والذي يملكه المستخدم والمجموعة root
).
نستخدم الأمر chown
لتغيير ملكيّة ملفّ. يمكن تغيير المستخدم المالك والمجموعة في نفس الوقت أو كلّ على حدة.
- تغيير المستخدم المالك والمجموعة معا (لاحظ وجود النقطتين في الأمر):
# chown user:group file
- تغيير المستخدم المالك دون تغيير المجموعة:
# chown user: file
- تغيير المجموعة المالكة دون تغيير المستخدِم:
# chown :group file
نسخ أذون ملف وتطبيقها على آخر
إن أردت جعل أذون ملف مطابقة تماما لأذون ملفّ آخر فيمكنك استخدام الخيّار reference--
مع الأمر chown
على النحو التالي:
# chown --reference=ref_file file
حيث ref_file
هو الملف المرجِع وfile
الملف الذي تريد نسخ الأذون إليه. يؤدي الأمر أيضا إلى تغييرملكيّة الملف file
.
إعداد الخيار الخاص بضبط معرف المجموعة setgid
صُمِّم خيار setgid
لإتاحة إمكانية الوصول إلى ملفّ بصلاحيات مجموعة المستخدمين المالكة للملف بغضّ النظر عن المستخدِم الذي يصل إليه فعلا. يمكن أن يُقرأ الأمر على النحو التالي : “اجعل الوصول إلى هذا الملف متاحا وفق أذونات المجموعة التي تملكه بغضّ النظر عن المستخدم الذي يحاول الوصول إليه”.
يُطبّق ضبط معرّف المجموعة على النحو التالي:
# chmod g+s file
أو بإضافة الرقم 2
أمام الرمز العددي للأذون:
# chmod 2750 file
نفترض أن الأذون على الملف file
هي 760
مما يعني أنه لا يُتاح إذن القراءة إلا للمستخدم مالك الملف أو المجموعة التي ينتمي إليها. إن حاول مستخدم غير المستخدم المالك ولا ينتمي للمجموعة قراءة محتوى الملف فلن يستطيع. إن ضبطنا خيار setgid
بإحدى الطريقتين المذكورتين (g+s
أو 2760
) فسيمكن لأي مستخدم مهما كان قراءة الملف، لأنه أصبح يستفيد من صلاحيات المجموعة حتى ولو لم يكن واحدا منها؛ ولكنه لن يستطيع تنفيذ الملف لأن المجموعة لا تملك هذا الإذن.
راجع مقال شرح أذونات الملفات (File permissions) على لينكس ويونكس للمزيد عن معرّف المجموعة (ومعرّف المستخدم).
خاتمة
تتطلّب إدارة خواديم RHEL معرفة عميقة بأذون الملفات وصلاحيات المستخدمين والمجموعات؛ لذا تأكد من تطبيق المعلومات الواردة في هذا المقال جيّدا حتى تستوعبها. إن وجدت استشكالات فيمكنك التعليق على هذا الدّرس أو استخدام قسم الأسئلة للحصول على المساعدة.
ترجمة -وبتصرّف- للمقال RHCSA Series: How to Manage Users and Groups in RHEL 7 – Part 3 لصاحبه Gabriel Cánepa.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.