• إستعراض ملفات المساعدة بواسطة الأمر (man):
يوجد في نظام اليونكس ما يعرف ب (manual) وهو يعتبر صفحات مساعدة لمستخدمي النظام وهذه الملفات تكون لكل ما يتعلق بالنظام . وقد كتب هذه الملفات المبرمجين الذين قاموا ببرمجة النظام حتى تساعد المستخدمين على الإلمام بكل شيء في النظام. ويمكن أن يتم إستعراض هذه الصفحات من خلال طباعة الأمر (man) من خلال سطر الأوامر وليكن مثلاً أننا نريد أن نتعرف أكثر على أمر تغيير الباسورد الذي تطرقنا إليها في درس سابق عندها ينبغي علينا أن نطبع الأمر التالي على سطر الأوامر:
bash-2.05$ man passwd
PASSWD(1) USER COMMANDS PASSWD(1)
NAME
chfn, chsh, passwd - change password file information
SYNOPSIS
passwd [ -d ] [ -o ] [ name ]
chsh [ -s shell ] [ name ]
chsh [ options ] [ name ] [ shell ]
DESCRIPTION
This program can change either the user's password, the
login shell, or finger information, depending on how it is
invoked.
When run as passwd, the program will ask for the user's
current password and the for the new one. The new password
must be typed twice to forestall mistakes. The *****-user
is not prompted for the old password.
--More—(15%)
هنا لابد أن نلاحظ أن نظام اليونكس حساس بحالة الحروف (case sensitive) أي أن (man) تختلف عن (MAN) تخلتف أيضاً عن (mAn). في الأمر السابق نلاحظ أنه قد تكون من جزئين فقط وهي الجزء (command) والجزء (argument) حيث أن ال(command = man) بينما ال(argument = passwd) ولاحظ أنه وبالرغم من أن (passwd) هو أمر من أوامر اليونكس إلا أنه لم يتم تنفيذه وذلك لأن الأمر (passwd) هنا قد جاء في موضع ال (argument). وكما قلنا في هيئة الأوامر أن الجزء (argument) هو الجزء الذي يتنفذ عليه الأمر تحقق ذلك من خلال أنه عندما طبعنا الأمر السابق فإننا أخبرنا النظام أن يتوجب عليه أن يزودنا بملفات المساعدة الخاصة بهذا الأمر. ونلاحظ في الشكل السابق أنه قد تم عرض فقط جزء من ملف صفحة المساعدة لهذا الأمر حيث أنه يتم عرض فقط ملء شاشة لديك في كل مرة حيث أننا سنجد في نهاية كل شاشة نسبة مئوية حيث هذه النسبة تبين نسبة الجزء الذي تم فتحه من ملف المساعدة بالنسبة لملف المساعد ة كاملاً. ففي الشكل السابق أننا نجد النسبة (15%) ومعنى ذلك أن الجزء الذي تم عرضه في هذه الشاشة تساوي نسبته (15%) بالنسبة لملف المساعدة بأكمله.وفي بعض أنظمة اليونكس لا يتم ذكر هذه النسبة وإنما يتم ذكر عدد الأسطر المطبوعة بالنسبة للعدد الكلي لصفحات المساعدة لهذا الأمر.
والسؤال هنا هو كيف يتم التنقل بين صفحات المساعدة (manual)؟
نستطيع أن نتنقل في صفحات المساعدة بكل سهولة ويسر وذلك من خلال الجدول التالي:
المفتاح المستخدم الوظيفة
مفتاح المسافة (space bar) يقوم هذا الزر بنقلك صفحة واحدة فقط للأمام في كل مرة يتم فيها ضغطه.
زر الإدخال (return) وهذا المفتاح يقوم بنقلك سطر واحد فقط للأمام في كل مرة يتم الضغط عليه أي أنه إذا تم ضغطه ثلاث مرات متتالية فستنتقل ثلاثة أسطر للإمام .
الحرف ( وهو إختصار لكلمة (back).أي تعني العودة. وظيفة هذا الحرف هو أنه يقوم بنقلك شاشة واحدة فقط للخلف في كل مرة يتم الضغط عليه.
الحرف (f) وهو إختصار للكلمة (forward) أي تعني الأمام. وظيفة هذا الحرف أنه يقوم بنقلك شاشة واحدة فقط للأمام في كل مرة يتم الضغط عليه.
(/string)
ونعني هنا ب (string) أي كلمة ما والفائدة منه أنه مثلاً تريد أن تبحث عن كلمة معينة في صفحات المساعدة وليكن مثلاً أننا بعد تطبيق الأمر (man passwd) نريد أن نبحث في محتويات الصفحة عن الكلمة (password) عندها يجب أن نكتب ونحن بداخل صفحات المساعدة (/password).
الحرف (n) وهي إختصار لكلمة (next). وهذا المفتاح يستخدم فقط بعد التنفيذ الخيار السابق والفائدة منه أنه يقوم فقط بنقلك إلى الكملة الذي تلي هذه الكلمة .
الحرف (q) وهي إختصار للكلمة (quit). وهذا المفتاح يقوم بإخراجك من ملف المساعدة والعودة بك إلى سطر الأوامر.
الحرف (h) وهذا الحرف يقوم بإعطائك كامل الخيارات المتاحة لديك لكي تستخدمها في ملف المساعدة.
• فهم الأجزاء المهمة في ملفات المساعدة:
يمكننا تقسيم ملفات المساعدة إلى أقسام وذلك لغرض تسهيل فهمها:
1. القسم الأول يوضحه الجزء التالي من ملف المساعدة:
PASSWD(1) USER COMMANDS PASSWD(1)
حيث أن هذا الجزء يبين نوعية الملف الذي سألته عنه وهنا يوضح لنا ملف المساعدة أن ما سألت عنه هو عبارة عن أمر من أوامر النظام وذلك لأنه كتب(user command).
2. القسم الثاني يوضحه الجزء التالي من ملف المساعدة:
NAME
chfn, chsh, passwd - change password file information
وهذا الجزء هو عبارة عن الوظيفة الرئيسة لهذا الأمر حيث هنا يوضح لنا أنه يغير في ملف الباسورد.
3. القسم الثالث يمثله الجزء التالي:
SYNOPSIS
passwd [ -d ] [ -o ] [ name ]
chsh [ -s shell ] [ name ]
chsh [ options ] [ name ] [ shell ]
وهذا الجزء يعطي وصفاً مختصراً لكافة إستخدامات هذا الأمر.
4. القسم الرابع يمثله الجزء التالي:
DESCRIPTION
This program can change either the user's password, the
login shell, or finger information, depending on how it is
invoked.
الجزء (description) يعطي شرحاً مفصلاً عن كافة إستخدامات هذا الأمر وهذا الجزء يعتبر الجزء الأكبر في ملفات المساعدة.
5. ويوجد أيضاً في صفحات المساعدة التي تحتوي أوامرها على العديد من الخيارات على القسم (options) حيث يحتوي هذا القسم على جميع إلإختيارات المتاحة لهذا الأمر. وفي مثالنا هنا لا يوجد هذا القسم وذلك لأن هذا الأمر لايوجد له خيارات.
6. القسم السادس ويمثله الجزء التالي من ملف المساعدة:
FILES
/etc/passwd The list of user accounts
/etc/shadow The file containing the encrypted password
/etc/shells The list of approved shells
/usr/dict/words List of ``obvious'' words
Robert Morris and Ken Thompson, Unix password security
ولاحظ أن هذا القسم غير موجود في جميع ملفات المساعدة وإنما يتواجد فط في حال إذا كان هذا الأمر يتعلق بأحد ملفات النظام.
7. القسم السابع ويمثله الجزء التالي من ملف المساعدة:
SEE ALSO
login(1), finger(1), crypt(3), kg_pwhash(3), passwd(5);
وهذا القسم هو عبارة عن مصادر أخرى بها معلومات متعلقة بهذا الأمر.
8. القسم الثامن والتاسع يمثله الجزء التالي من ملف المساعدة:
BUGS
Passwd doesn't know about the many security aspects of the
shadow password system.
Sun Release 4.1 Last change: August 19, 1994 2
PASSWD(1) USER COMMANDS PASSWD(1)
AUTHOR
Marcus Watts
وهذا الجزء يبين الأخطاء في هذا الأمر كما أنه يبين أيضاً اسم المبرمج الذي كتب هذا الأمر ،وهذين الجزئين لا يعتبران مهمة وذلك لخلوها من المعلومات التقنية.
• البحث في ملفات المساعدة بواسطة القسم:
لاحظنا فيما سبق عندما تطرقنا لأقسام ملفات المساعدة إلى الجزء التالي:
SEE ALSO
login(1), finger(1), crypt(3), kg_pwhash(3), passwd(5);
وكنا قد تكلمنا عن هذا الجزء أنه الجزء الذي يحتوي على معلومات إضافية متعلقة بملف المساعدة لهذا الأمر. هنا سنتعلم كيف بإمكاننا البحث في هذه الأقسام بواسطة اسم ورقم القسم باستخدام الأمر (man). لكي نقوم بذلك لاحظ معي التالي:
SEE ALSO
login(1), finger(1), crypt(3), kg_pwhash(3), passwd(5);
في المثال السابق نلاحظ أنه يوجد العديد من الأقسام ولكل قسم له اسم ورقم .فمثلاً لو أردنا أن نرى القسم ذات الاسم (login) نلاحظ أن اسم هذا القسم هو (login) أما رقم القسم فهو (1) لذلك يتوجب عليك عندما تريد أن تبحث بأحد الأقسام أن تذكر اسم القسم ورقمه. ونستطيع استعراض ملفات المساعدة بواسطة القسم بواسطة الأمر (man) بالطريقة التالية.
bash-2.05$ man 1 login
LOGIN(1) USER COMMANDS LOGIN(1)
NAME
login - Begin session on the system
SYNOPSIS
login [ username [ environmental-variables ] ]
DESCRIPTION
login is used to establish a new session with the system.
It is normally invoked automatically by responding to the
login: prompt on the user's terminal. login may be special
to the shell and may not be invoked as a sub-process. Typi-
cally, login is treated by the shell as exec login which
causes the user to exit from the current shell. Attempting
to execute login from any shell but the login shell will
produce an error message.
نلاحظ هنا أنه قد تم عرض ملفات المساعدة الخاصة بالأمر (login) ويمكننا أن نعطي صورة عامة لهذا الأمر وهي كالتالي:
bash-2.05$ اسم القسم رقم القسم الأمر
حيث أن ( الأمر =man) و (رقم القسم = 1) و (اسم القسم = login).
في نظام اللينوكس (Linux) يتم تنفيذ هذا الأمر بواسطة الخيار (S) لاحظ أن الحرف هو حرف كبير وسيصبح شكل الأمر هو :
bash-2.05$ man –S 1 login
• إستخدام الخيار (k) مع الأمر (man) للبحث في ملفات المساعدة بواسطة الكلمة (keyword):
وهذا الخيار في الحقيقة مفيد جداً وخاصةً للأشخاص الذين ينسون كثيراً حيث أن مع هذا الخيار لو كنت فقط تتذكر جزء بسيط من الأمر الذي تريده وأقصد بجزء بسيط أي عدد من حروف الأمر مثلاً الأمر (passwd) لو لم نتذكر إلا الجزء (pass) بالطبع لو طلبنا ملفات المساعدة لن يكون هناك ملفات مساعدة لهذا الأمر وذلك لأنه ليس من أوامر النظام لذلك الخيار (k) هنا يفي بالغرض حيث أن بالإمكان البحث بواسطته في ملفات المساعدة في النظام عن أي أمر يكون فيه هذه الحروف وسيصبح شكل الأمر هو :
bash-2.05$ man –k pass
لو تلاحظ خرج الأمر السابق الغلاف أعطاك جميع الكلمات التي تحتوي على هذا التسلسل من الأحرف. لاحظ ملف الخرج المرفق.
• إستخدام الأمر (whatis):
هذا الأمر يفيد في أنه يعطي فقط الجزء (NAME) من أجزاء ملف المساعدة أي أنه يعطي وصفاً مختصراً لعمل هذا الأمر ويمكننا تنفيذه بالصورة:
bash-2.05$ whatis passwd
لاحظ ملف الخرج المرفق مع الدرس.
• تمارين:
• ماهي الهيئة العامة للأوامر في نظام اليونكس؟
• ماهو ناتج تنفيذ الأوامر التالية:
1. bash-2.05$ MAN passwd
2. bash-2.05$ man PASSWD
• ما هي الهيئة العامة لاستعراض ملفات المساعدة بواسطة القسم وكذلك الكلمة (keyword)؟
• أي جزء من ملف المساعدة يظهره الأمر (whatis)؟
لكل ملف في لينوكس مالك ينتمي إلى مجموعة ما ، و عادة يكون مالك الملف هو الشخص الذي أنشأه.
افتراضيا كل مستخدم ينتمي لمجموعة ، و كل الملفات المنشأة بواسطة ذلك المستخدم توضع تلقائيا في مجموعته.
هناك ثلاث صلاحيات في لينوكس للمستخدمين ممكن تخصيصها للملفات:
1- read قراءة.
2- write كتابة.
3- execute تنفيذ.
صلاحية القراءة تسمح للمستخدم بقراءة محتويات الملف.
أما صلاحية الكتابة فتسمح للمستخدم بعمل تغييرات على الملف و حتى حذفه.
أما صلاحية التنفيذ فتسمح للمستخدم بتشغيل الملف إذا كان عبارة عن برنامج، أما إذا كان ملفا نصيا فإن صلاحية التنفيذ لن تعمل معه.
يمكن تخصيص نفس الصلاحيات للمجلدات و لكن مع اختلاف معانيها، فصلاحية القراءة تسمح للمستخدم بسرد محتويات المجلد، بينما صلاحية الكتابة تسمح للمستخدم بإضافة ملفات إلى المجلد أو حذفها منه، بينما تسمح صلاحية التنفيذ للمستخدم بسرد المعلومات المرتبطة بالملفات في المجلد.
عندما تنشئ ملفا أو مجلدا فإن نظام لينوكس يعطيك بعض الصلاحيات بشكل افتراضي ، فمثلا عندما تنشئ ملفا فإنك تحصل على صلاحيات القراءة و الكتابة لذلك الملف، أما باقي المستخدمين فسيحصلون على صلاحية القراءة فقط لذلك الملف.
يتم إعطاء الصلاحيات لثلاثة أنواع من مجموعات المستخدمين كما يلي:
1- owner (المالك) و هو المستخدم الذي يملك الملف أو المجلد.
2- group (مجموعة) و هي المجموعة التي تم تخصيصها للملف أو المجلد.
3- other (آخر) و ينتمي لها كل المستخدمين في النظام و لكنهم لا يملكون الملف و ليسوا أعضاء في المجموعة.
هذه المجموعات الثلاث تعرف بمستويات الصلاحية levels of permission.
يسمح مستوى المجموعة للمستخدمين الذين يعملون في نفس المجال بالوصول إلى نفس الملفات و استخدامها.
يستطيع المستخدمون الانضمام إلى أكثر من مجموعة في نفس الوقت، كما تستطيع في أي وقت تغيير المجموعة المرتبطة بملف أو مجلد معين.
لننظر إلى الملف meeting الذي أنشأه المستخدم Khalid. سنستخدم الأمر ls –l لسرد معلومات عن الملفات و سنلاحظ المعلومات التالية المرتبطة بالملف meeting:
rw-rw-r-- 1 khalid friend 114 Aug 5 11:12 meetin-
يمثل khalid اسم المستخدم بينما يمثل friend اسم المجموعة التي ينتمي إليها.
ما يهمنا الآن معلومات الصلاحية التي تظهر في البداية:
--rw-rw-r-
يمكن تقسيم مجموعة الأحرف السابقة إلى 4 أجزاء :
الرمز الأول يشير إلى النوع (ملف أو مجلد)،حيث يشير الرمز - إلى ملف ،أما d فتشير إلى مجلد و يشير الرمز l إلى link أي وصلة أو اختصار.
الجزء الثاني يتكون من الرموز الثلاثة التالية : -rw و تشير إلى مستوى المالك.
الجزء الثالث يتكون من الرموز الثلاثة التالية : -rw و تشير إلى مستوى المجموعة.
الجزء الرابع يتكون من الرموز الثلاثة التالية : --r و تشير إلى مستوى الآخر.
يشير الرمز r إلى صلاحية القراءة بينما يشير الرمز w إلى صلاحية الكتابة بينما يشير استخدام الرمز - إلى منع الصلاحية أما الرمز x في حالة وجوده فيشير إلى صلاحية التنفيذ.
نستنتج مما سبق أن الملف النصي meeting يملك صلاحيات القراءة و الكتابة لكل من مستوى المالك و المجموعة بينما يملك صلاحية القراءة فقط لمستوى الآخر.
لننظر إلى ملف آخر و هو program.exe سنجد أن معلومات الصلاحيات له كما يلي:
rwxr-xr-x-
و هذا يعني أن هذا الملف التنفيذي يملك صلاحية القراءة و الكتابة و التنفيذ لمستوى المالك بينما يملك صلاحية القراءة و التنفيذ لكل من مستوى المجموعة و الآخر.
يسمح لك لينوكس بتغيير الصلاحيات المرتبطة بملف أو مجلد معين باستخدام الأمر : chmod و هو اختصار ل change mode.
يكتب الأمر على النحو التالي لإضافة صلاحية:
chmod level+permission filename
و لإزالة الصلاحية تستبدل إشارة + بإشارة - ، و يتم التعبير عن المستوى level باختصارات كما يلي:
1- يعبر عن المستوى owner بالاختصار u.
2- يعبر عن المستوى group بالاختصار g.
3- يعبر عن المستوى other بالاختصار o.
أما الصلاحيات فيعبر عنها بالاختصارات التالية:
1- يعبر عن الصلاحية read بالاختصار r.
2- يعبر عن الصلاحية write بالاختصار w.
3- يعبر عن الصلاحية execute بالاختصار x.
فمثلا لتغيير الصلاحيات المرتبطة بالملف program.exe بحيث يتمكن المستخدمون في مستوى المجموعة من الكتابة عليه سنحتاج لمنح صلاحية الكتابة لمستوى المجموعة كما يلي:
chmod g+w program.exe
و هكذا إذا نفذنا الأمر : ls -l لنرى مفعول التغيير على الملف program.exe سنرى معلومات الصلاحية المرتبطة به كما يلي:
rwxrwxr-x-
كما أنك تستطيع منح عدة صلاحيات لمستوى ما باستخدام أمر واحد، فإذا افترضنا أن لديك ملف برنامج يسمى update ، و يمتلك مستخدمو مستوى المجموعة صلاحية القراءة فقط ، و تود منحهم صلاحية الكتابة و التنفيذ فإنك تستطيع عمل ذلك بكتابة الأمر كما يلي:
chmod g+wx update
كما تستطيع منح عدة مستويات نفس الصلاحية باستخدام أمر واحد ، فمثلا لمنح صلاحية الكتابة لكل من مستوى المجموعة و الآخر لملف اسمه prophet نكتب الأمر كما يلي:
chmod go+w prophet
أما إذا استخدمت الرمز = مع الأمر chmod فإنه سيتم منح الصلاحيات المحددة مع الأمر و إزالة أي صلاحيات أخرى غير محددة، فمثلا إذا افترضنا أن لديك ملفا اسمه report و معلومات الصلاحية له كما يلي:
rw---x--x-
و أردت منح مستوى المجموعة و الآخر صلاحيات القراءة و الكتابة فقط و إزالة صلاحية التنفيذ نكتب الأمر كما يلي:
chmod go=rw report
و ستجد أن معلومات الصلاحية أصبحت كما يلي:
-rw-rw-rw-
و هناك طريقة أخرى للتعامل مع الأمر chmod باستخدام الأرقام كما في الجدول التالي
بينما يعبر عن الصلاحية الممنوعة عن مستوى ما بالرقم 0.
لمنح صلاحية فإنك تقوم بجمع القيم الرقمية لصلاحيات كل مستوى ، فمثلا إذا رغبت بمنح الملف program الصلاحيات التالية :
rwxr-x--x-
فإنك تستخدم المعادلة التالية:
4+2+1 4+0+1 0+0+1
7 5 1
و نكتب الأمر كما يلي:
chmod 751 program
و فيما يلي مثال آخر:
لنفترض أن لديك ملف اسمه data.exe و تود منح جميع المستويات صلاحية القراءة و التنفيذ، فإنك تستخدم المعادلة التالية:
4+0+1 4+0+1 4+0+1
5 5 5
و نكتب الأمر كما يلي:
chmod 555 data.exe
و هناك أمر آخر يقوم بنفس المهمة و باستخدام الأرقام فقط و لكن بشكل عكسي ، هذا الأمر هو unmask و يتم منح الصلاحية بطرح مجموع القيم الرقمية لصلاحيات كل مستوى من العدد 7 (و الذي يمثل المجموع الكلي للصلاحيات 4+2+1) ، فمثلا إذا افترضنا أن لديك ملف اسمه king و تود منحه صلاحية القراءة و الكتابة لمستوى المالك و صلاحية القراءة فقط لمستوى المجموعة و الآخر فإننا نستخدم المعادلة التالية:
7-(4+2) 7-(4) 7-(4)
1 3 3
و يكتب الأمر كما يلي:
unmask 133 king
تستطيع باستخدام الأمر chgrp تغيير المجموعة التي لديها حق الوصول لملف أو مجلد معين، مع التنبيه إلى أن هذا الأمر لا يستطيع تشغيله إلا مدير النظام root، فمثلا إذا كان لديك ملف اسمه build و أردت أن تغير المجموعة التي لديها حق الوصول إليه إلى مجموعة builders فإنك تكتب الأمر التالي:
chgrp builders build
أما إذا رغبت بتغيير مالك أي ملف فإنك تستخدم الأمر chown ، و يستخدم من قبل root فقط، فلتغيير مالك الملف sun إلى المستخدم walid نكتب الأمر كما يلي:
chown walid sun
كما يمكنك باستخدام نفس الأمر السابق تغيير مالك الملف و المجموعة التي لديها حق الوصول إليها بأمر واحد كما في المثال التالي:
لتغيير مالك الملف sun من walid الى khalid و تغيير المجموعة من friend إلى brother نكتب الأمر كما يلي:
chown khalid.brother sun
يسمح لك نظام لينوكس الانتقال و التبديل بين المستخدمين دون الحاجة للخروج من النظام و الدخول مرة أخرى كمستخدم آخر و ذلك باستخدام الأمر su متبوعا باسم المستخدم الذي تود التبديل إليه ثم تضغط على Enter و سيطلب منك إدخال كلمة السر للمستخدم الجديد، فلانتقال إلى المستخدم khalid نكتب الأمر كما يلي:
su khalid
ثم نضغط على Enter و سيطالبنا النظام بإدخال كلمة المرور الخاصة بالمستخدم khalid ، أما للانتقال إلى مدير النظام root فنستطيع كتابة الأمر كما يلي:
su root
و من ثم ندخل كلمة المرور بعد الضغط على Enter و على العموم إذا كتبنا الأمر su بدون أي إضافات و ضغطنا على Enter فإننا أيضا سننتقل إلى مدير النظام بعد إدخال كلمة المرور له.
بهذا نكون قد انتهينا من درس اليوم و أرجو أن لا يكون قد أصابكم الملل من كل هذه الأوامر، و لكن هذا لمصلحتكم لمن يود إتقان العمل على لينوكس أما من يود فقط تشغيل البرامج و الإنترنت فبإمكانه تجاوز هذه الدروس
سنتناول في هذا الدرس إن شاء الله البنود التالية