إعـــــــلان

تقليص
لا يوجد إعلان حتى الآن.

دُروس في أساسيّات نظام FreeBSD

تقليص
هذا موضوع مثبت
X
X
  • تصفية - فلترة
  • الوقت
  • عرض
إلغاء تحديد الكل
مشاركات جديدة

  • [شرح] دُروس في أساسيّات نظام FreeBSD

    السّلام عليكم ورحمة الله وبركاته

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

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

    فيديو تعليمي عن كيفية تنصيب FreeBSD 8.x - اللغة عربي.
    http://www.linuxac.org/forum/showthread.php?45161

    تنصيب freebsd 7.0 (نقلا عن Br4v3-H34r7)
    http://www.linuxac.org/forum/showthread.php?17550

    وﻻ بأس بأن تعيد تنصيب النظام داخل الآلة الوهمية VirtualBox أكثر من مرة كي تتخلص من عقدة الجديد. فقط كي تتابع هذا الموضوع تأكّد من تفعيلك للـSSH و ﻻتنصّب أي حُزم أثناء مرحلة التنصيب.

    إذا كت ﻻتعرف إستخدام محرر النصوص vi فرجاء قراءة هذا الموضوع (هناك محرر آخر يأتي مع FreeBSD إسمه ee لكن لو تعلمت vi ستضمن أنك ستعمل على أي نظام Unix حيث أن vi متوفر على جميع تلك الأنظمة)

    أسماء بطاقات الشبكة و ifconfig وأسماء الأقراص


    في لينكس إعتدنا على أن تكون إسم بطاقة الشبكة eth0 و eth1 وكذلك lo للشبكة الداخليّة (أي الـlocalhost التي تتصل بها تطبيقات مثلاً قواعد البيانات وغيرها). إنظر لمخرجات ifconfig في لينكس :
    كود:
    [email protected]:~# ifconfig
    eth0      Link encap:Ethernet  HWaddr 00:26:9e:43:b3:33  
              UP BROADCAST MULTICAST  MTU:1500  Metric:1
              RX packets:0 errors:0 dropped:0 overruns:0 frame:0
              TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
              Interrupt:27 Base address:0xc000 
    
    lo        Link encap:Local Loopback  
              inet addr:127.0.0.1  Mask:255.0.0.0
              inet6 addr: ::1/128 Scope:Host
              UP LOOPBACK RUNNING  MTU:16436  Metric:1
              RX packets:26 errors:0 dropped:0 overruns:0 frame:0
              TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:0 
              RX bytes:1540 (1.5 KiB)  TX bytes:1540 (1.5 KiB)
    [email protected]:~#
    في FreeBSD الإسم مُختلف, فـethX ستكون emX. أي مثلاً eth0 ستكون em0 و lo ستكون lo0. إنظر لمخرجات ifconfig في FreeBSD :

    كود:
    FreeBSD# ifconfig
    em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:0c:29:93:b8:69
        inet 192.168.43.133 netmask 0xffffff00 broadcast 192.168.43.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
    lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=3<RXCSUM,TXCSUM>
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x4 
        inet6 ::1 prefixlen 128 
        inet 127.0.0.1 netmask 0xff000000 
        nd6 options=3<PERFORMNUD,ACCEPT_RTADV>
    FreeBSD#
    أيضاً أسماء الأقراص تختلف, ففي لينكس أوّل قرص sda1 أما في FreeBSD فسيكون ad0s1a. ضع هذه المعلومتين في بالك مُستقبلاً.


    السماح للجذر بالإتّصال عبر الـSSH :


    قدّ يلاحظ من يستخدم FreeBSD لأوّل مرّة أن الدخول لحساب الجذر عن طريق الـSSH غير مسموح. السبب أنّ الدخول بهذا الحساب مُعطّل بشكل قياسي من إعدادات خادم الـSSH. في الخوادم العاملة على الشبكة ليس فكرة ذكيّة أن تسمح للجذر بالدخول عن طريق الـSSH. يُمكنك إضافة مُستخدم أثناء تنصيّب النظام وعن طريق su تنتقل للجذر أو إستخدام الطريق الأكثر أماناً sudo وسنذكرها لاحقاً. لكن لأغراض تعليميّة وكي نعرف مسارات الخدمات وكيفيّة بدءها سنُفّعله في الوقت الحالي وذلك بالتعديّل في الملف sshd_config الخاصّ بإعدادات الخادم بالتحديد عن طريق تعديل PermitRootLogin (تعنيّ إسمح للمستخدم الجذر) إلى yes . إنظر هُنا لقيّمها :
    كود:
    FreeBSD# grep 'Root' /etc/ssh/sshd_config
    #PermitRootLogin no
    FreeBSD#
    سنجدها مبدوءة بـ# أي تعليق سيتمّ تجاهله أيضاً نرى أنّ قيمتها الإفتراضية no. إذاً لنُحرر الملف :
    كود:
    FreeBSD# vi /etc/ssh/sshd_config
    نزيل الـ# ونُعدّلها إلى yes. بعد التعديل :
    كود:
    FreeBSD# grep 'Root' /etc/ssh/sshd_config
    PermitRootLogin yes
    FreeBSD#
    الآن نحتاج لتحميل هذه الإعدادات الجديد للخادم. جميّع السكربتات المسؤلة عن تشغيل الخدمات موجدة في المسار:
    كود:
    /etc/rc.d/
    إنظر هُنا :
    كود:
    FreeBSD# ls /etc/rc.d/ | more
    وستظهر لكّ جميع السكربتات المسؤلة عن بدء الخدمات. غالباً ماتبدأ السكربتات بإسم الخدمة مثلاً ssh ينتهي بـd دلالة على deamon وتعني خدمة عاملة في الخلفية (24 ساعة شغالة ). هل تُريد أن ترى محتويات السكربت sshd, فقط إكتب :
    كود:
    FreeBSD# more /etc/rc.d/sshd
    وستظهر لك. يُمكنك أن تبدأ الخدمة بكتابة start هكذا:
    كود:
    FreeBSD# /etc/rc.d/sshd start
    أو تُوقفها بكتابة stop وتعني أوقف هكذا :
    كود:
    FreeBSD# /etc/rc.d/sshd stop
    أو تُعيد تشغيلها عن طريق كتابة restart وتعني أعد التشغيل (إيقاف ثمّ تشغيل) :
    كود:
    FreeBSD# /etc/rc.d/sshd restart
    لكنّ إذا قُمت مستقبلاً بعمل تعديل في إعدادات الـSSH لا تقمّ بإعادة التشغيل, لأنه لو كان هُناك خطأ أثناء مرحلة تشغيل البرنامج فلن يعمل وقد تُصبح مُشكلة ولن تستطيع الإتّصال بالخادم. لذا هناك خيار أفضل إسمه reload ويعني أعد تحميل الإعدادات فقط:
    كود:
    FreeBSD# /etc/rc.d/sshd reload
    FreeBSD#
    إذا كان هناك خطأ فلن يتمّ تحميلها وسيمكنك حينها تصحيح الخطأ.

    تغيير رسالة الدخول :


    أثناء دُخولك للحساب ستلاحظ رسالة ترحيبية كهذه :
    كود:
    [email protected]:~$ ssh [email protected] 
    Password: **********
    Last login: Sun Sep  4 18:47:52 2011 from 192.168.43.1
    Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.
    
    FreeBSD 8.2-RELEASE (GENERIC) #0: Fri Feb 18 02:24:46 UTC 2011
    
    Welcome to FreeBSD!
    
    Before seeking technical support, please use the following resources:
    
    o  Security advisories and updated errata information for all releases are
       at http://www.FreeBSD.org/releases/ - always consult the ERRATA section
       for your release first as it's updated frequently.
    
    o  The Handbook and FAQ documents are at http://www.FreeBSD.org/ and,
       along with the mailing lists, can be searched by going to
       http://www.FreeBSD.org/search/.  If the doc distribution has
       been installed, they're also available formatted in /usr/share/doc.
    
    If you still have a question or problem, please take the output of
    `uname -a', along with any relevant error messages, and email it
    as a question to the [email protected] mailing list.  If you are
    unfamiliar with FreeBSD's directory layout, please refer to the hier(7)
    manual page.  If you are not familiar with manual pages, type `man man'.
    
    You may also use sysinstall(8) to re-enter the installation and
    configuration utility.  Edit /etc/motd to change this login announcement.
    
    FreeBSD#
    كما هو مُوضّح في الرسالة أنه يُمكنك إزالتها من المسار etc/motd/ يُمكنك إزالتها نهائياً هكذا :
    كود:
    FreeBSD# echo -n > /etc/motd
    الآن جرّب أن تخرج ثُم إدخل:
    كود:
    FreeBSD# logout 
    Connection to 192.168.43.133 closed.
    [email protected]:~$ ssh [email protected]
    Password: **********
    Last login: Sun Sep  4 18:48:30 2011 from 192.168.43.1
    Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.
    
    FreeBSD#
    إختفت الرسالة. يُمكنك عن طريق التعديل في ذلك الملف كتابة رسالة الخاص أو أيّ شيء تُريد.

    تعديل الـlog إلى ملف بدل الطرفيّة


    لو جرّبت الدخول قبل تفعيل دخول الجذر ستلاحظ في شاشة FreeBSD أن رسائل الخطأ تظهر مُباشر على الشاشة. السبب أن الخدمة المسؤلة عن سجلات الأحداث (الـlog) والمُسمّاة syslogd (تذكر syslog + d) والمسؤلة عن عرضّ سجلات الأحداث تقُوم بإرسال التحذيرات الجديّة مباشرة للشاشة بالتحديد /dev/console هو جهاز مثله مثل /dev/null التي نعرفها. هذا شيء جيّد لو كان الخادم بجانبنا (رغم أنه مزعج أحياناُ حيث يقاطع عملك). لكنّه غير جيّد عندما يكون الخادم بعيد عنك. لذا سنُعدّل على تصرّف النظام نجعله لايعرض الأخطاء على الشاشة بل يُرسلها لملف.

    أولأُ سنُنشئ ملف بالإسم console.log في المسار المخصص لسجّلات الأحداث :
    كود:
    /var/log/
    هكذا:
    كود:
    FreeBSD# touch /var/log/console.log
    سنُغيّر تصريح الملف كيّ ﻻيتمكّن أحد من الإطلاع عليه سوى الجذر:
    كود:
    FreeBSD# chmod 600 /var/log/console.log
    الآن سنُعدّل في إعدادات خدمة تسجيل الأحداث syslog من ملف إعدادها المُسمّى syslog.conf في المسار etc والذي توجد به أغلب ملفات إعداد خدمات النظام عن طريق تحرير ذلك الملف :
    كود:
    FreeBSD# vi /etc/syslog.conf
    وتغيير السطر المبدوء بـ:
    كود:
    *.err;kern.warning;auth.notice;mail.crit               /dev/console
    وهو الخاص بعرض التحذيرات على الشاشة. نغيير بإضافة # أي نُعطّله :
    كود:
    #*.err;kern.warning;auth.notice;mail.crit               /dev/console
    ولكيّ نجعل تسجيل الأحداث في الملف console.log نُزيل العلامة # الموجودة في بداية السطر :
    كود:
    #console.info                              /var/log/console.log
    لتُصبح :
    كود:
    console.info                              /var/log/console.log
    الآن نحن جاهزين لإعادة تشغيل الخدمة (يُمكنك إعادة تشغيلها دون قلق):
    كود:
    FreeBSD# /etc/rc.d/syslogd restart
    Stopping syslogd.
    Starting syslogd.
    FreeBSD#
    الآ تعمّد محاولة الدخول لحساب الجذر عن طريق الـSSH بكلمة مُرور خاطئة. ثُمّ لاحظ الشاشة, ستجد أنه لاتوجد هُناك رسائل أخطأ. بعدها قُم بالإطّلاع على ملفّنا:
    كود:
    FreeBSD# cat /var/log/console.log 
    Sep  4 19:19:36 FreeBSD kernel: Sep  4 19:19:36 FreeBSD syslogd: exiting on signal 15
    Sep  4 19:19:58 FreeBSD kernel: Sep  4 19:19:58 FreeBSD sshd[1269]: error: PAM:
            authentication error for root from 192.168.43.1
    Sep  4 19:20:36 FreeBSD kernel: Sep  4 19:20:04 FreeBSD last message repeated 2 times
    Sep  4 19:22:32 FreeBSD kernel: Sep  4 19:22:32 FreeBSD syslogd: exiting on signal 15
    FreeBSD#
    كُلّ شيء يعمل كما يجب والتحذيرات تُسجّل في ذلك الملف.

    تنصيب بعض البرامج الأساسيّة من القرص :


    القُرصّ الذي يأتي مع FreeBSD يحوي قائمة جميلة من البرامج الأساسيّة. سنعّلم تنصيب بعض البرامج منها ويُمكننا إستخدامه عن طريق الأداءة المسؤلة عن إعدادات النظام الأساسيّة sysinstall بعد إدخال قُرص الـDVD هكذا :
    كود:
    FreeBSD# sysinstall
    ستظهر لنا شاشة رُسوميّة نصّية. للذهاب للحُزم إذهب ,بنفس المفاتيح التي إستخدمتها حينما نصّبت النظام أوّل مرّة, إلى الإعدادات:
    كود:
    Configure
    ثُمّ إلى قسم الحُزم:
    كود:
    Packages
    الآن بما أننا سنُنصّبها من القرص سنختار CD/DVD. بعدها ستظهر لكّ عدّت تقيمات للحٌزم حسب نوعها مثلاً تطبيقات فكّ ضغك, حُزم أمنيّة إلخ. مثلاً عنّي سأختار من قائمة archivers حُزمة unzip وذلكّ لفك الضغط عن ملفات الـzip. يمكنك أيضاً إختيار أيضاً من نفس القائمة gtar وذلك كي تستطيع فكّ الضغط عن ملفات الـrar بإستخدام gtar وهو نفسه tar الذي إعتدنا عليه في لينكس. فذاك الخاص بـFreeBSD يختلف عنه (اشرت لهذا كي لا تخطئ تفقد بياناتك بسبب كتابة صيغة الضغط بطريقة غير صحيحية!) عُموماُ لأهمية موضوع الضغط وفكّة سنتحدّث عنه لاحقاً.

    أيضاً من قائمة perl5 والتي تضُمّ جميع مُتعلقات لغة بيرل, إخترت الحُزمة المبدوءة بـperl كيّ يُنصّب مُفسّر لغة بيرل. ستجد حُزم المكتبات الإضافيّة الخاصة ببيرل مبدوءة بـp5. ستجد في قائمة python قسم خاص ببايثون. حُزمة المُفسّر إسمها python26 والمكتبات مبدوءة بـpy26 في القسم ruby قسم برُوبي ستجد حُزمتين, المُفسّر ruby مع حُزمة خاصة بالوُصول لقاعدة بيانات Berkeley DB. نصّب اللغة والحُزم التي تحتاجها.

    من قائمة security هُناك حُزمتين مُهمّتين جداً, وهي gnupg و sudo. الأولى حُزمة لبرنامح GnuPG وهو برنامج تشفير PGP رائع. وُهامّ لضمان تشفيّر ملفاتك المُهمّة على الخادم في تشفيّر رسائلك. سبق أن كتبت كُتيّب بسيط يشرحه ستجده هُنا. الثاني sudo مُهمّ لقليل الدخول للحساب الجذر ويحميك من الأخطاء الغير مقصودة (يُذكرك دائما بأنك جذر من شان ماتجيب العيد مثل ماحصلي مرة لما حذفت الـ\ ).

    من قائمة shells والتي تحوي صدفتين إخترت الصدفة bash لأن الصدفة C-shell المُستخدمة في FreeBSD صدفة قديمة جداً وسنتحدث عن إعداد bash بعد قليل.

    من قائمة www والتي تحوي على الحُزم الخاصة بعالم الوُب, سنختار حُزمة apache كُيّ ننصب خادم الوُب apache لغرض معرفة طريقة تفعيل الخدمات الجديدة وأيضاً لحل مُشكلتين قد تواجهك معه وسنتحدّث عنها لاحقاً.

    تغيير صدفة مُستخدم :


    كما أشرت أنّ FreeBSD تستخدم الصدفة C-shell وهذه الصدفة غير عصرية P:. سُبدّلها بـbash. أولاً نعرف المسار الحقيقي لـbash على النظام وذلك عن طريق which :
    كود:
    FreeBSD# which bash
    /usr/local/bin/bash
    FreeBSD#
    بعدما عرفنا المسار, سنستخدم chpass لتعديل صدفة المُستخدم الجذر وهي أداة تُستخدم لتعديل معلومات مُستخدمين النظام هكذا:
    كود:
    FreeBSD# chpass root
    ستظهر لنا كامل تفاصيل هذا المُستخدم داخل المُحرر vi :
    كود:
    #Changing user information for root.
    Login: root
    Password: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.
    Uid [#]: 0
    Gid [# or name]: 0
    Change [month day year]:
    Expire [month day year]:
    Class:
    Home directory: /root
    Shell: /bin/csh
    Full Name: Charlie &
    Office Location:
    Office Phone:
    Home Phone:
    Other information:
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    ~
    /etc/pw.rfj4PE: unmodified: line 1
    لنُعدّل الجزء الخاص بالصدفة Shell من :
    كود:
    Shell: /bin/csh
    إلى :
    كود:
    Shell: /usr/local/bin/bash
    الآن لنحفظ التعديلات ثُم لنسجّل خروج ثم ندخلة مرّة أخرى ونلاحظ ماهي صدفتنا الآن:
    كود:
    FreeBSD# logout 
    Connection to 192.168.43.133 closed.
    [email protected]:~$ ssh [email protected]
    Password: **********
    Last login: Sun Sep  4 19:35:01 2011 from 192.168.43.1
    Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
        The Regents of the University of California.  All rights reserved.
    
    [[email protected] ~]# echo $SHELL
    /usr/local/bin/bash
    [[email protected] ~]#
    جميّل أصبح bash صدفتنا.

    إضافة مُستخدم للنظام وإعطاءه صدفة bash


    جميع الصدفات الموجودة لى النظام ستجدها في الملف shells والموجود داخل المُجلّد etc إنظر هُنا :
    كود:
    [[email protected] ~]# cat /etc/shells
    # $FreeBSD: src/etc/shells,v 1.5.36.1.6.1 2010/12/21 17:09:25 kensmith Exp $
    #
    # List of acceptable shells for chpass(1).
    # Ftpd will not allow users to connect who are not using
    # one of these shells.
    
    /bin/sh
    /bin/csh
    /bin/tcsh
    /usr/local/bin/bash
    /usr/local/bin/rbash
    [[email protected] ~]#
    لذا تأكّد م أنّ bash من بين تلك الصدفات.

    كيّ تسهل علينا مسألة إدارة المُستخدمين وتطبيّق كافية الصلاحيات على أولائك المُستخدمين, سنُنشيء مجموعة إسمها users ونُضيّف جميع المُستخدمين إليها وذلك عن طريق الأداة pw وهي المسؤلة عن إضافة وحذف المجموعات. لإضافة مجموعة سنستخدم pw متبوعة بـaddgroup ثُم إسم تلك المجموعة. لنُنشئ تلك المجموعة :
    كود:
    [[email protected] ~]# pw addgroup users
    لنتحقق من وُجوها في الملف group :
    كود:
    [[email protected] ~]# grep 'users' /etc/group
    users:*:1001:
    [[email protected] ~]#
    لإضافة مُستخدم هناك عدّت طُرق لكننا سنستخدم أجملها وأبسطها adduser أيّ أضف مُستخدم :
    كود:
    [[email protected] ~]# adduser 
    Username: barakat
    ستُسأل عن إسم المُستخدم, أدخل إسم المُستخدم بأحرف صغيرة. بعدها:
    كود:
    Full name: Barakat S.
    سيسألك عن إسمه الكامل, ضعّ ماتريد. بعدها سيظهر لك :
    كود:
    Uid (Leave empty for default):
    هنا يسألك البرنامج useradd عن ما إذا كُنت ترغب بتخصيص مُعرّف فريد User identifier لهذه المُستخدم. مثل الرقم الموجود في بطاقات الهويّة الوطنيّة أو الرقم التسلسلي الفريد. ﻻتعبث بها فقط إضغط على زرّ الإدخال وسيُولّد لك النظام واحد. بعدها :
    كود:
    Login group [barakat]: users
    هنا يسألك عن بأيّ مجموعة تُريد إضافة هذا المُستخدم, ﻻحظّ أن البرنامج إقترح عليك barakat أي نفس إسم الدخول (مابين الإقواس سختارها النظام لك لو ضغطت على زرّ الإخال). لكن كما ذكرت أننا سنضعه في المجموعة التي أنشأناها users.
    كود:
    Login group is users. Invite barakat into other groups? []:
    يسألك إذا كُنت ترغب بإضافة هذا المُستخدم لمجموعة أخرى. مثلاً إذا أردت أن يُسمح لهذا المُستخدم بإسخدام su للدخول إلى حساب الجذر قُم بإضافته لمجموعة wheel كيّ يُسمح له بذلك وإلا فيمكنك أن تتركه فارغ وتضغط على زرّ الإدخال مٌباشرة.
    كود:
    Login class [default]:
    هذا الخيار تستطيّع التحكّم بأعلى الحدود التي يمكن لهذا المُستخدم أن يستهلكها مثلاً من المعالج ومساحة الأقراص وعدد العمليات التي يستطيع تشغيلها. عُموماُ هذا الخيار مُتقدّم قليلا لذا سندعه بالقيمة الإفتراضية وتضغط على زرّ الإدخال (إذا كُنت مُهتم به إضغط هنا http://www.freebsd.org/doc/handbook/users-limiting.html ):
    كود:
    Shell (bash sh csh tcsh rbash nologin) [sh]: bash
    هُنا تستطيع تحديد صدفة المُستخدم. طبعاً سنكتب bash بدل الخيار الإفتراضي sh :
    كود:
    Home directory [/home/barakat]:
    مسار ملف هذا المُستخدم الذي يُسمح له بالتجوّل فيه. دعه كما هو وإذا كُنت تريد تعديله إكتب المسار كامل.
    كود:
    Home directory permissions (Leave empty for default):
    هُنا سيسألك النظام عن صلاحيات المُستخدم على مُجلّداته. دعها كما هي.
    كود:
    Use password-based authentication? [yes]:
    يسألك إذا كُنت ترغب بأن تكن طريقة توثيق المُسخدم قائمة على كلمة المُرور. الخيارات الأخرى تكن في تقنيات مثل الـLDAP. سنجعلها على كلمة المرور ونضغط على زرّ الإدخال.
    كود:
    Use an empty password? (yes/no) [no]: 
    Use a random password? (yes/no) [no]:
    سيسألك عن ما إذا كنت ترغب بوضع الحساب بدون كلمة مرور, إضغط على زر الإدخال أيّ ﻻ والسؤال الثاي يسألك عن رغبتك بكلمة مرور عشوائية إضع على زر الإدخال.
    كود:
    Enter password: ************
    Enter password again: ************
    أدخل كلمة المرور وأعد كتابتها.
    كود:
    Lock out the account after creation? [no]:
    إضغط على زرّ الإخال كيّ ينهي هذه العملية.
    كود:
    Username   : barakat
    Password   : ************
    Full Name  : Barakat S.
    Uid        : 1001
    Class      : 
    Groups     : users 
    Home       : /home/barakat
    Home Mode  : 
    Shell      : /usr/local/bin/bash
    Locked     : no
    OK? (yes/no): yes
    تحقق من صحّة البيانات. إذا تأكّد بأ كل شيء صحيح, إكتب yes وإضغط على زر الإدخال.
    كود:
    adduser: INFO: Successfully added (barakat) to the user database.
    Add another user? (yes/no): no
    Goodbye!
    [[email protected] ~]#
    إذا كُنت تريد إضافة مزيد من المُستخدمين, إكتب yes والإ إكتب no.

    أصبح لديا مُستخدم مع bash :
    كود:
    [[email protected] ~]# cd /home/barakat/
    [[email protected] /home/barakat]# su barakat
    [[email protected] ~]$ id
    uid=1001(barakat) gid=1001(users) groups=1001(users)
    [[email protected] ~]$ echo $SHELL
    /usr/local/bin/bash
    [[email protected] ~]$

    التقليل من إستخدام حساب الجذر وإستخدام sudo


    حان وقت الـsudo. لإضافة مُستخدم إلى المستخدمين المسموح لهم بإستخدام sudo يتمّ ذلك عن طريق كتابة :
    كود:
    barakat ALL=(ALL) ALL
    في ملف إعداد sudo والمُسمّى sudoers. حيّث أن barakat إسمّ هذا المُستخدم. أمّا إذا أردت إضافة مُستخدميّ مجموعة مُعيّنة إسمها users تحتوي 20 مُستخدم, فبدلاً م كتابة 20 سطر, يُمكنك كتابة إسم الموجموعة هكذا :
    كود:
    %users ALL=(ALL) ALL
    وسيُسمح لكافة هاؤلاء المُستخدمين بإستخدام sudo. لنُجرّب إضافة barakat فقط للمسموح لهم بإستخدم sudo. لنضيّف هذا في الملف sudoers. لكنّ قبل هذا يجب أن أوضّح شيء مُهمّ.

    في FreeBSD قُسّم النظام لقسّمين من حيث المجّلدات المُهمة. قسمّ خاص ببرامج وملفات النظام الأساسيّة التي أتت معه أثناء تنصيب النظام الأساسي مثلً cat وcshell و sshd. وقسم لبرامج والملفّات التي تأتي مع البرامج الغير أساسيّة للنظام مثل bash و sudo وجميع البرامج التي أضفتها أنت. هذا يعنيّ أن المسارات :
    كود:
    /bin
    /sbin
    /etc
    /lib
    /libexec
    /shar
    مُخصصة فقط للنظام وبرامجه ومكتباته وملفات إعدادة التي تأتي مع النظام الأساسيّ. المسار الثاني المُخصص للبرامج التي أضافها المُستخدم موجودة تحت المسار :
    كود:
    /usr/local/
    إكتب :
    كود:
    [[email protected] ~]# ls /usr/local/ | sort
    bin
    etc
    include
    info
    lib
    libdata
    libexec
    man
    sbin
    share
    www
    [[email protected] ~]#
    هذه المسارات مُخصصة لبرامجنا التي أضفناها نحن. لذا إن إذا البحثّ عن مسار الملف sudoers فلن يكون في :
    كود:
    /etc
    بل سيكون في :
    كود:
    /usr/local/etc
    حسناً لنُعدّل الملف sudoers ونضيف مُستخدمنا إليه :
    كود:
    [[email protected] ~]# vi /usr/local/etc/sudoers
    في أي مكان أضف :
    كود:
    barakat ALL=(ALL) ALL
    ويُفضّل بشدة أن تُضيف أيضاً :
    كود:
    Defaults:barakat timestamp_timeout=1
    كيّ ﻻيقى sudo فعال سوى لدقيقة وآحدة من آخر إستخدام. عند إغلاق المُحرر vi أغلقه بـ:
    كود:
    :wq!
    ﻷنّ الملف للقراءة فقط. لنختبر ما قٌمنا به :
    كود:
    [[email protected] ~]# su barakat
    [[email protected] /root]$ cd ~
    [[email protected] ~]$ sudo id
    Password: ************
    uid=0(root) gid=0(wheel) groups=0(wheel),5(operator)
    [[email protected] ~]$
    كل شيء صحيح.


    شرح تصيب أباتشيّ


    سبق أن قُما بتنصيب أباتشيء. ونعلم حالياً طريقة تشغيل الخدمات (عن طريق rc.d). لكنّ لأن أباتشي ليس من برامج الخدمات الأساسيّة بل أضفناه بأنفسنا,فلن نجده في :
    كود:
    /etc/rc.d
    بل سيكون في :
    كود:
    /usr/local/etc/rc.d/
    لنُشغله :
    كود:
    [[email protected] ~]# /usr/local/etc/rc.d/apache22 start
    Cannot 'start' apache22. Set apache22_enable to YES in /etc/rc.conf or use 'onestart' instead of 'start'.
    [[email protected] ~]#
    الرسالة تُخبرنا بأنه يلزمنا وضع YES مع apache22_enable في الملف rc.conf وهذا الملف المسؤول عن بدء الخدمات وستطرق له أكثر لاحقاً. لضيف أباتشيء في rc.conf بالصيغة :
    كود:
    apache22_enable="YES"
    هكذا:
    كود:
    [[email protected] ~]# vi /etc/rc.conf 
    [[email protected] ~]# grep 'apache22' /etc/rc.conf 
    apache22_enable="YES"
    [[email protected] ~]#
    لنُعيد الكرة ونُشغّل أباتشي الآن :
    كود:
    [[email protected] ~]# /usr/local/etc/rc.d/apache22 start
    Performing sanity check on apache22 configuration:
    httpd: apr_sockaddr_info_get() failed for FreeBSD.localdomain
    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
    Syntax OK
    Starting apache22.
    httpd: apr_sockaddr_info_get() failed for FreeBSD.localdomain
    httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
    /usr/local/etc/rc.d/apache22: WARNING: failed to start apache22
    [[email protected] ~]#
    هذه رسالة خطأ وكان يُفترض أن يعمل أباتشيء بشكل سليم. سببها مشكلة في الملف hosts. فعلى غير العادة تعديل هذا الملف يتم بشكل يدوي وﻻ يقوم المُنصّب بإعداده لك. قبل أن ُنُعدّه تأكد بأنك وضعت قيمة للـhostname في الملف rc.conf :
    كود:
    [[email protected] ~]# grep 'hostname' /etc/rc.conf 
    hostname="FreeBSD.localdomain"
    [[email protected] ~]#
    بعدها حرر الملف :
    كود:
    /etc/hosts
    بإستخدام vi وعدّل هذا المقطع:
    كود:
    ::1                     localhost localhost.my.domain
    127.0.0.1               localhost localhost.my.domain
    تحديداً localhost.my.domain إلى إسم الـhostname الخاص بك. ليُصبح مثلاً :
    كود:
    ::1                     localhost FreeBSD.localdomain
    127.0.0.1               localhost FreeBSD.localdomain
    إحفظ التعديلات وإخرج, ثُمّ حاول تشغيل أباتشي :
    كود:
    [[email protected] ~]# /usr/local/etc/rc.d/apache22 start
    Performing sanity check on apache22 configuration:
    httpd: Could not reliably determine the server's fully qualified domain name, using FreeBSD.localdomain for ServerName
    Syntax OK
    Starting apache22.
    httpd: Could not reliably determine the server's fully qualified domain name, using FreeBSD.localdomain for ServerName
    [[email protected] ~]#
    يبدو أنه يعمل الآن, لنُجرّب تصفح عنواننا:
    كود:
    [[email protected] ~]# curl localhost ; echo
    <html><body><h1>It works!</h1></body></html>
    [[email protected] ~]#
    لنٌجرّب ع طريق عنوان IP الشبكة :
    كود:
    [[email protected] ~]# ifconfig em0
    em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=9b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM>
        ether 00:0c:29:93:b8:69
        inet 192.168.43.133 netmask 0xffffff00 broadcast 192.168.43.255
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
    [[email protected] ~]#


    يبدو أنه يعمل لكن لإزالة تلك الرسالة حرر ملف إعداد أباتشي httpd.conf وحسب فهمنا سيكون في المسار :
    كود:
    [[email protected] ~]# ls /usr/local/etc/apache22/httpd.conf 
    /usr/local/etc/apache22/httpd.conf
    [[email protected] ~]#
    حرره وعدل قيمة ServerName من :
    كود:
    #ServerName www.example.com:80
    بإزالة العلامة # وتعديل www.example.com إلى الـhostname الخاص بك, مثلاً:
    كود:
    ServerName FreeBSD.localdomain:80
    الآن لحفظ التعديلات ونٌعيد تشغيل أباتشي :
    كود:
    [[email protected] ~]# /usr/local/etc/rc.d/apache22 restart
    Performing sanity check on apache22 configuration:
    Syntax OK
    Stopping apache22.
    Waiting for PIDS: 1668.
    Performing sanity check on apache22 configuration:
    Syntax OK
    Starting apache22.
    [[email protected] ~]#
    كُل شيء على مايرام.

    الآن لو أردت تحرير الصفحات ستجد مُجلّد صفحات الوُب (data) و cgi-bin في المسار :
    كود:
    [[email protected] ~]# ls /usr/local/www/apache22/
    cgi-bin    data    error    icons
    [[email protected] ~]#

    نظرة على الملف rc.conf وملفات الخدمات وخدمات بدء التشغيل:


    يُمكنك عن طريق الملف rc.conf والموجود داخل المُجلّد etc تفيعل الخدمات . للننظر لمحتوياته :
    كود:
    [[email protected] ~]# cat /etc/rc.conf 
    
    # -- sysinstall generated deltas -- # Sun Sep  4 21:37:57 2011
    # Created: Sun Sep  4 21:37:57 2011
    # Enable network daemons for user convenience.
    # Please make all changes to this file, not to /etc/defaults/rc.conf.
    # This file now contains just the overrides from /etc/defaults/rc.conf.
    hostname="FreeBSD.localdomain"
    ifconfig_em0="DHCP"
    sshd_enable="YES"
    
    apache22_enable="YES"
    
    [[email protected] ~]#
    جميع القيم الإفتراضية التي ستأخذها البرامج لو لم تُعدّلها ستكون في الملف :
    كود:
    /etc/defaults/rc.conf
    مثلاً للنظر لقيمة sshd لو لم تكن موجودة في rc.conf الخاص بنا :
    كود:
    [[email protected] ~]# rep 'sshd_enable' /etc/defaults/rc.conf 
    sshd_enable="NO"        # Enable sshd
    [[email protected] ~]#
    ستجد بعد علامة # شرح لوظيفة هذا السطر. خُذ نظرة عامة على محتويات defaults/rc.conf :
    كود:
    [[email protected] ~]# more /etc/defaults/rc.conf[/I][/B]
    الآ كيف يُفعّل النظام تلك الخدمات؟ لنعمل لنا خدمة بسيطه كيّ نفهم ذلك. الخدمة سنُسميّها hellofreebsd وهي مُجرد سكربت يطبع لنا Hello FreeBSD وسنضعه في المسار :
    كود:
    /usr/local/etc/rc.d/
    السكربت :
    كود:
    #!/bin/sh
    #
    # HelloFreeBSD Service
    #
    
    # PROVIDE: hellofreebsd
    # KEYWORD: nojail
    
    . /etc/rc.subr
    
    name="hellofreebsd"
    rcvar=`set_rcvar`
    start_cmd="hellofreebsd_start"
    stop_cmd="hellofreebsd_stop"
    
    hellofreebsd_start() {
          echo "HelloFreeBSD started"
    }
    
    hellofreebsd_stop() {
          echo "HelloFreeBSD stopped"
    }
    
    load_rc_config $name
    run_rc_command "$1"
    طبعاً يجب أن يُكتب بـC-shell ويتوافق مع طريقة بدء خدمات FreeBSD . لنكتب السكربت ونعطيه صلاحيّة التنفيذ :
    كود:
    [[email protected] ~]# vi /usr/local/etc/rc.d/hellofreebsd
    [[email protected] ~]# cat /usr/local/etc/rc.d/hellofreebsd
    #!/bin/sh
    #
    # HelloFreeBSD Service
    #
    
    # PROVIDE: hellofreebsd
    # KEYWORD: nojail
    
    . /etc/rc.subr
    
    name="hellofreebsd"
    ....
    [[email protected] ~]# chmod +x /usr/local/etc/rc.d/hellofreebsd
    [[email protected] ~]#
    ثُمّ ضعّ في rc.conf :
    كود:
    hellofreebsd_enable="YES"
    لنختبره :
    كود:
    [[email protected] ~]# service hellofreebsd start
    HelloFreeBSD started
    [[email protected] ~]# service hellofreebsd stop
    HelloFreeBSD stopped
    [[email protected] ~]#
    الخدمة تعمل بشكل جيد. إذا أردت عمل خدمات أكثر تعقيد, إقرأ في السكربتات الموجودة في مجلديّ rc.d فستفيدك كثيراً.

    فقط ملاحظة أخيرة, إذا أردت كتابة خدمة ﻻتحتاج لإيقاف, إستبدل دالة الإيقاف :
    كود:
    stop_cmd="hellofreebsd_stop"
    بـ:
    كود:
    stop_cmd=":"

    ملف بدء الإقلاع loader.conf


    هذا الملف loader.conf والموجود في مجلّد boot على المسار :
    كود:
    /boot/loader.conf
    الملف المسؤول عن مرحلة الإقلاع من تحميل التعاريف وخيارات الإقلاع وغيرها. مثلاً نلاحظّ أن زمن إنتظار واجهة الإقلاع يستغرق 10 ثواني. إذا أردت تعيدلها فيمكنك عن طريق هذا الملف عمل هذا. أيضاً هذا الملف مثل rc.conf لديه ملف loader.conf به قيم إفتراضية وموجود على المسار :
    كود:
    /boot/defaults/loader.conf
    لنرى القيمة الإفتراضية لزمن الإقلاع :
    كود:
    [[email protected] ~]# cat /boot/defaults/loader.conf | grep 10
    # $FreeBSD: src/sys/boot/forth/loader.conf,v 1.143.2.8.2.1 2010/12/21 17:09:25 kensmith Exp $
    #autoboot_delay="10"        # Delay in seconds before autobooting,
    #kern.hz="100"            # Set the kernel interval timer rate
    #kern.ngroups="1023"        # Set the maximum # of supplemental groups
    if_cue_load="NO"        # CATC USB-EL1210A USB Ethernet
    if_cxgb_load="NO"        # Chelsio T3 10 Gigabit Ethernet
    if_em_load="NO"            # Intel(R) PRO/1000 Gigabit Ethernet
    if_et_load="NO"            # Agere ET1310 10/100/Gigabit Ethernet
    if_ex_load="NO"            # Intel EtherExpress Pro/10 Ethernet
    if_fxp_load="NO"        # Intel EtherExpress PRO/100B (82557, 82558)
    if_igb_load="NO"        # Intel(R) PRO/1000 Gigabit Ethernet
    if_ipw_load="NO"        # Intel PRO/Wireless 2100 wireless
    if_ixgb_load="NO"        # Intel PRO/10Gb Ethernet
    if_ixgbe_load="NO"        # Intel PRO/10Gb Ethernet PCI Express
    if_lge_load="NO"        # Level 1 LXT1001 NetCellerator PCI Gigabit
    if_mxge_load="NO"        # Myricom Myri10GE 10Gb Ethernet
    if_nxge_load="NO"        # Neterion Xframe 10Gb Ethernet
    if_re_load="NO"            # RealTek 8139C+/8169/8169S/8110S
    if_tl_load="NO"            # Texas Instruments TNETE100 ("ThunderLAN")
    snd_emu10k1_load="NO"         # Creative Sound Blaster Live
    snd_emu10kx_load="NO"         # Creative SoundBlaster Live! and Audigy
    amdtemp_load="NO"        # AMD K8/K10/K11 temperature monitor
    [[email protected] ~]#
    طبعاً قد يتطلّب منك بحث بسيط وقراءة التعليقات التي بجانبه. بعد كل هذا وجدناه أنّه السطر :
    كود:
    #autoboot_delay="10"        # Delay in seconds before autobooting
    الآن كي نُعدّل هذه القيمة, مثلاً لنريده أن يُقلع بـ3 ثواني بدلاً من 10 ثواني, نُزيل علامة الـ# ونعدّل 10 وُضيفها في loader.conf الخاص بنا :
    كود:
    [[email protected] ~]# vi /boot/loader.conf 
    [[email protected] ~]# cat /boot/loader.conf
    autoboot_delay="3"
    [[email protected] ~]#
    الآن أعد التشغيل بكتابة reboot وستحد أن الزمن إنخفض من 10 إلى 3 ثواني.

    تنصيب وعرض وحذف البرامج


    تُوجد طريقتين لتنصيب البرامج في FreeBSD. الأولى عن طريق الـports, وهي ملفات برامج مصدريّة تحتاج لبناء من المصدر ولن أتطرّق لها هُنا فلم يسبق لي أن إستخدمتها ربما يتطرّق لها أحد الإخوه. والأخرى عن طريق ملفات ثُنائية ستجدها مُتوفّرة على خادم الـFTP الخاص بـFreeBSD على الرابط :
    http://ftp.freebsd.org/pub/FreeBSD/p...elease/Latest/

    وهذه ماسأشرحه. كيّ نضبط خادم الـFTP الذي سنستخدمه يلزمنا تعديل قيّمة المُتغيّر PACKAGEROOT إلى رابط هذا الخادم هكذا :
    كود:
    [[email protected] ~]# export PACKAGEROOT=ftp://ftp.freebsd.org
    وإضافة هذا الأمر إلى الملف profile. كيّ ﻻتضطر لكتابته في كٌل مرّة :
    كود:
    [[email protected] ~]# echo 'export PACKAGEROOT=ftp://ftp.freebsd.org' >> .profile 
    [[email protected] ~]# cat .profile 
    # $FreeBSD: src/etc/root/dot.profile,v 1.21.10.1.6.1 2010/12/21 17:09:25 kensmith Exp $
    #
    PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:~/bin
    export PATH
    HOME=/root
    export HOME
    TERM=${TERM:-cons25}
    export TERM
    PAGER=more
    export PAGER
    export PACKAGEROOT=ftp://ftp.freebsd.org
    [[email protected] ~]#
    الآن لنُجرّب تنصيب برنامج, مثلاً المُتصفّح lynx يُمكننا عمل هذا عن طريق البرنامج pkg_add هكذا :
    كود:
    [[email protected] ~]# pkgadd lynx
    scheme:   [ftp]
    user:     []
    password: []
    host:     [ftp.freebsd.org]
    port:     [0]
    document: [/pub/FreeBSD/ports/i386/packages-8.2-release/Latest/lynx.tbz]
    ---> ftp.freebsd.org:21
    looking up ftp.freebsd.org
    connecting to ftp.freebsd.org:21
    <<< 220 Welcome to freebsd.isc.org.
    >>> USER anonymous
    <<< 331 Please specify the password.
    >>> PASS [email protected]
    <<< 230 Login successful.
    ....
    /usr/local/share/doc/lynx/docs/README.rootcerts.
    
    You may also need to generate keys and certificates as
    described in the latter document and your SSL documentation.
    
    [[email protected] ~]#
    وسيتمّ تنصيب البرنامج مع إعتمادياته إن وجدت :
    كود:
    [[email protected] ~]# lynx --dump localhost
                                       It works!
    
    
    [[email protected] ~]#
    لإستعراض جميّع حُزم البرامج المُنصّبه لديك, يُمكنك عمل هذا بإستخدام البرنامج pkg_info :
    كود:
    [[email protected] ~]# pkg_info 
    apache-2.2.17_1     Version 2.2.x of Apache web server with prefork MPM.
    apr-ipv6-devrandom-gdbm-db42-1.4.2.1.3.10 Apache Portability Library
    bash-4.1.9          The GNU Project's Bourne Again SHell
    ....
    [[email protected] ~]#
    وسيتمّ عرض قائمة بالبرامج المُنصّبه لديك.

    أمّا لو أردت عرض برنامج مُعيّن فيمكنك هذا بمثل هذه الطريقة :
    كود:
    [[email protected] ~]# pkg_info lynx*
    Information for lynx-2.8.7.1_1,1:
    
    Comment:
    A non-graphical, text-based World-Wide Web client
    
    
    Description:
    lynx is a program which allows a user to access World-Wide Web servers
    and other information servers.  It uses only ascii representation so
    that it can be used from ascii-terminals and dial-in lines.
    
    WWW: http://lynx.isc.org/
    
    
    
    [[email protected] ~]#
    أو فقط :
    كود:
    [[email protected] ~]# pkg_info | grep lynx
    lynx-2.8.7.1_1,1    A non-graphical, text-based World-Wide Web client
    [[email protected] ~]#
    أمّا بالنسبه لحذف حُزمة يمكنك عمل هذا بكتابة :
    كود:
    [[email protected] ~]# pkg_delete lynx*
    أو إذا أردت تحديد الحزُمة خصوصاً في البرامج المتشابهه في إسم الحزم فستحتاج لكتابة إسم الحُزمة كاملاً :
    كود:
    [[email protected] ~]# pkg_info | grep lynx
    lynx-2.8.7.1_1,1    A non-graphical, text-based World-Wide Web client
    [[email protected] ~]# pkg_delete lynx-2.8.7.1_1,1
    [[email protected] ~]# pkg_info | grep lynx
    [[email protected] ~]#
    طبعاً إدارة الحُزم بإستخدام عائلة pkg صعبة وغيّر متطوّرة مثل أدواة إدارة الحُزم الموجودة في لينكس كـyum و apt وذلك لأنّ نظام مثل FreeBSD مخصص للخوادم وغالباً البرامج المُنصّبه على الخوادم قليلة وصاحب الخادم يعرف تقريباً جميع الحزم التي نصّبها.


    تحديث النواة وتحديث شجرة النظام والبرامج



    قبل كُلّ شيء قٌم بأخذ نسخة خارجيّة من بياناتك المُهمّة تحسباً لأي خطأ قد يحصل.

    بالنسبه لتحديث النواة فسبق أن كتبت موضوع عن تدعيم الجدار الناري في FreeBSD. وفيها قُمنا بتحميل الملفات المصدريّة للنظام ودعّمنا الجدار الناري PF بها. حن لم نقم فقط بتدعيّم الجدار الناري, بل حدّثنا النواة أيضاً. لذا إقرأ ذلك الموضوع. وﻻتقمّ بحذف الملفات المصدرية بل أبقها لديك . فبدل أن تعيد تحميل تلك الملفات في كلّ مرّة, الآن كل ماتحتاج له هو تحديث شجرة النظام فقط :
    كود:
    [[email protected] ~]# cd /usr/src/
    [[email protected] /usr/src]# csup ~/supfile
    إذا لزمك التحديث. ايضاً ﻻتقم بالتنظيف make clean إلا إذا إتهيت من تحديث شجرة النظام.

    الآن سنقوم بتحديث شجرة النظام والبرامج الأساسيّة, على إفتراض أنّك إتبعت الموضوع السابق, قُم بالإتقال لمسار الملفات المصدريّة :
    كود:
    [[email protected] ~]# cd /usr/src/
    [[email protected] /usr/src]#
    ثُمّ قم ببناء الملفات المصدريّة لشجرة النظام بكتابة :
    كود:
    [[email protected] /usr/src]# make buildworld
    ....
    [[email protected] /usr/src]#
    تستغرق العميليةّ وقت طويل لدرجة أنني نمت أثناءها, رجاء أن تأخذ معك وسادة كي لاتستيقض بألام في الرقبه. إذا إنتهت تلك العميليّة, قٌم بتثبيت تلك الملفات بكتابة :
    كود:
    [[email protected] /usr/src]# make installworld
    ....
    [[email protected] /usr/src]#
    الآن حان وقت تنظيف مخلفات البناء :
    كود:
    [[email protected] /usr/src]# make clean
    ....
    [[email protected] /usr/src]#
    ثُم أعد تشغيل النظام بكتابة :
    كود:
    [[email protected] /usr/src]# reboot
    التحديث والترقيّة تحتاج لعدّة مواضيع لوحدها ﻷنها عملية أكثر تعقيد وخطرة. فهذا شرح بدائي عنها.


    مقتطفات


    في هذا الجزء الختامي سأوضّح نقط الضغط وفكّ الضغط لأنها مختلفه. جرّبت أن آخذ نسخه من الملفات المصدرية وبسبب الخطأ في صيغة الأمر (إستخدمت صيغة gnu) فقدت تلك الملفات. تستخدم FreeBSD برنامج tar مختلف. الخاص بـgnu إسمه gtar.

    صيغة الضغط في tar هكذا :
    كود:
    tar -cf File.tar Path
    حيث أنّ File.tar إسم الملف المضغوط الذي تُريد إنشاءة و Path إسم المسار الذي تُريد ضغطه. لنُنشئ مجلّد إسمه mydir ونضع داخله ملفات :
    كود:
    [[email protected] ~]# mkdir myfiles
    [[email protected] ~]# for i in {1..5} ; do touch myfiles/$i.txt ; done
    [[email protected] ~]# ls myfiles/
    1.txt    2.txt    3.txt    4.txt    5.txt
    [[email protected] ~]#
    الآن لنضغط تلك الملفات في ملف إسمه backup.tar, يمكننا عمل هذا هكذا :

    كود:
    [[email protected] ~]# tar -cf backup.tar myfiles/
    [[email protected] ~]# ls backup.tar 
    backup.tar
    [[email protected] ~]#
    الآن لنحذف المُجلّد myfiles كي نستخرج الملفات من backup.tar :
    كود:
    [[email protected] ~]# rm -rf myfiles/
    [[email protected] ~]#
    الآن لنجرّب فك الضغط عنه, يمكننا عمل هذا بالصيغة :
    كود:
    tar -xf File.tar
    لنقم بذلك :
    كود:
    [[email protected] ~]# tar -xf backup.tar 
    [[email protected] ~]# ls | grep myfiles 
    myfiles
    [[email protected] ~]# ls myfiles/
    1.txt    2.txt    3.txt    4.txt    5.txt
    [[email protected] ~]#
    جميل, عادت الملفات.

    إذا أردت فقط إستعراض الملفات دون فك الضغط عنها إكتب :
    كود:
    [[email protected] ~]# tar -tf backup.tar 
    myfiles/
    myfiles/1.txt
    myfiles/2.txt
    myfiles/3.txt
    myfiles/4.txt
    myfiles/5.txt
    [[email protected] ~]#
    أيضاً هاك شيء عقدني وهو إغلاق الجهاز. كل نظام له ضيغة تختلف عن الأخرى. لإغلاق FreeBSD إكتب :
    كود:
    [[email protected] ~]# shutdown -p now
    أما لإعادة التشغيل إكتب :
    كود:
    [[email protected] ~]# reboot
    إن شاء الله أن يكون هذا الموضوع البسيط بادئة إهتمام في هذه الأنظمة الجميلة.

    بالتوفيق.
    الملفات المرفقة
    التعديل الأخير تم بواسطة بـركـات; الساعة 06-09-2011, 12:02 AM.
    كتب مفيدة : كتاب لينكس الشامل | دليل المستخدم العربي في أوامر لينكس | مخطوطتك الأولى (script) في الشيل | أوبنتو ببساطة
يعمل...
X