ติดตั้ง snort บน ubuntu

  • ทดสอบกับ ubuntu 10.04
  • ตั้งค่าให้มีการ log เข้าไปเก็บไว้ใน mysql server ด้วย
  • ติดตั้ง snort report เพื่อให้ดูข้อมูล snort ผ่านหน้าเวบ ได้

  1. ต้องติดตั้ง mysql server ก่อน ทำดังนี้
    sudo apt-get install mysql-server

    หากได้หน้าต่าง Configuring mysql-server-5.0  มีข้อความแจ้งให้ใส่รหัสผ่าน
    ในตอนนี้ยังไม่ต้องใส่อะไร ให้เลื่อนไปเลือก <Ok>
    ระบบจะทำการติดตั้งต่อไปจนเสร็จ

    เพื่อความปลอดภัยให้รีบแก้ไขรหัสผ่านของ root ของ mysql
    สมมติว่าต้องการให้รหัสของผู้ใช้ root มีรหัสผ่านว่า mysqldroot
    ตัวอย่างนี้ใช้คำสั่งว่า mysqladmin -uroot password mysqldroot

    สร้าง database สำหรับ snort ชื่อว่า snort ทำดังนี้
    mysql -uroot -pmysqldroot -e "CREATE DATABASE snortdatabase CHARACTER SET 'UTF8';"

    กำหนดสิทธิ์การใช้ database ชื่อ snort ให้แก่ user ชื่อ snortmysql โดยมีรหัสผ่านว่า snortpass ใช้คำสั่งคือ
    mysql -uroot -pmysqldroot -e "grant all privileges on snortdatabase.* to 'snortmysql'@'localhost' identified by 'snortpass';"
  2. ติดตั้ง package เพิ่มเติมด้วยคำสั่งดังนี้
    sudo apt-get install nmap nbtscan apache2 php5 php5-mysql php5-gd libpcap0.8-dev libpcre3-dev g++ bison flex
    sudo apt-get install libpcap-ruby libmysqlclient16-dev libtool autoconf
  3. ติดตั้ง JpGraph ทำดังนี้
    sudo mkdir -p /var/www/jpgraph
    wget http://ftp.psu.ac.th/pub/snort/jpgraph-1.27.1.tar.gz -P /tmp
    tar -zxpvf /tmp/jpgraph-1.27.1.tar.gz -C /tmp
    sudo cp -Rv /tmp/jpgraph-1.27.1/src /var/www/jpgraph
  4. ติดตั้ง Snort Report ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/snortreport-1.3.3.tar.gz -P /tmp
    sudo tar -zxvf /tmp/snortreport-1.3.3.tar.gz -C /var/www

    แล้วแก้ไขแฟ้ม /var/www/snortreport-1.3.3/srconf.php
    ไปที่ประมาณบรรทัดที่ 22 แก้ไขเลขเวอร์ชั่น ดังนี้
    $srVersion = "Snort Report Version 1.3.3";
    ไปที่ประมาณบรรทัดที่ 30 แก้ไขตัวแปร ดังนี้
    $user = "snortmysql";
    $pass = "snortpass";
    $dbname = "snortdatabase";

    แก้ไขแฟ้ม /var/www/snortreport-1.3.3/alerts.php
    ไปที่ประมาณบรรทัดที่ 398 แก้ไขตัวแปร FQDN จากเดิม
    $detailURL = $detailURL . "&FQDN=yes&".$timespan->getURL('beginTime', 'endTime');
    ให้เปลี่ยนเป็นว่า
    $detailURL = $detailURL . "&FQDN=no&".$timespan->getURL('beginTime', 'endTime');
  5. ติดตั้ง Data Acquistion API ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/daq-0.6.2.tar.gz -P /tmp
    tar -zxvf /tmp/daq-0.6.2.tar.gz -C /tmp
    cd /tmp/daq-0.6.2
    ./configure
    make
    sudo make install
    sudo ldconfig
    cd
  6. ติดตั้ง libdnet ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/libdnet-1.12.tgz -P /tmp
    tar -zxvf /tmp/libdnet-1.12.tgz -C /tmp
    cd /tmp/libdnet-1.12
    ./configure
    make
    sudo make install
    sudo ln -s /usr/local/lib/libdnet.1.0.1 /usr/lib/libdnet.1
    cd
  7. ติดตั้ง Snort ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/snort-2.9.2.tar.gz -P /tmp
    tar -zxvf /tmp/snort-2.9.2.tar.gz -C /tmp
    cd /tmp/snort-2.9.2
    ./configure prefix=/usr/local/snort --enable-sourcefire
    make
    sudo make install
    sudo mkdir -p /var/log/snort
    sudo mkdir -p /var/snort
    sudo groupadd snort
    sudo useradd -g snort snort
    sudo chown snort:snort /var/log/snort
    mysql -u snortmysql -psnortpass -D snortdatabase < ./schemas/create_mysql
    mysql -u snortmysql -psnortpass -D snortdatabase < /var/www/snortreport-1.3.3/create_indexes.sql
    cd
  8. ติดตั้ง Snort Rules ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/snortrules-snapshot-2920.tar.gz -P /tmp
    sudo tar -zxvf /tmp/snortrules-snapshot-2920.tar.gz -C /usr/local/snort
    sudo mkdir -p /usr/local/snort/lib/snort_dynamicrules
    sudo cp /usr/local/snort/so_rules/precompiled/Ubuntu-10-4/i386/2.9.2.0/* /usr/local/snort/lib/snort_dynamicrules
    sudo touch /usr/local/snort/rules/white_list.rules
    sudo touch /usr/local/snort/rules/black_list.rules
  9. แก้ไขแฟ้ม /usr/local/snort/etc/snort.conf
    ประมาณบรรทัดที่ 113 ให้ปรับปรุงตัวแปรเป็นดังนี้
    var WHITE_LIST_PATH /usr/local/snort/rules
    var BLACK_LIST_PATH /usr/local/snort/rules

    ประมาณบรรทัดที่ 247 ให้ปรับปรุงตัวแปรเป็นดังนี้
    dynamicpreprocessor directory /usr/local/snort/lib/snort_dynamicpreprocessor/
    dynamicengine /usr/local/snort/lib/snort_dynamicengine/libsf_engine.so
    dynamicdetection directory /usr/local/snort/lib/snort_dynamicrules

    ประมาณบรรทัดที่ 420 ให้ลบเครื่องหมาย # นำหน้าออก  เหลือเป็นเพียงว่า
    preprocessor arpspoof

    ประมาณบรรทัดที่ 520 ปรับปรุงเพิ่มบรรทัดตัวแปรเป็นว่า
    output unified2: filename snort.u2, limit 128
  10. ติดตั้ง Banyard2 ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/barnyard2-1.9.tar.gz -P /tmp
    tar -zxvf /tmp/barnyard2-1.9.tar.gz  -C /tmp
    cd /tmp/barnyard2-1.9
    ./configure --with-mysql
    sudo make
    sudo make install
    sudo cp -v etc/barnyard2.conf /usr/local/snort/etc
    sudo mkdir -p /var/log/barnyard2
    sudo chmod 666 /var/log/barnyard2
    sudo touch /var/log/snort/barnyard2.waldo
    sudo chown snort.snort /var/log/snort/barnyard2.waldo
    cd

    แล้วแก้ไขแฟ้ม /usr/local/snort/etc/barnyard2.conf
    ประมาณบรรทัดที่ 29 ปรับปรุงตัวแปรเป็นว่า
    config reference_file:      /usr/local/snort/etc/reference.config
    config classification_file: /usr/local/snort/etc/classification.config
    config gen_file:            /usr/local/snort/etc/gen-msg.map
    config sid_file:            /usr/local/snort/etc/sid-msg.map
    ประมาณบรรทัดที่ 60 ปรับปรุงตัวแปรเป็นว่า
    config hostname:   localhost
    config interface:  eth0
    ประมาณบรรทัดที่ 319 ปรับปรุงตัวแปรเป็นว่า
    output database: log, mysql, dbname=snortdatabase user=snortmysql password=snortpass host=localhost
  11. ทดสอบ snort ด้วยคำสั่งดังนี้
    sudo /usr/local/snort/bin/snort -u snort -g snort -c /usr/local/snort/etc/snort.conf -i eth0
    ระบบจะเริ่มทำงานจนหน้าจอได้ข้อความประมาณว่า
    Commencing packet processing (pid=...)
    แสดงว่า snort ใช้การได้แล้ว ให้กลับออกมาด้วยการกดแป้น Control_C
  12. ให้ snort ทำงานด้วยคำสั่งดังต่อไปนี้
    sudo /usr/local/snort/bin/snort -u snort -g snort -c /usr/local/snort/etc/snort.conf -i eth0 -D
    sudo  /usr/local/bin/barnyard2 -c /usr/local/snort/etc/barnyard2.conf -G /usr/local/snort/etc/gen-msg.map -S /usr/local/snort/etc/sid-msg.map -d /var/log/snort -f snort.u2 -w /var/log/snort/barnyard2.waldo -D

    สั่งให้ apache ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/apache2 restart
    แล้วทดสอบดูผลงานผ่านเวบที่ http://localhost/snortreport-1.3.3
  13. การปรับปรุง rules ให้ไปลงทะเบียนที่เวบ  http://www.snort.org เพื่อจะได้มีสิทธิ์ในการดาวน์โหลด rules ของ Registered User Release
    เมื่อลงทะเบียนแล้ว ให้ login เข้าไปที่หน้าเวบ http://www.snort.org/snort-rules
    จัดการดาวน์โหลด rules ให้ถูกรุ่น  ตัวอย่างการติดตั้งเป็น snort 2.9.x ก็ให้เลือกดาวน์โหลดชุด Snort v2.9.x

    มีการ mirror แฟ้ม rules ของ snort มาเก็บไว้ที่ http://ftp.psu.ac.th/pub/snort
    ตัวอย่างการ update snort rules รุ่น 2.9.2.0 ให้ทำดังนี้
    wget http://ftp.psu.ac.th/pub/snort/snortrules-snapshot-2920.tar.gz -P /tmp
    mkdir -p /tmp/snort
    tar -zxvf /tmp/snortrules-snapshot-2920.tar.gz  -C /tmp/snort
    sudo cp -Rfv /tmp/snort/rules/*.rules  /usr/local/snort/rules
    sudo cp -Rfv /tmp/snort/preproc_rules/*.rules /usr/local/snort/preproc_rules
    sudo cp -Rfv /tmp/snort/so_rules/*.rules /usr/local/snort/so_rules
  14. การตั้งค่าให้ snort ตรวจสอบ arp spoof ด้วย ให้ทำดังนี้
    แก้ไขแฟ้ม /usr/local/snort/etc/snort.conf
    ประมาณบรรทัดที่ 420 ให้ลบเครื่องหมาย # นำหน้าออก  เหลือเป็นเพียงว่า
    preprocessor arpspoof

ติดตั้ง snmpd บน ubuntu

  • ทดสอบกับ  ubuntu 10.04, 8.04

  1. ติดตั้งด้วยคำสั่ง sudo apt-get install snmpd snmp
  2. แก้ไขแฟ้ม /etc/snmp/snmpd.conf
    ไปที่ประมาณบรรทัด 61 ปรับปรุงแก้ไขจากเดิมให้เป็นว่า
    #com2sec paranoid  default         public
    com2sec readonly  default         public
    #com2sec readwrite default         private
  3. สั่งให้ทำงานด้วยคำสั่งว่า  sudo /etc/init.d/snmpd start
    หากมีการแก้ไขแฟ้ม /etc/snmp/snmpd.conf แล้ว ให้ระบบอ่านค่าที่ปรับใหม่ได้ด้วยคำสั่ง  sudo /etc/init.d/snmpd restart
  4. ทดสอบว่า snmpd ทำงานด้วยคำสั่งตัวอย่าง
    snmpwalk -c public -v 1 localhost system

    ได้ข้อความตอบกลับมาประมาณดังตัวอย่างเป็นใช้ได้
    SNMPv2-MIB::sysDescr.0 = STRING: Linux rd2-cc 2.6.24-19-server #1 SMP Wed Jun 18 14:44:47 UTC 2008 x86_64
    SNMPv2-MIB::sysObjectID.0 = OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
    DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (72689) 0:12:06.89
    SNMPv2-MIB::sysContact.0 = STRING: Root <root@localhost> (configure /etc/snmp/snmpd.local.conf)
    SNMPv2-MIB::sysName.0 = STRING: rd2-cc
    SNMPv2-MIB::sysLocation.0 = STRING: Unknown (configure /etc/snmp/snmpd.local.conf)
    SNMPv2-MIB::sysName.0 = STRING: rd2-cc
    SNMPv2-MIB::sysLocation.0 = STRING: Unknown (configure /etc/snmp/snmpd.local.conf)
    SNMPv2-MIB::sysORLastChange.0 = Timeticks: (52) 0:00:00.52
    SNMPv2-MIB::sysORID.1 = OID: SNMP-FRAMEWORK-MIB::snmpFrameworkMIBCompliance
    SNMPv2-MIB::sysORID.2 = OID: SNMP-MPD-MIB::snmpMPDCompliance
    SNMPv2-MIB::sysORID.3 = OID: SNMP-USER-BASED-SM-MIB::usmMIBCompliance
    SNMPv2-MIB::sysORID.4 = OID: SNMPv2-MIB::snmpMIB
    SNMPv2-MIB::sysORID.5 = OID: TCP-MIB::tcpMIB
    SNMPv2-MIB::sysORID.6 = OID: IP-MIB::ip
    SNMPv2-MIB::sysORID.7 = OID: UDP-MIB::udpMIB
    SNMPv2-MIB::sysORID.8 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup
    SNMPv2-MIB::sysORDescr.1 = STRING: The SNMP Management Architecture MIB.
    SNMPv2-MIB::sysORDescr.2 = STRING: The MIB for Message Processing and Dispatching.
    SNMPv2-MIB::sysORDescr.3 = STRING: The management information definitions for the SNMP User-based Security Model.
    SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for SNMPv2 entities
    SNMPv2-MIB::sysORDescr.5 = STRING: The MIB module for managing TCP implementations
    SNMPv2-MIB::sysORDescr.6 = STRING: The MIB module for managing IP and ICMP implementations
    SNMPv2-MIB::sysORDescr.7 = STRING: The MIB module for managing UDP implementations
    SNMPv2-MIB::sysORDescr.8 = STRING: View-based Access Control Model for SNMP.
    SNMPv2-MIB::sysORUpTime.1 = Timeticks: (52) 0:00:00.52
    SNMPv2-MIB::sysORUpTime.2 = Timeticks: (52) 0:00:00.52
    SNMPv2-MIB::sysORUpTime.3 = Timeticks: (52) 0:00:00.52
    SNMPv2-MIB::sysORUpTime.4 = Timeticks: (52) 0:00:00.52
    SNMPv2-MIB::sysORUpTime.5 = Timeticks: (52) 0:00:00.52
    SNMPv2-MIB::sysORUpTime.6 = Timeticks: (52) 0:00:00.52
    SNMPv2-MIB::sysORUpTime.7 = Timeticks: (52) 0:00:00.52
    SNMPv2-MIB::sysORUpTime.8 = Timeticks: (52) 0:00:00.52

    เป็นอันว่าใช้งาน snmpd ได้แล้ว

ติดตั้ง smartmontools บน ubuntu

  • ทดสอบใช้กับ ubuntu 10.04, 8.04
  • ต้นฉบับจาก http://smartmontools.sourceforge.net/
  • ใช้สำหรับอ่านค่าคุณสมบัติต่างๆของ hard disk
  • ต้องตั้งค่า BIOS ของ PC ให้รองรับคุณสัมบัติ S.M.A.R.T hard disk ด้วย

  1. ติดตั้งด้วยคำสั่ง  sudo apt-get install smartmontools
  2. ในขั้นต้นให้ตรวจสอบว่าใน PC มี hard disk กี่ลูก ด้วยคำสั่ง sudo fdisk -l

    ตัวอย่างนี้เป็นแบบง่ายๆ มี hard disk ลูกเดียว
    Disk /dev/hda: 20.4 GB, 20404101120 bytes
    255 heads, 63 sectors/track, 2480 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Device Boot      Start         End      Blocks   Id  System
    /dev/hda1   *           1          13      104391   83  Linux
    /dev/hda2              14        2480    19816177+  8e  Linux LVM

    ตัวอย่างต่อไปมี hard disk 2 ลูก ต่อกันแบบ software raid
    Disk /dev/hda: 80.0 GB, 80026361856 bytes
    255 heads, 63 sectors/track, 9729 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Device Boot      Start         End      Blocks   Id  System
    /dev/hda1   *           1          13      104391   fd  Linux raid autodetect
    /dev/hda2              14        9447    75778605   fd  Linux raid autodetect
    /dev/hda3            9448        9708     2096482+  fd  Linux raid autodetect
    Disk /dev/hdc: 80.0 GB, 80026361856 bytes
    255 heads, 63 sectors/track, 9729 cylinders
    Units = cylinders of 16065 * 512 = 8225280 bytes
    Device Boot      Start         End      Blocks   Id  System
    /dev/hdc1   *           1          13      104391   fd  Linux raid autodetect
    /dev/hdc2              14        9447    75778605   fd  Linux raid autodetect
    /dev/hdc3            9448        9708     2096482+  fd  Linux raid autodetect
  3. ตรวจสอบชนิด hard disk /dev/hda ด้วยตัวอย่างคำสั่ง  sudo smartctl -i /dev/hda
    หากเป็น hard disk แบบ SATA อาจต้องเพิ่ม option ว่า -d ata ด้วย ตัวอย่างคำสั่ง sudo smartctl -i /dev/sda -d ata ได้ผลดังตัวอย่าง

    === START OF INFORMATION SECTION ===
    Device Model:     ST320413A
    Serial Number:    7ED2J419
    Firmware Version: 3.39
    User Capacity:    20,404,101,120 bytes
    Device is:        In smartctl database [for details use: -P show]
    ATA Version is:   4
    ATA Standard is:  Exact ATA specification draft version not indicated
    Local Time is:    Mon Oct 16 12:55:11 2006 ICT
    SMART support is: Available - device has SMART capability.
    SMART support is: Enabled
  4. ตรวจสอบสุขภาพ hard disk /dev/hda  ด้วยตัวอย่างคำสั่ง sudo smartctl -Hc /dev/hda
    หากเป็น hard disk แบบ SATA อาจต้องเพิ่ม option ว่า -d ata ด้วย  ตัวอย่างคำสั่ง sudo smartctl -Hc /dev/sda -d ata  ได้ผลดังตัวอย่าง

    *** บรรทัดที่มีคำว่า PASSED แสดงว่าปรกติดี ถ้าเสียจะเป็น FAILED
    === START OF READ SMART DATA SECTION ===
    SMART overall-health self-assessment test result: PASSED

    General SMART Values:
    Offline data collection status:  (0x82) Offline data collection activity
                                            was completed without error.
                                            Auto Offline Data Collection: Enabled.
    Self-test execution status:      (   0) The previous self-test routine completed                                        without error or no self-test has ever
                                            been run.
    Total time to complete Offline
    data collection:                 ( 422) seconds.
    Offline data collection
    capabilities:                    (0x1b) SMART execute Offline immediate.
                                            Auto Offline data collection on/off support.
                                            Suspend Offline collection upon new
                                            command.
                                            Offline surface scan supported.
                                            Self-test supported.
                                            No Conveyance Self-test supported.
                                            No Selective Self-test supported.
    SMART capabilities:            (0x0003) Saves SMART data before entering
                                            power-saving mode.
                                            Supports SMART auto save timer.
    Error logging capability:        (0x01) Error logging supported.
                                            No General Purpose Logging support.
    Short self-test routine
    recommended polling time:        (   1) minutes.
    Extended self-test routine
    recommended polling time:        (  23) minutes.
  5. ทดสอบแบบเร็ว hard disk /dev/hda  ด้วยตัวอย่างคำสั่ง sudo smartctl -t short /dev/hda
    หากเป็น hard disk แบบ SATA อาจต้องเพิ่ม option ว่า -d ata ด้วย  ตัวอย่างคำสั่ง sudo smartctl -t short /dev/sda -d ata  ได้ผลดังตัวอย่าง

    === START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
    Sending command: "Execute SMART Short self-test routine immediately in off-line mode".
    Drive command "Execute SMART Short self-test routine immediately in off-line mode" successful.
    Testing has begun.
    Please wait 1 minutes for test to complete.
    Test will complete after Mon Oct 16 15:01:20 2006

    Use smartctl -X to abort test.

    ให้รอสัก 1 นาที จะได้ผลลัพธ์ออกมา
    ตรวจสอบดูด้วยคำสั่งว่า  sudo smartctl -l selftest /dev/hda
    หากเป็น hard disk แบบ SATA ต้องเพิ่ม option ว่า -d ata ด้วย
    ตัวอย่างคำสั่ง smartctl -l selftest /dev/sda -d ata
    ได้ผลตัวอย่าง

    === START OF READ SMART DATA SECTION ===
    SMART Self-test log structure revision number 1
    Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
    # 1  Short offline       Completed without error       00%     19789         -
    # 2  Short offline       Completed without error       00%     19788         -

    หมายความว่าเคยทดสอบมา 2 ครั้งแล้ว และสภาพดีไม่มีปัญหา
  6. ดูรายงาน error ของ hard disk /dev/hda  ด้วยตัวอย่างคำสั่ง  sudo smartctl -l error /dev/hda
    หากเป็น hard disk แบบ SATA อาจต้องเพิ่ม option ว่า -d ata ด้วย ตัวอย่างคำสั่ง sudo smartctl -l error /dev/sda -d ata

    ตัวอย่างผลที่ได้แสดงว่าเป็นปรกติดี
    === START OF READ SMART DATA SECTION ===
    SMART Error Log Version: 1
    No Errors Logged

    ตัวอย่างผลที่ได้  ว่าเคยมี error เกิดขึ้น แต่ก็ยังคงใช้งานได้
    === START OF READ SMART DATA SECTION ===
    SMART Error Log Version: 1
    ATA Error Count: 5
            CR = Command Register [HEX]
            FR = Features Register [HEX]
            SC = Sector Count Register [HEX]
            SN = Sector Number Register [HEX]
            CL = Cylinder Low Register [HEX]
            CH = Cylinder High Register [HEX]
            DH = Device/Head Register [HEX]
            DC = Device Command Register [HEX]
            ER = Error register [HEX]
            ST = Status register [HEX]
    Powered_Up_Time is measured from power on, and printed as
    DDd+hh:mm:SS.sss where DD=days, hh=hours, mm=minutes,
    SS=sec, and sss=millisec. It "wraps" after 49.710 days.

    Error 5 occurred at disk power-on lifetime: 13636 hours (568 days + 4 hours)
      When the command that caused the error occurred, the device was active or idle.
      After command completion occurred, registers were:
    .......... มีต่อมากมาย
  7. หากต้องการให้มีการตรวจสภาพโดยอัตโนมัติ แล้วส่งอีเมล์แจ้งผู้ดูแลระบบด้วย
    ให้แก้ไขแฟ้ม /etc/smard.conf ให้มีข้อความตัวอย่างว่า
    /dev/sda -H -m  myemail@domain.com
    หากเจอปัญหาสุขภาพไม่ค่อยดี  ก็จะส่งอีเมล์มาให้แก่ myemail@domain.com
  8. หากต้องการให้ระบบตรวจสอบอัตโนมัติทุกครั้งที่บูทเครื่อง  ให้แก้ไขแฟ้ม  /etc/default/smartmontools 
    ปรับตั้งค่าตัวแปรประมาณตัวอย่างดังนี้
    start_smartd=yes
    enable_smart="/dev/sda"

    สั่งให้ระบบเริ่มทำงานด้วยคำสั่ง sudo /etc/init.d/smartmontools start
  9. ตัวอย่างคำสั่งในการอ่านเฉพาะค่าอุณหภูมิของ hard disk คือ
    sudo smartctl -A /dev/sda|grep "Temperature_Celsius"

ติดตั้ง shorewall บน ubuntu

  • ทดสอบกับ ubuntu 12.04, 10.04, 8.04
  • เป็น firewall สำหรับ server ที่มี LAN card เพียงใบเดียว
  • ต้นฉบับ shorewall อยู่ที่ http://www.shorewall.net

  1. ติดตั้งโปรแกรม shorewall ด้วยคำสั่ง sudo apt-get install shorewall
  2. สร้างแฟ้ม /etc/shorewall/zones
    หากเป็น ubuntu 10.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall/examples/one-interface/zones /etc/shorewall
    หากเป็น ubuntu 8.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall-common/examples/one-interface/zones /etc/shorewall
    ตัวอย่างข้อมูลในแฟ้ม
    fw firewall
    net ipv4
  3. สร้างแฟ้ม /etc/shorewall/interfaces
    หากเป็น ubuntu 10.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall/examples/one-interface/interfaces /etc/shorewall
    หากเป็น ubuntu 8.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall-common/examples/one-interface/interfaces /etc/shorewall
    ตัวอย่างข้อมูลในแฟ้มคือ
    net eth0 detect dhcp,tcpflags,logmartians,nosmurfs
  4. สร้างแฟ้ม /etc/shorewall/policy
    หากเป็น ubuntu 10.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall/examples/one-interface/policy /etc/shorewall
    หากเป็น ubuntu 8.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall-common/examples/one-interface/policy /etc/shorewall
    ตัวอย่างข้อมูลในแฟ้มคือ
    $FW net ACCEPT
    net all DROP info
    all all REJECT info
  5. สร้างแฟ้ม /etc/shorewall/rules
    หากเป็น ubuntu 10.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall/examples/one-interface/rules /etc/shorewall
    หากเป็น ubuntu 8.04 ใช้คำสั่ง sudo cp /usr/share/doc/shorewall-common/examples/one-interface/rules /etc/shorewall
    ตัวอย่างข้อมูลในแฟ้มคือ
    Ping/REJECT net $FW
    ACCEPT $FW net icmp
  6. ตรวจสอบ/แก้ไขแฟ้ม /etc/shorewall/shorewall.conf ว่าเปิดการทำงานแล้ว
    ดูที่บรรทัดตัวแปรมีว่า STARTUP_ENABLED=Yes

    และตรวจสอบ/แก้ไขแฟ้ม /etc/default/shorewall ว่าเปิดการทำงานแล้ว
    ดูที่บรรทัดตัวแปรมีว่า startup=1

    เสร็จแล้วก็สั่งทำงานด้วยคำสั่ง sudo /etc/init.d/shorewall start
  7. ตัวอย่างการปรับแต่งอนุญาติให้เข้าถึง server แก้ไขแฟ้ม /etc/shorewall/rules ดังนี้
    # APCUPSD
    ACCEPT net:192.168.5.0/24 fw tcp 3551,6666

    # FTP
    ACCEPT net:192.168.5.0/24 fw tcp 21

    # IPP (CUPS)
    ACCEPT net:192.168.5.0/24 fw tcp 631

    # HTTP,HTTPS
    ACCEPT net:192.168.5.0/24 fw tcp 80,443

    # NFSD,PORTMAP,STATD,LOCKD,MOUNTD (ต้องระบุ port ของ rpc.statd,rpc.lockd,rpc.mountd ให้เป็น 4000-4002 ด้วย)
    ACCEPT net:192.168.5.0/24 fw tcp 111,2049
    ACCEPT net:192.168.5.0/24 fw udp 111,2049
    ACCEPT net:192.168.5.0/24 fw tcp 4000:4002
    ACCEPT net:192.168.5.0/24 fw udp 4000:4002

    # PING
    ACCEPT net:192.168.5.0/24 fw icmp 8

    # Pykota
    ACCEPT net:192.168.5.0/24 fw tcp 7654

    # Radius
    ACCEPT net:192.168.5.0/24 fw udp 1812,1813

    # ssh
    ACCEPT net:192.168.5.0/24 fw tcp 22

    #TFTP
    ACCEPT net:192.168.5.0/24 fw udp 69

    # TRACEROUTE
    ACCEPT all fw udp 33434:33443

    # UDPCAST
    ACCEPT net:192.168.5.0/24 fw udp 9000,9001

    แก้ไขเสร็จแล้ว สั่งให้ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/shorewall force-reload
  8. หากต้องการให้ shorewall หยุดทำงาน ให้ใช้คำสั่งว่า sudo /etc/init.d/shorewall stop

    ลองดูว่า shorewall หยุดทำงานจริงๆด้วยคำสั่ง sudo iptables -nL จะได้ผลข้อความประมาณว่า
    Chain INPUT (policy ACCEPT)
    target prot opt source destination
    Chain FORWARD (policy ACCEPT)
    target prot opt source destination
    Chain OUTPUT (policy ACCEPT)
    target prot opt source destination
    แสดงว่า shorewll หยุดทำงานสมบูรณ์แล้ว
    แต่หากยังหยุดไม่สมบูรณ์ ให้อาจต้องสั่งทำงานเพิ่มด้วยคำสั่งว่า sudo shorewall clear
  9. หากต้องการอนุญาติทำการ mulicast ได้ ให้แก้ไขแฟ้ม /etc/shorewall/shorewall.conf
    ตั้งค่าตัวแปรเป็นว่า MULTICAST=Yes
    แก้ไขเสร็จแล้ว สั่งให้ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/shorewall force-reload

ติดตั้ง samba บน ubuntu

  • ทดสอบกับ ubuntu 10.04
  • ต้นฉบับ samba อยู่ที่ http://www.samba.org/

  1. ติดตั้งด้วยคำสั่ง sudo apt-get install samba samba-common-bin smbfs smbclient
  2. หากต้องการ manager แบบ graphic ให้ติดตั้งเพิ่มเติมด้วยคำสั่งว่า
    sudo apt-get install system-config-samba
    เรียกใช้งานโดยไปที่เมนู System -> Administration -> Samba

ติดตั้ง rsync บน ubuntu


  1. ติดตั้งโปรแกรม rsync ด้วยคำสั่ง sudo apt-get install rsync
  2. แก้ไขแฟ้ม /etc/default/rsync
    ปรับปรุงตัวแปรจากเดิม  RSYNC_ENABLE=false
    ให้กลายเป็น RSYNC_ENABLE=true
  3. ตัวอย่างนี้แสดงการตั้งค่าให้ rsync server  ของ  server yourserver.domain
    ให้แก้ไขแฟ้ม /etc/rsyncd.conf  ประมาณดังตัวอย่าง
    [mydata]
        path = /var/www/data
    [testhere]
        path = /var/www/test
  4. ทดสอบเข้ามาดูผลงานที่ server นี้ ไปที่ pc ที่มีโปรแกรม rsync
    แล้วใช้คำสั่งประมาณว่า  rsync  yourserver.domain::   จะได้ผลตอบกลับมาประมาณว่า
    mydata
    testhere         
  5. ตัวอย่างคำสั่ง rsync แบบง่ายๆคือ  rsync -auv  rsync://yourserver.domain/mydata  /home/my
    หมายความว่า ไปดึงข้อมูลข้อมูลที่ใหม่หรือยังไม่มีจาก  rsync://yourserver.domain/mydata มาเก็บไว้ที่ /home/my

    หากต้องการให้ลบของเก่าที่ไม่สอดคล้องกัน ให้เติมว่า --delete ด้วย
    ดังตัวอย่าง  rsync -auv --delete-after rsync://yourserver.domain/mydata  /home/my
  6. ตัวอย่างหากติดต่อเข้ามาที่ ftp server ของ ม.สงขลานครินทร์
    ลองใช้คำสั่ง  rsync  ftp.psu.ac.th::  จะไดัรับคำตอบกลับว่า 
    centos            
    cran              
    ubuntu            
    ubuntu-releases 

    ตัวอย่างหากต้องการ rsync พื้นที่  ubuntu  ไปเก็บไว้ที่ /home/myubuntu บน server ของตนเอง
    ให้ใช้คำสั่งว่า   rsync -auv --delete-after rsync://ftp.psu.ac.th/ubuntu/*  /home/myubuntu
  7. ตัวอย่างคำสั่งเพื่อใช้ cloning ข้อมูลจาก partition หนึ่งไปยังอีก partition ทำดังนี้
    ให้ mkfs พื้นที่ partition ปลายทางก่อน แล้ว mount partition ทั้งต้นทางและปลายทาง ขึ้นมา
    ตัวอย่างเช่นตั้งชื่อว่า /mnt/source และ /mnt/target  แล้วใช้คำสั่งประมาณว่า
    rsync -alprv  /mnt/source/   /mnt/target/
    **ระวังต้องมี / ต่อท้ายพื้นที่ด้วย เพราะจะทำให้ cloning ข้อมูลได้อย่างถูกต้อง

ติดตั้ง reportdhcp บน ubuntu


  1. ต้องได้รับการติดตั้งโปรแกรม dhcpd มาก่อน
  2. หากยังไม่ได้ติดตั้ง apache + cgi ให้ทำดังนี้
    sudo apt-get install apache2 apache2-doc libapache2-mod-perl2
    sudo a2enmod cgi
    sudo /etc/init.d/apache2 reload
  3. ให้ดาวน์โหลดแฟ้ม ftp://ftp.psu.ac.th/pub/omar/reportdhcp.pl-2.1.tar.gz มาจัดการ ทำดังนี้
    wget ftp://ftp.psu.ac.th/pub/omar/reportdhcp.pl-2.1.tar.gz -P /tmp
    sudo tar -zxvf /tmp/reportdhcp.pl-2.1.tar.gz -C /usr/lib/cgi-bin
    sudo chmod +x /usr/lib/cgi-bin/reportdhcp.pl

    แล้วแก้ไขแฟ้ม /usr/lib/cgi-bin/reportdhcp.pl ดังนี้
    บรรทัดที่ 31 และ 32 ข้อความเดิมว่า
    my $dhcpfile = "/var/state/dhcp/dhcpd.leases";
    my $dhcpdconf = "/etc/dhcpd.conf";
    my $sysname = "Harrisonburg DSL";

    ให้แก้ไขเป็นว่า
    my $dhcpfile = "/var/lib/dhcp3/dhcpd.leases";
    my $dhcpdconf = "/etc/dhcp3/dhcpd.conf";
    my $sysname = "PSU-DHCP for LRC"; (โดย sysname คือชื่อของ DHCP Server ของเราเองเช่น PSU-DHCP for LRC เป็นต้น
  4. ทำแค่นี้ แล้วทดสอบผลงานที่เวบตัวอย่างว่า http://localhost/cgi-bin/reportdhcp.pl


เพิ่มเติม สำหรับubuntu 14.04 ปรับปรุงล่าสุดเมื่อวันที่ 4-6-57
ดูแลโดย wisit


  1. ต้องได้รับการติดตั้งโปรแกรม dhcpd มาก่อน (sudo apt-get install isc-dhcp-server -y)
  2. หากยังไม่ได้ติดตั้ง apache + cgi ให้ทำดังนี้
    sudo apt-get install apache2 apache2-doc libapache2-mod-perl2
    sudo a2enmod cgi
    sudo service apache2 restart

  3. ให้ดาวน์โหลดแฟ้ม ftp://ftp.psu.ac.th/pub/omar/reportdhcp.pl-2.1.tar.gz มาจัดการ ทำดังนี้
    wget ftp://ftp.psu.ac.th/pub/omar/reportdhcp.pl-2.1.tar.gz-P /tmp
    sudo tar -zxvf /tmp/reportdhcp.pl-2.1.tar.gz -C /usr/lib/cgi-bin
    sudo chmod +x /usr/lib/cgi-bin/reportdhcp.pl

    แล้วแก้ไขแฟ้ม/usr/lib/cgi-bin/reportdhcp.pl ดังนี้
    บรรทัดที่ 31 และ 32 ข้อความเดิมว่า
    my $dhcpfile = "/var/state/dhcp/dhcpd.leases";
    my $dhcpdconf = "/etc/dhcpd.conf";
    my $sysname = "Harrisonburg DSL";

    ให้แก้ไขเป็นว่า
    my $dhcpfile = "/var/lib/dhcp/dhcpd.leases";
    my $dhcpdconf = "/etc/dhcp/dhcpd.conf";
    my $sysname = "PSU-DHCP for LRC"; (
    โดย sysname คือชื่อของ DHCP Server ของเราเองเช่น PSU-DHCP for LRC เป็นต้น
  4. แก้ไข file /etc/apache2/conf-available/serve-cgi-bin.conf ประมาณบรรทัดที่ 16 ใต้คำว่า Require all granted
    ให้เพิ่ม ข้อความAllow from all แล้ว save
    สั่ง restart => sudo apache2 service apache2 restart
  5. ทำแค่นี้ แล้วทดสอบผลงานที่เวบตัวอย่างว่า http://localhost/cgi-bin/reportdhcp.pl

ติดตั้ง remastersys บน ubuntu

  • ทดสอบกับ ubuntu 11.04
  • ต้นฉบับจาก http://www.geekconnection.org/remastersys
  • ใช้สำหรับ backup ข้อมูลใน hard disk ทำให้เป็นแผ่น CD/DVD

  1. การติดตั้งจาก http://www.geekconnection.org/remastersys/repository ทำดังนี้
    ต้อง apt-get ไปเอา remastersys  จาก repository อื่น

    หากเป็น ubuntu 8.04, 8.10, 9.04  ที่ใช้ grub รุ่นเดิมๆ ให้เพิ่ม repository ด้วยคำสั่งว่า
    sudo sh -c "echo 'deb http://www.geekconnection.org/remastersys/repository ubuntu/' > /etc/apt/sources.list.d/remastersys.list"

    หากเป็น ubuntu 9.10 ที่ใช้ grub2 รุ่นใหม่ ให้เพิ่ม repository ด้วยคำสั่งว่า
    sudo sh -c "echo 'deb http://www.geekconnection.org/remastersys/repository karmic/' > /etc/apt/sources.list.d/remastersys.list"

    หากเป็น ubuntu 10.04 หรือใหม่กว่า ให้เพิ่ม repository ด้วยคำสั่งว่า
    sudo sh -c "echo 'deb http://www.geekconnection.org/remastersys/repository lucid/' > /etc/apt/sources.list.d/remastersys.list"
    หลังติดตั้ง remastersys เสร็จแล้ว จะยกเลิกบรรทัดแฟ้มนี้ออกก็ได้

    ติดตั้งด้วยคำสั่ง sudo apt-get update และ sudo apt-get install remastersys
    บางทีเจอบั๊ก โปรแกรมไม่สร้าง /home/remastersys
    ให้แก้ไขด้วยการสร้างเองด้วยคำสั่ง  sudo mkdir -p /home/remastersys
  2. หากติดตั้ง rematersys จาก http://www.geekconnection.org/remastersys/repository/ ไม่สำเร็จ
    ให้ติดตั้งด้วยตนเองทำดังนี้ เริ่มต้นติดตั้งโปรแกรมที่จำเป็นใช้งานด้วยคำสั่ง
    sudo apt-get install coreutils dialog genisoimage findutils bash passwd sed squashfs-tools casper rsync mount eject libdebian-installer4 os-prober
    sudo apt-get install ubiquity user-setup discover laptop-detect syslinux xterm util-linux xresprobe

    ต่อให้ดาวน์โหลดแฟ้ม remastersys มาติดตั้งดังนี้
    wget -P /tmp http://ftp.psu.ac.th/pub/remastersys/remastersys_3.0.0-1_all.deb
    sudo dpkg -i /tmp/remastersys_3.0.0-1_all.deb

    บางทีเจอบั๊ก โปรแกรมไม่สร้าง /home/remastersys
    ให้แก้ไขด้วยการสร้างเองด้วยคำสั่ง  sudo mkdir -p /home/remastersys
  3. การใช้งานแบบง่ายที่สุด คือเป็นการ backup ทั้ง hard disk มาเก็บไว้เป็น live DVD
    ที่สามารถนำไปบูทใช้งานได้โดยไม่ต้องมี hard disk ใช้คำสั่งว่า  sudo remastersys backup
    แล้วก็ให้รอๆๆ จนงานเสร็จ ช้าหรือเร็วขึ้นกับความเร็วของ disk
    เมื่อเสร็จแล้วจะได้แฟ้ม iso อยู่ที่ /home/remastersys/remastersys
  4. หากต้องการให้ปิดการสั่งดีดแผ่นซีดีออกหลังการสั่งให้ shutdown
    ให้แก้ไขแฟ้ม /etc/init.d/casper ประมาณบรรทัดที่ 96
    ยกเลิกบรรทัดคำสั่ง eject เดิม กลายเป็นดังตัวอย่าง
    # eject -p -m /cdrom > /dev/null 2>&1

    และแก้ไขแฟ้ม /etc/remastersys/isolinux/isolinux.cfg.vesamenu
    ให้เพิ่ม noprompt เข้าไป ตัวอย่างเช่น
    label live
      menu label live - boot the Live System
      kernel /casper/vmlinuz
      append  file=/cdrom/preseed/custom.seed boot=casper initrd=/casper/initrd.gz splash noprompt --

ติดตั้ง R บน ubuntu


  1. มี CRAN mirror ไว้ใน ม.สงขลานครินทร์ด้วย  อยู่ที่ ftp://ftp.psu.ac.th/pub/cran
    ให้เพิ่ม site ของ CRAN mirror เข้าไปใน apt sources.list 

    ทำดังนี้ แก้ไขแฟ้ม /etc/apt/sources.list
    หากเป็น ubuntu 8.04  ให้เพิ่มบรรทัดข้อความต่อท้ายว่า
    deb ftp://ftp.psu.ac.th/pub/cran/bin/linux/ubuntu hardy/

    หากเป็น ubuntu 9.04  ให้เพิ่มบรรทัดข้อความต่อท้ายว่า
    deb ftp://ftp.psu.ac.th/pub/cran/bin/linux/ubuntu jaunty/

    หากเป็น ubuntu รุ่นอื่น ก็ให้เปลี่ยนจากข้อความว่า hardy หรือ jauny ให้ถูกรุ่นที่ต้องการใช้งาน
  2. เพิ่ม apt key  ด้วยคำสั่งดังต่อไปนี้ 
    gpg --keyserver subkeys.pgp.net --recv-key E2A11821
    รอสักครู่  เมื่อเสร็จแล้วก็ใช้คำสั่งต่อไปว่า
    gpg -a --export E2A11821 | sudo apt-key add -
  3. ปรับปรุง package ใหม่ ด้วยคำสั่ง  sudo apt-get update
  4. ติดตั้งโปรแกรม R และ RKWard ด้วยคำสั่ง
    sudo apt-get install r-base r-base-dev rkward
  5. ใช้งาน R แบบ graphic ด้วย โปรแกรม RKWard ไปที่เมนู Applications->Education->RKWard
  6. การติดตั้งเพิ่ม package epicalc เข้าไปใน RKWard ทำดังนี้
    เปิดโปรแกรม RKWard  เลือกเมนู  Settings -> Configure Packages
    ได้หน้าต่าง  Configure Packages RKWard  ให้เลือกแถบ Install แล้วคลิกปุ่ม Fetch list
    ได้หน้าต่าง CRAN mirror มาให้เลื่อนไปเลือก Thailand แล้วคลิกปุ่ม OK
    กลับมาที่หน้าต่าง Configure Packages RKWard  จะมีรายชื่อ package โผล่ออกมาให้เลือก
    ให้เลื่อนไปเลือก epicalc แล้วคลิกปุ่ม install selected

    หากได้หน้าต่าง Selected library location not writable - RKWard
    อาจเป็นเนื่องจากสิทธิ์ในการเขียนพื้นที่ ให้คลิกปุ่ม Become root
    จะได้หน้าต่าง Run as root - KDE su ขึ้นมา
    ให้ป้อนรหัสผ่านของ user ของตนเองที่ใช้ login เข้าไป แล้วคลิกปุ่ม OK

    กลับมาที่หน้าต่าง Configure Packages RKWard  ให้คลิกปุ่ม OK
    เป็นอันเสร็จสิ้นการติดตั้ง package
  7. หากติดตั้ง epicalc ด้วยโปรแกรม RKWard ไม่ได้ ให้ติดตั้งจาก source ดังนี้
    ดาวน์โหลดแฟ้ม epicalc ได้จาก ftp://ftp.psu.ac.th/pub/cran/src/contrib/epicalc_2.10.1.1.tar.gz
    แล้วติตตั้งด้วยคำสั่งประมาณว่า   sudo R CMD INSTALL epicalc_2.10.1.1.tar.gz
  8. การโหลด package epicalc บน RKWard ทำดังนี้
    เปิดโปรแกรม RKWard  เลือกเมนู  Settings -> Configure Packages
    ได้หน้าต่าง  Configure Packages RKWard  ให้เลือกแถบ Local packages
    ให้เลื่อนไปเลือก epicalc แล้วคลิกปุ่ม Load
    กลับมาที่หน้าต่าง Configure Packages RKWard  ให้คลิกปุ่ม OK

  9. หากติดตั้งบน ubuntu 9.04  เมื่อเปิดโปรแกรม RKWard แล้วมี error ฟ้องว่า
    Plugins are needed: you may manage these through "Settings->Configure RKWard".
    ให้แก้ไขชี้เส้นทางของ plugins  เพิ่ม ที่ในโปรแกรม RKWard ไปที่เมนู Settings -> Configure RKWard
    ได้หน้าต่าง Settings - RKWard  เลือกขั้นตอน Plugins ไปที่ตอน Select .pluginmap file(s) คลิกปุ่ม Add 
    ได้หน้าต่าง Select .pluginmap-file - RKWard  ให้เลือกเป็น /usr/share/kde4/apps/rkward/all.pluginmap
    กลับมาได้หน้าต่าง Settings - RKWard ให้คลิกปุ่ม OK
    ให้ออกจากโปรแกม RKWard  แล้วเปิดโปรแกรม RKWard อีกที คราวนี error ก็จะหายไป

ติดตั้ง quota บน ubuntu

  • ทดสอบกับ ubuntu 10.04
  • เพื่อจัดการโควต้าดิสก์

  1. ติดตั้งโปรแกรมโควต้าดิสค์ด้วยคำสั่ง sudo apt-get install quota
  2. แก้ไขแฟ้ม /etc/fstab ในส่วนของ disk partition ที่ต้องการควบคุมโควต้า
    จากเดิมสมมติตัวอย่างเป็นประมาณว่า
    # <file system> <mount point>   <type>  <options>       <dump>  <pass>
    UUID=c97aad4f-fee7-40b4-9cba-aab7188169f4 /               ext3    errors=remount-ro 0       1
    /dev/hda1       /               ext3    defaults,errors=remount-ro 0       1 

    ให้แก้ไขแทรกเพิ่มข้อความว่า  usrquota,grpquota, เข้าไป กลายเป็น
    UUID=c97aad4f-fee7-40b4-9cba-aab7188169f4 /               ext3    usrquota,grpquota,errors=remount-ro 0       1
  3. สร้างแฟ้มสำหรับเก็บข้อมูลโควต้า ด้วยคำสั่งดังนี้
    sudo touch /aquota.user  /aquota.group
    sudo chmod 600 /aquota.user /aquota.group
  4. จัดการ mount พื้นที่ / ใหม่ ด้วยคำสั่ง  sudo mount -o remount /
    ตรวจสอบความพร้อมของระบบ ด้วยคำสั่ง sudo quotacheck -agmuv
    แล้วเริ่มระบบโควต้าด้วยคำสัง sudo quotaon -a
  5. ทดสอบดูผลด้วยคำสั่ง sudo repquota -a ได้ผลดังประมาณตัวอย่าง
    *** Report for user quotas on device /dev/hda2
    Block grace time: 7days; Inode grace time: 7days
                            Block limits                File limits
    User            used    soft    hard  grace    used  soft  hard  grace
    ----------------------------------------------------------------------
    root      -- 2573608       0       0         150844     0     0
    daemon  --       8       0       0              3     0     0
    lp        --      12       0       0              3     0     0
  6. กำหนดค่าโควต้าดิสก์ของผู้ใช้แต่ละคนด้วยคำสั่ง  sudo setquota
    ตัวอย่างเช่นต้องการจำกัดผู้ใช้ชื่อ myuser
    มีพื้นที่ไม่เกิน 200000 blocks(200 Mbytes) และ/หรือ 1000 inodes(แฟ้ม)
    โดยเริ่มเตือนที่ 160000 blocks(160 Mbytes) และ/หรือ 800 inodes ด้วยตัวอย่างคำสั่ง
    sudo setquota -u myuser 160000 200000 800 1000 -a
  7. ตรวจสอบข้อมูลโควต้าของผู้ใช้ชื่อ myuser ด้วยตัวอย่างคำสั่ง  sudo quota -v myuser
    Disk quotas for user myuser (uid 14533):
         Filesystem  blocks   quota     limit   grace   files   quota   limit   grace
         /dev/hda2       4  160000  200000             1     800  1000
    ความหมายของค่าต่างๆตามคอลัมน์คือ
    blocks=ขนาดพื้นที่ดิสก์ที่ใช้ไป, quota=ขนาดดิสก์ที่เริ่มเตือน, limit=ขนาดดิสก์ที่จำกัด
    files=จำนวนแฟ้มที่ใช้ไป, quota=จำนวนแฟ้มที่เริ่มเตือน, limit=จำนวนแฟ้มที่จำกัด
  8. เนื่องจากระบบไม่ได้ตรวจสอบโควต้าตลอดเวลาทุกครั้งที่มีผู้ใช้งานแฟ้มข้อมูล
    จึงต้องตั้งค่าให้มีการตรวจสอบทุกวันโดยสร้างแฟ้มข้อมูลชื่อ
    /etc/cron.daily/quota-check มีข้อมูลดังนี้
    #!/bin/bash
    /sbin/quotaoff -a
    /sbin/quotacheck -agumv
    /sbin/quotaon -a

    และตั้งค่าให้มีการตรวจสอบโควต้าดิสก์ทุกครั้งที่บูทเครื่อง
    โดยใส่เพิ่มบรรทัดข้อความคำสั่งเข้าไปไว้ในแฟ้ม /etc/rc.local ดังนี้
    sh /etc/cron.daily/quota-check

ติดตั้ง pykota บน ubuntu

  • ทดสอบบน linux ubuntu 10.04.4 server, postgresql-8.4 และ pykota-1.27alpha13_unofficial
  • ต้นฉบับ pykota อยู่ที่ http://www.pykota.com

  1. ติดตั้ง linux ubuntu 10.04.4 server เสร็จแล้ว ต้องเพิ่ม ubuntu desktop เข้าไปด้วยคำสั่ง
    sudo apt-get install ubuntu-desktop
    เสร็จแล้วให้รีบูท server ใหม่ด้วยคำสั่ง
    sudo reboot
  2. ให้ login เข้าไปทำงาน ติดตั้งโปรแกรม build และ cups ด้วยคำสั่ง
    sudo apt-get install build-essential cupsys cupsys-client cupsys-bsd cupsys-driver-gutenprint system-config-printer-gnome
  3. เตรียมความพร้อมของ network CUPS print server ต้องทดสอบให้ผ่าน ไม่งั้นทำต่อไม่ได้
    ใช้คำสั่ง system-config-printer
    ทดสอบติดตั้งคิวเครื่องพิมพ์ชื่อ abc ใช้ driver เป็น Generic PCL-4 หรือ Generic PostScript Printer ขึ้นกับรุ่นของเครื่องพิมพ์
    เปิดอนุญาต sharing ให้เครือข่ายพิมพ์ได้
    ตัวอย่างคำแนะนำ:
    เมนู System > Administration > Printing > เลือก Add
    เลือกว่า Printer ของเราต่ออยู่กับแบบใด เช่น Ricoh Aficio MP 2000 ก็เลือกเป็น LPD/LPR Host or Printer ได้ แล้วในช่อง Host ใส่แค่ IP Address ของเครื่องพิมพ์ แล้วคลิก Forward > เลือก Driver > ตั้งชื่อเครื่องพิมพ์ เช่น Ricoh-Aficio-MP-2000 (ซี่งชื่อนี้จะใช้ตอน Add Printer ที่ Windows)
    เมื่อเสร็จ ให้คลิกขวาที่ไอคอน ให้มีเครื่องหมายถูกที่คำว่า Shared
    เลือก Server > Settings > ทำเครื่องหมายถูกที่ Publish shared printers connected to this system และ ทำเครื่องหมายถูกที่ Allow printing from the Internet
  4. บนวินโดวส์ XP หรือ 7 ให้ติดตั้ง network printer ชี้มาที่ url คือ http://your.pc.address:631/printers/abc
    ตัวอย่างคำแนะนำ:
    เปิด Windows > login ด้วย user ชื่อ John (สังเกต J ตัวใหญ่ แต่ใน pykota กลับใช้ j ตัวเล็ก)
    เมนู Start > Devices and Printers > Add a printer
    เลือก Add a network, wireless or Bluetooth printer
    เลือก The printer that I want isn't listed
    เลือก Select a shared printer by name > ใส่ http://your.pc.address:631/printers/Ricoh-Aficio-MP-2000
    เลือก Driver ให้ตรงรุ่น > ตั้งชื่อเครื่องพิมพ์ตามชอบ > คลิก Finish
    ทดสอบพิมพ์จากวินโดวส์ให้ใช้งานได้เรียบร้อย
  5. ติดตั้งโปรแกรม postgresql ดังนี้
    sudo apt-get install subversion postgresql postgresql-client postgresql-common libX11-dev libxt-dev libxext-dev
    sudo apt-get install python-dev python-jaxml python-reportlab python-reportlab-accel python-psyco python-pygresql
    sudo apt-get install python-osd python-egenix-mxdatetime python-imaging python-pysnmp4 python-chardet python-pam
    สั่งให้ postgresql ทำงานด้วยคำสั่ง
    sudo /etc/init.d/postgresql-8.4 start

    ต่อไปให้แก้ไขแฟ้ม /etc/postgresql/8.4/main/pg_hba.conf เติมข้อความนี้ต่อไปที่ท้ายสุดของแฟ้ม
    host all all 127.0.0.1/32 trust
    host all all 10.0.5.3/24 trust
    ***ให้เปลี่ยนเลข ip จาก 10.0.5.3 เป็นเลข ip ของ server ที่กำลังใช้
    เสร็จแล้วให้ทำงานใหม่ด้วยคำสั่ง
    sudo /etc/init.d/postgresql-8.4 restart
  6. ติดตั้ง pkpgcounter ให้ดาวน์โหลดจาก ftp://ftp.psu.ac.th/pub/pykota/pkpgcounter-3.50.tar.gz
    ด้วยคำสั่ง wget ftp://ftp.psu.ac.th/pub/pykota/pkpgcounter-3.50.tar.gz
    แตกแฟ้มออกด้วยคำสั่ง sudo tar -zxvf pkpgcounter-3.50.tar.gz -C /usr/share
    เข้าไปทำงานต่อด้วยคำสั่ง cd /usr/share/pkpgcounter-3.50
    สั่งทำงานต่อด้วยคำสั่ง sudo python setup.py install
  7. ติดตั้ง pkipplib ให้ดาวน์โหลดจาก http://ftp.psu.ac.th/pub/pykota/pkipplib-0.07.tar.gz ด้วยคำสั่ง
    wget -P /tmp http://ftp.psu.ac.th/pub/pykota/pkipplib-0.07.tar.gz
    แตกแฟ้มออกด้วยคำสั่ง
    sudo tar -zxvf /tmp/pkipplib-0.07.tar.gz -C /usr/share
    เข้าไปทำงานต่อด้วยคำสั่ง
    cd /usr/share/pkipplib-0.07
    sudo python setup.py install
  8. ติดตั้ง ghostpcl ให้ดาวน์โหลดจาก http://ftp.psu.ac.th/pub/pykota/ghostpcl_1.41p1.tar.bz2 ด้วยคำสั่ง
    wget -P /tmp http://ftp.psu.ac.th/pub/pykota/ghostpcl_1.41p1.tar.bz2
    แตกแฟ้มออกด้วยคำสั่ง
    sudo tar -jxvf /tmp/ghostpcl_1.41p1.tar.bz2 -C /usr/share
    เข้าไปทำงานต่อด้วยคำสั่ง
    cd /usr/share/ghostpcl_1.41p1
    sudo make fonts
    sudo make product
    sudo make install
  9. ติดตั้ง pykota ให้ดาวน์โหลดจาก http://ftp.psu.ac.th/pub/pykota/pykota-1.27_unofficial.tar.gz ด้วยคำสั่ง
    wget -P /tmp http://ftp.psu.ac.th/pub/pykota/pykota-1.27_unofficial.tar.gz
    แตกแฟ้มออกด้วยคำสั่ง
    sudo tar -zxvf /tmp/pykota-1.27alpha13_unofficial.tar.gz -C /usr/share
    เข้าไปทำงานต่อด้วยคำสั่ง
    cd /usr/share/pykota-1.27alpha13_unofficial/
    sudo python setup.py install
  10. สร้างผู้ใช้ pykota ด้วยคำสั่ง
    sudo adduser --system --group --home /etc/pykota --gecos Pykota pykota
    ให้ lp เป็นสมาชิกของ pykota ด้วยคำสั่ง
    sudo adduser lp pykota
    จัดการ postgresql ต่อดังนี้
    sudo su - postgres -c "psql -f /usr/share/pykota-1.27alpha13_unofficial/initscripts/postgresql/pykota-postgresql.sql template1"
  11. แก้ไขข้อมูลแฟ้ม /etc/cups/printers.conf เพื่อให้พิมพ์ผ่าน pykota
    สมมติว่าเครื่องพิมพ์ชื่อ abc แก้ไขจากตัวอย่างเดิม
    <DefaultPrinter abc>
    DeviceURI parallel:/dev/lp0
    ที่บรรทัด DeviceURI parallel:/dev/lp0
    ให้แทรกเพิ่มคำว่า cupspykota:// เข้าไป กลายเป็นดังตัวอย่าง
    DeviceURI cupspykota://parallel:/dev/lp0

    ตัวอย่างที่ทำการทดสอบเครื่องพิมพ์ชื่อ Ricoh-Aficio-MP-2000 แบบ LPD
    <DefaultPrinter Ricoh-Aficio-MP-2000>
    ...
    DeviceURI cupspykota://lpd://192.168.x.x
    ...


    หรือตัวอย่างเดิมเป็นว่า DeviceURI hp:/usb/hp_LaserJet_1320_series?serial=00CNHJ5DM021
    ให้แก้ไขเป็นว่า DeviceURI cupspykota://hp:/usb/hp_LaserJet_1320_series?serial=00CNHJ5DM021

    หรือตัวอย่างเดิมเป็นว่า DeviceURI ipp://192.168.1.7:631/printers/xyz
    ให้แก้ไขเป็นว่า DeviceURI cupspykota://ipp://192.168.1.7:631/printers/xyz

    หรือตัวอย่างเดิมเป็นว่า DeviceURI socket://192.168.1.7:9100
    ให้แก้ไขเป็นว่า DeviceURI cupspykota://socket://192.168.1.7:9100

    เสร็จแล้วให้ reload ใหม่ ด้วยคำสั่ง
    sudo /etc/init.d/cups restart
  12. ทำให้ cups รู้จักกับ pykota ดังนี้
    sudo cp /usr/share/pykota-1.27alpha13_unofficial/bin/cupspykota /usr/lib/cups/backend
    sudo chmod 755 /usr/lib/cups/backend/*
    sudo /etc/init.d/cups restart
    sudo cp /usr/share/pykota-1.27alpha13_unofficial/conf/pykota.conf.sample /etc/pykota/pykota.conf
    sudo cp /usr/share/pykota-1.27alpha13_unofficial/conf/pykotadmin.conf.sample /etc/pykota/pykotadmin.conf
    sudo chown pykota.pykota /etc/pykota/pykota.conf /etc/pykota/pykotadmin.conf
  13. แก้ไขแฟ้ม /etc/pykota/pykota.conf
    ไปที่ประมาณบรรทัด 1419 แล้วลบบรรทัดข้อความว่า policy: deny ทิ้ง
    แล้วไปที่บรรทัดล่างสุดของแฟ้ม เติมต่อท้ายว่า
    [abc]
    policy: external($(which pkusers) --add --limitby balance --balance 20 %(username)s && $(which edpykota) --add --printer %(printername)s %(username)s)
    enforcement : strict
    หรือเขียนอีกแบบใส่ path ที่อยู่จริงของคำสั่ง pkusers และ edpykota
    [abc]
    policy: external(/usr/local/bin/pkusers --add --limitby balance --balance 20 %(username)s && /usr/local/bin/edpykota --add --printer %(printername)s %(username)s)
    enforcement : strict


    ตัวอย่างตั้งชื่อเครื่องพิมพ์ว่า Ricoh-Aficio-MP-2000 ให้เขียนแบบนี้
    [Ricoh-Aficio-MP-2000]
    policy: external(/usr/local/bin/pkusers --add --limitby balance --balance 20 %(username)s && /usr/local/bin/edpykota --add --printer %(printername)s %(username)s)
    enforcement : strict


    ตัวอย่างนี้ อนุญาตโดยอัตโนมัติ พิมพ์ได้ 20 แผ่น

    อธิบาย which pkusers สำหรับ ubuntu 10.04.4 จะได้คำตอบเป็น /usr/local/bin/pkusers
    อธิบาย which edpykota สำหรับ ubuntu 10.04.4 จะได้คำตอบเป็น /usr/local/bin/edpykota
    หากเป็น ubuntu เวอร์ชั่นอื่นๆ อาจเปลี่ยนเป็นอย่างอื่นได้ การใช้ which จะมั่นใจได้ว่าได้ path ที่ถูกต้องของคำสั่ง pkusers


    เสร็จแล้วให้ postgresql เริ่มทำงานใหม่ ด้วยคำสั่ง
    sudo /etc/init.d/postgresql-8.4 restart
  14. ลองด้วยคำสั่ง
    pkprinters --add --charge 1.0 --description "Printer for Students" abc
    ถ้าได้ผล ทำนองนี้ แสดงว่าใช้ได้
    Creation...
    Done. Average speed : ... entries per second.
    ตัวอย่างตั้งชื่อเครื่องพิมพ์ว่า Ricoh-Aficio-MP-2000
    pkprinters --add --charge 1.0 --description "Printer for Students" Ricoh-Aficio-MP-2000
  15. คำอธิบายที่เราแก้ไขแฟ้ม /etc/pykota/pykota.conf (ตามข้อด้านบน) หมายถึง การทำการ add user ให้อัตโนมัติ
    หากทำแบบ manual จะหมายถึงแบบนี้ (ไม่ต้องทำตาม)
    ตัวอย่างตั้งชื่อเครื่องพิมพ์ว่า Ricoh-Aficio-MP-2000
    อนุญาต username ชื่อ mama
    pkusers --add --limitby balance mama
    pkusers -b 20 mama
    edpykota --add --printer Ricoh-Aficio-MP-2000 mama
    repykota
    อนุญาต username ชื่อ john
    pkusers --add --limitby balance john
    pkusers -b 20 john
    edpykota --add --printer Ricoh-Aficio-MP-2000 john
    repykota
  16. แค่นี้ก็ใช้งานได้แล้ว ให้ทดสอบพิมพ์ได้เลยทั้งจากลินุกซ์และวินโดวส์
    หากมีปัญหาระหว่างใช้งานพิมพ์ไม่ออก
    ให้ลองตรวจสอบดูคิวงานพิมพ์ด้วยคำสั่ง lpq
    ถ้ามี job ค้างแสดงว่าเครื่องพิมพ์อาจมีปัญหา

    แก้ไขโดยการลบคิวงานที่ค้างทิ้งให้หมดก่อน ด้วยคำสั่ง cancel -a
    แล้วสั่งให้คิวพิมพ์รับงานใหม่
    ด้วยคำสั่งตัวอย่าง cupsenable abc(ชื่อคิว)
  17. คำสั่งในการดูจำนวนกระดาษและโควต้าที่พิมพ์คือ repykota
    คำสั่งในการดูจำนวนเพิ่มหรือจัดการโควต้าดังนี้
    pkusers -b โควต้า ยูสเซอร์เนม
    เช่น -b +20 เพิ่ม 20 ถ้า -b -20 ลด 20
    (เพื่อให้เกิดความสะดวก หากพัฒนาเป็น web app เช่น ตัวอย่าง phppykotaadmin ตัวอย่างในข้อต่อไปก็จะสะดวกกว่ามาก ลองใช้ดู)
  18. ติดตั้งโปรแกรม phppykotaadmin ดังนี้
    ต้องติดตั้ง apache และ php ก่อน ด้วยคำสั่ง
    sudo apt-get install apache2 php5
    ดาวน์โหลดโปรแกรมจาก http://ftp.psu.ac.th/pub/pykota/phppykotaadmin-0.56.tar.gz
    wget -P /tmp http://ftp.psu.ac.th/pub/pykota/phppykotaadmin-0.56.tar.gz
    แล้วแตกแฟ้มด้วยคำสั่ง
    sudo tar -zxvf /tmp/phppykotaadmin-0.56.tar.gz -C /var/www

    แก้ไขแฟ้ม /etc/sudoers เพิ่มบรรทัดข้อความคือ (เวอร์ชั่นเก่าจะใช้ /usr/bin แต่อันนี้ใช้ /usr/local/bin)
    www-data ALL= NOPASSWD:/usr/local/bin/edpykota
    www-data ALL= NOPASSWD:/usr/local/bin/pkprinters
    www-data ALL= NOPASSWD:/usr/local/bin/pkusers
    www-data ALL= NOPASSWD:/usr/local/bin/dumpykota
    www-data ALL= NOPASSWD:/usr/local/bin/repykota
    *** อาจใช้โปรแกรม visudo แก้ไขแฟ้มนี้ก็ได้ตามถนัด ดังนี้
    sudo visudo

    แล้วสั่งให apache ทำงานใหม่ด้วยคำสั่ง
    sudo /etc/init.d/apache2 restart
    เข้าไปทดสอบผลงานได้ที่ http://localhost/phppykota
    ผู้ใช้ทั่วไปเข้าไปที่ http://localhost/phppykota/user/
    ผู้ดูแลระบบเข้าไปที่ http://localhost/phppykota/admin/
  19. เพื่อความปลอดภัย ให้กำหนดสิทธิ์ผู้ดูแลระบบ phppykotaadmin ด้วยการควบคุมพื้นที่ /var/www/phppykota ดังนี้

    ติดตั้งเพิ่มเติมด้วยคำสั่ง
    sudo apt-get install libapache2-mod-auth-pam
    sudo adduser www-data shadow
    sudo ln -s /etc/pam.d/apache2 /etc/pam.d/httpd

    แก้ไขแฟ้ม /etc/apache2/sites-available/default
    ให้แทรกเพิ่มบรรทัดข้อความไปที่ตอนท้ายของแฟ้มก่อน </VirtualHost> ดังตัวอย่างว่า
    <Directory /var/www/phppykota/admin/>
    AuthBasicAuthoritative off
    AuthPAM_Enabled On
    AuthType Basic
    AuthName "secure area"
    Require valid-user
    AllowOverride none
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    </Directory>
    เสร็จแล้วสั่งให้ apache ทำงานใหม่ด้วยคำสั่ง
    sudo /etc/init.d/apache2 restart

    ลองเข้าไปใช้งานที่ http://localhost/phppykota/admin/
    จะมีหน้าต่างถามให้ป้อนชื่อผู้ใช้และรหัสผ่าน (ใช้ linux user account) หากถูกต้องจึงจะให้ทำงานต่อไปได้
  20. (ข้อนี้มีเงื่อนไขในการใช้ คือ ubuntu 8.04 กับ pykota 1.26 เท่านั้น)
    การใช้ pknotify + pykoticon ทำดังนี้
    ต้องติดตั้งโปรแกรม pykoticon ลงบน PC client ที่ต้องการคุยด้วยก่อน
    บน PC clinet ที่เป็น XP ให้ดาวน์โหลดแฟ้ม http://ftp.psu.ac.th/pub/pykota/pykoticon-1.02.zip
    แตกแฟ้มออกมา แล้วแก้ไขแฟ้ม pykoticon.vbs ที่บรรทัดสุดท้าย
    retcode = Wshshell.run ("%comspec% /C pykoticon.exe --port 7654 nordine.ateur", 0, FALSE)
    ให้แก้ไขข้อความ nordine.ateur เป็นเลข ip ของ pykota server เช่น
    retcode = Wshshell.run ("%comspec% /C pykoticon.exe --port 7654 192.168.5.51", 0, FALSE)
    แก้ไขแค่นี้ แล้วสั่งให้โปรแกรม pykoticon.vbs ทำงาน ตอนนี้ PC client ก็พร้อมรับข้อมูลจาก pykota server แล้ว

    ไปที่ pykota server ลองสั่งให้ส่งข้อความไปยัง PC client ดังตัวอย่าง
    pknotify -d 192.168.5.36 -t 2 -n "hello"
    ที่ PC client จะมี pop up ขึ้นมาว่า hello

    ลองคำสั่ง pknotify ไปยัง pc เป้าหมายปลางทาง ตัวอย่างเช่น
    sudo pknotify -d 192.168.5.36 --checkauth --ask "Your name:username:" "Your password:password:"
    บน PC client ปลายทางจะมี popup ขึ้นมาให้ใส่ username และ password

ติดตั้ง project-open บน ubuntu


  1. ต้องให้ server ต่อเข้าและสามารถใช้งานอินเทอร์เนตได้ก่อน
  2. เข้าไปทำงานในพื้นที่ /usr/local/src ด้วยคำสั่ง   cd /usr/local/src
    ดาวน์โหลด install script มาเก็บไว้ก่อน

    หากเป็นรุ่น 32 bit ใช้คำสั่ง sudo wget  http://www.venkatmangudi.com/project-open-34/po-install-script-32bit.sh
    แล้วติดตั้งต่อด้วยคำสั่ง sudo sh /usr/local/src/po-install-script-32bit.sh | tee poinstall.log

    หากเป็นรุ่น 64 bit ใช้คำสั่ง sudo wget  http://www.venkatmangudi.com/project-open-34/po-install-script-64bit.sh
    แล้วติดตั้งต่อด้วยคำสั่ง sudo sh /usr/local/src/po-install-script-64bit.sh | tee poinstall.log
  3. ระบบจะเริ่มดำเนินการติดตั้งไปเรื่อยๆ เมื่อถึงหน้าต่าง Package configuration
    ข้อความเตือนว่า Obsolete major version 8.2 ...แนะนำให้ติดตั้ง postgresql-8.4 แทน
    ไม่ต้องสนใจ ให้เลื่อกไปเลือก <Ok> เพื่อทำงานต่อไป
  4. ระบบจะทำงานดาวน์โหลดข้อมูลจากอินเทอร์เนตมาเรื่อยๆจนกระทั่งมาหยุดรอที่ข้อความประมาณว่า
    Downloading other required files using CVS
    CVS password: Logging in to :pserver:anonymous@aolserver.cvs.sourceforge.net:2401/cvsroot/aolserver
    ให้กดแป้น Enter  จะได้ข้อความประมาณว่า
    cvs login: CVS password file /home/mama/.cvspass does not exist - creating a new file
    cvs checkout: Updating nspostgres
    ระบบจะทำงานต่อไป ให้รอๆๆ จนกระทั่งได้ข้อความว่า
    Rebooting in 30 seconds... Press Control-C to avoid reboot. Reboot is necessary for Project Open Install completion
    ระบบจะทำการรีบูทเองภายใน 30 วินาที
  5. ให้รอจน server บูทใหม่จนเสร็จ แล้วลองใช้ browser เข้าไปที่เวบ http://localhost:8000
    ถ้าได้หน้าเวบ ]project-open[ V3.4 แสดงว่าติดตั้งได้สำเร็จแล้ว
  6. ติดตั้งระบบสามารถส่งอีเมล์ออกต้องติดตั้งโปรแกม postfix ดังนี้
    ติดตั้งด้วยคำสั่ง sudo apt-get install postfix
    ระบบจะมีหน้าต่าง Postfix Configuration ขึ้นมา  ให้กด TAB ไปเลือกแถบ <Ok>
    จะได้อีกหน้าต่างให้เลื่อนไปเลือกแถบ Local only แล้วกด TAB ไปเลือกแถบ <Ok>
    ที่ช่อง System mail name :  ให้ป้อนชื่อ server
    ระบบจะติดตั้งต่อไปจนเสร็จ

    ให้แก้ไขแฟ้ม /etc/postfix/main.cf ปรับปรุงค่าตัวแปรดังนี้คือ
    default_transport = smtp
    relay_transport = smtp

    หากต้อง relay mail ไปให้ server อื่นส่งแทน ให้แก้ไขแฟ้ม /etc/postfix/main.cf 
    ตั้งค่าตัวแปรดังตัวอย่าง relayhost = other.mail.net

    เสร็จแล้วสั่งให้ posftix ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/postfix force-reload
  7. ทดลองเข้าหน้าเวบ http://localhost:8000/acs-lang/admin/  ให้ login เข้าด้วย username ว่า sysadmin@tigerpond.com รหัสผ่านว่า system
    เริ่มจัดการระบบโดยไปเมนูด้านบน เลือกแถบ Admin   ได้หน้าเวบ ASUS Terms & Conditions  ให้เลื่อนไปด้านล่างสุด คลิกเลือกปุ่ม Enable ASUS
    จะได้หน้าเวบที่มีแถบเมนูสำหรับ Admin เพิ่มขึ้นมาอีกชุด


    ตั้งค่าภาษาไทย  ไปที่หน้าเวบ http://localhost:8000/acs-lang/admin/
    ได้หน้าเวบ Administration of Localization ไปที่ส่วนของ Installed Locales
    ให้เลื่อนไปหา th_TH แล้วแล้วคลิกเลือกเปลี่ยนให้เป็น Enabled
    แล้วเลื่อนกลับไปด้านบนเลือกหัวข้อ Change system locale: ได้หน้าเวบ  Localization Parameters
    ที่ช่อง SiteWideLocale ให้เปลี่ยนกลายเป็นว่า th_TH
    ที่ช่อง SystemTimezone ให้เปลี่ยนกลายเป็นว่า Asia/Bangkok  แล้วคลิกปุ่ม OK

  8. ติดตั้งให้เชื่อมต่อ LDAP ทำดังนี้ 
    ต้องติดตั้งเครื่องมือของ LDAP  ก่อน ด้วยคำสั่ง sudo apt-get install ldap-utils

    เริ่มจัดการระบบโดยไปเมนูด้านบน เลือกแถบ Admin 
    ได้หน้าเวบที่แถบ Admin homeที่ส่วนของ Aministration ให้คลิกเลือก Package Manager
    ได้หน้าเวบ Package Manager  ไปด้านล่างสุด เลือกหัวข้อ  Install packages.
    ได้หน้าเวบ Package Installation ที่ส่วนของ Select Packages to Install
    ให้คลิกเลือก LDAP Authentication Driver for Active Directory 3.4.0.0.0  แล้วคลิกปุ่ม Next--> 
    ได้หน้าเวบข้อความประมาณว่า
    Installing packages...
    Installing LDAP Authentication Driver for Active Directory 3.4.0.0.0
    Installed LDAP Authentication Driver for Active Directory, version 3.4.0.0.0.
    Package enabled.
    Mounted an instance of the package at /auth-ldap-adldapsearch
    Done installing packages.
    You should restart the server now to make installed and upgraded packages available. Click here to restart the server now.
    ให้คลิกลิงค์ว่า Click here แล้ว project-open จะทำการ restart ตัวเอง

    ให้เริ่มจัดการระบบโดยไปเมนูด้านบน เลือกแถบ Admin แล้วเลือกแถบ  LDAP
    ได้หน้าเวบ Authentication ให้คลิกเลือก  Create new authority
    ได้หน้าเวบ New Authority ให้ป้อนข้อมูลดังนี้ 
    ที่ส่วนของ General   ที่ช่อง Name ให้ใส่ว่า LDAP  ที่ช่อง Short Name ให้ใส่ว่า LDAP  ที่ช่อง Enabled ให้คลิกเลือกเป็น Yes
    ที่ส่วนของ Authentication ที่ช่อง Authentication ให้คลิกเลือกเป็น LDAP
    ที่ส่วนของ Password Management ที่ช่อง Password Management  ให้คลิกเลือกเป็น LDAP
    ที่ส่วนของ Account Registration ที่ช่อง Account Registration ให้คลิกเลือกเป็น --Disabled--
    ที่ส่วนของ On-Demand Sync ที่ช่อง User Info ให้คลิกเลือกเป็น LDAP
    ที่ส่วนของ Batch Synchronization ที่ช่อง Batch sync enabled  ให้คลิกเลือกเป็น No
    ที่ช่อง GetDocument implementation และ ProcessDocument implementation ให้เลือกเป็น --Disabled--  แล้วคลิกปุ่ม OK
    ถึงตอนนี้ server จะ restart เอง ให้รอสักครู่ใหญ่ไม่เกิน 5 นาที ก็กลับมาที่หน้าเวบเดิม

    ให้จัดการระบบโดยไปเมนูด้านบน เลือกแถบ Admin แล้วเลือกแถบ  LDAP
    ได้หน้าเวบ Authentication ที่ส่วนของ Authorities ให้คลิกเลือกช่อง LDAP
    ได้หน้าเวบ LDAP ให้คลิกเลือก Configure drivers for this authority
    ได้หน้าเวบ Configure  ให้ป้อนข้อมูลดังนี้
    ที่ช่อง DNPattern:  ให้ใส่ว่า {username}@tigerpond.com
    ที่ช่อง UsernameAttribute: ให้ใส่ว่า uid
    ที่ช่อง BaseDN: ให้ใส่ว่า ou=People,dc=project-open,dc=com
    ที่ช่อง LdapURI: ให้ใส่ว่า ldap://ldap.project-open.com/
    ที่เหลือปล่อยว่างได้ แล้วคลิกปุ่ม OK
  9. การล้างข้อมูล demo ที่ติดมาตอนติดตั้ง ให้จัดการระบบโดยไปเมนูด้านบน เลือกแถบ Admin
    จะได้หน้าเวบที่มีแถบเมนูสำหรับ Admin เพิ่มขึ้นมาอีกชุด แล้วให้เลือกแถบ Admin Home
    ที่ส่วนของ Dangerous!! ให้คลิกเลือกหัวข้อ Cleanup Demo Data
    ได้หน้าเวบ Nuke Demo Data ให้คลิกเลือก Nuke all demo data in the system
    ได้หน้าเวบ Cleanup Demo Data มีคำถามว่า  Are you really sure to delete all data in your system?
    ให้ยืนยันล้างข้อมูลด้วยการคลิกที่ปุ่ม Cleanup All Data in the System  แล้วรอๆๆ จนเสร็จ
  10. แก้ไขให้ login เข้าด้วย username แทนอีเมล์  ให้จัดการระบบโดยไปเมนูด้านบน เลือกแถบ Admin
    จะได้หน้าเวบที่มีแถบเมนูสำหรับ Admin เพิ่มขึ้นมาอีกชุด แล้วให้เลือกแถบ Parmeters
    ได้หน้าเวบ Parameters ให้ไปคลิกที่ส่วนของ acs-kernel
    ได้หน้าเวบ Kernel Parameters ไปที่ส่วนของ Security
    ที่ช่อง UseEmailForLoginP ให้แก้ไขเปลี่ยนเป็น 0  แล้วคลิกปุ่ม OK
  11. --ยังไม่สำเร็จ
    หากต้องการเปลี่ยนเป็น port 80 แทน 8000 ตามที่ระบบติดตั้งมาไว้แล้ว ให้ทำดังนี้
    แก้ไขแฟ้ม /web/projop/etc/config.tcl   ปรับปรุงข้อมูลจากเดิม
    set httpport                  8000
    set httpsport                 8443
    เปลี่ยนใหม่ให้เป็นว่า
    set httpport                  80
    set httpsport                 443
    แล้วให้รีบูท server ใหม่
  12. หากต้องการแก้ไขหน้าแรกของเวบ ให้แก้ไขที่แฟ้ม /web/projop/www/index.adp
    ตัวอย่างแก้ไขให้หน้าแรกแสดงหน้าเวบ login เลย ทำดังนี้

    สร้างแฟ้ม /web/projop/www/index.tcl ใหม่มีข้อมูลดังนี้
    ad_page_contract {
        project-open Intranet index.tcl
        Provides the index.adp page with default values for
        the different login parameters
    } {
        {authority_id ""}
        {username ""}
        {email ""}
        {return_url "/intranet/"}
    }

    สร้างแฟ้ม /web/projop/www/index.adp ใหม่มีข้อมูลดังนี้
    <!-- ]project-open[ Intranet index.adp page -->
    <html><head><title>]project-open[ Intranet</title>
    <meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
    <link media=screen href="/intranet/style/style.default.css" type=text/css rel=StyleSheet>
    <body text=black bgColor=white>
    <table cellSpacing=0 cellPadding=0 width="100%" border=0>
      <tr>
        <td><A href="http://www.project-open.com/">
          <img src=/intranet/images/projop-logo.gif border=0 width=230 height=52>
        </A></td>
        <td vAlign=center align=middle></td>
        <td vAlign=center align=right></td>
      </tr>
    </table>
    <table cellSpacing=0 cellPadding=0 width="100%" border=0>
      <tr>
        <td align=left>
          <table cellSpacing=0 cellPadding=0 border=0>
            <tr height=19>
              <td><img alt="" src="/intranet/images/navbar_default/left-sel.gif"
                       width=19 border=0 heigth="19"></td>
              <td class=tabsel>
         <A class=whitelink href="/intranet/index">Home</A>
       </td>
              <td>
              <td><img alt="" src="/intranet/images/navbar_default/right-sel.gif"
                       width=19 border=0 heigth="19"></td>
              </tr>
          </table>
        </td>
      </tr>
      <tr>
        <td class=pagedesriptionbar colSpan=2>
          <table cellPadding=1 width="100%">
            <tr><td class=pagedesriptionbar vAlign=center>
              ]project-open[ Intranet
            </td></tr>
          </table>
        </td>
      </tr>
    </table><br>
    <table cellSpacing=0 cellPadding=0 width="100%" border=0>
      <tr>
        <td vAlign=top>
          <table cellSpacing=0 cellPadding=5 border=0>
            <tr><td class=tableheader>]project-open[ Links</td></tr>
            <tr><td class=tablebody>
                <LI><A href="/intranet/">]project-open[ Intranet</a><br>
                <LI><A href="http://www.project-open.com/">]project-open[ Web Site </a>
                <LI><A href="/">]project-open[ Developer Community</a>
                <LI><A href="/doc/">Documentation Home</a>
            </td></tr>
          </table>
        </td>
        <td>
          <table cellSpacing=0 cellPadding=5 border=0>
            <tr><td class=tableheader>Intranet Login</td></tr>
            <tr><td class=tablebody>
    <!-- Include the login widget -->
    <include src="/packages/acs-subsite/lib/login" return_url="@return_url;noquote@" no_frame_p="1" authority_id="@authority_id@" username="@username;noquote@" email="@email;noquote@" &="__adp_properties">
             </td>
            </tr>
          </table>
        </td>
      </tr>
    </table>
    <table cellSpacing=0 cellPadding=5 width="100%" border=0>
      <tr><td>
        Comments? Contact:
        <A href="mailto:support@project-open.com">support@project-open.com</A>
      </td></tr>
    </table>
    </body>
    </html>

ติดตั้ง postfix บน ubuntu

  • ทดสอบกับ ubuntu 10.04, 8.04

  1. ติดตั้ง postfix ด้วยคำสั่ง sudo apt-get install postfix
    ระบบจะมีหน้าต่าง Postfix Configuration ขึ้นมา  ให้กด TAB ไปเลือกแถบ <Ok>
    จะได้อีกหน้าต่างให้เลื่อนไปเลือกแถบ No configuration แล้วกด TAB ไปเลือกแถบ <Ok>
    เป็นอันว่าติดตั้งเสร็จ ค่อยมาปรับแต่งเพิ่มต่อไป
  2. จัดการให้ postfix ทำงานแบบ local คือส่งอีเมล์กันภายใน server นี้ ด้วยคำสั่ง
    sudo dpkg-reconfigure postfix
    ระบบจะมีหน้าต่าง Postfix Configuration ขึ้นมา ให้กด TAB ไปเลือกแถบ <Ok>
    จะได้อีกหน้าต่างให้เลื่อนไปเลือกแถบ Local only แล้วกด TAB ไปเลือกแถบ <Ok>
    ที่ช่อง System mail name :  ให้ป้อนชื่อ server
    ที่ช่อง Root and postmaster mail recipient:  ให้ข้ามไปเลย
    ที่ช่อง Other destinations to accept mail for (blank for none):  ให้ข้ามไปเลย
    ที่คำถาม Force synchronous updates on mail queue? ให้เลือกตอบ NO
    ที่ช่อง Local networks: ให้ป้อนเหลือแค่ว่า 127.0.0.0/8
    ที่ช่อง Mailbox size limit (bytes): ให้ใส่เลข 0
    ที่ช่อง Local address extension character: ปล่อยตามเดิมเป็นเครื่องหมาย +
    ที่คำถาม Internet protocols to use: ให้เลือก ipv4
    ที่คำถาม Use procmail for local delivery? ให้ตอบ No

    เสร็จแล้วพร้อมใช้งานได้เลย
  3. ตัวอย่างข้อมูลในแฟ้ม /etc/postfix/main.cf สำหรับ local mail server ที่เพิ่งถูกสร้าง
    smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
    biff = no
    append_dot_mydomain = no
    readme_directory = no
    myhostname = myserver.domain
    alias_maps = hash:/etc/aliases
    alias_database = hash:/etc/aliases
    myorigin = /etc/mailname
    mydestination = myserver.domain, localhost
    relayhost =
    mynetworks = 127.0.0.0/8
    mailbox_size_limit = 0
    recipient_delimiter = +
    inet_interfaces = loopback-only
    default_transport = error
    relay_transport = error
    inet_protocols = ipv4
  4. หากต้องการปรับปรุงให้ local mail server สามารถส่งอีเมล์ออกได้
    ให้แก้ไขแฟ้ม /etc/postfix/main.cf ปรับปรุงค่าตัวแปรดังนี้คือ
    default_transport = smtp
    relay_transport = smtp

    เสร็จแล้วให้ postfix ทำงานใหม่ ด้วยคำสั่ง sudo /etc/init.d/postfix restart
  5. จัดการ aliases ให้แก้ไขที่แฟ้ม /etc/aliases
    เสร็จแล้วสั่งให้ postfix เรียนรู้ข้อมูลใหม่ด้วยคำสั่ง sudo newaliases
  6. จัดการ relay mail ไปให้ server อื่นส่งแทน ให้แก้ไขแฟ้ม /etc/postfix/main.cf 
    ตั้งค่าตัวแปรดังตัวอย่าง relayhost = other.mail.net
    เสร็จแล้วสั่งให้ posftix ทำงานใหม่ด้วยคำสั่ง sudo /etc/init.d/postfix force-reload