Category: Linux (OS, shell script, etc)

  • การทำแผ่นดีวีดี linux mint ฉบับติดตั้งโปรแกรมเพิ่มแล้ว

    ผมแจกฟรีแผ่น DVD linux mint 17 ฉบับติดตั้งโปรแกรมเพิ่ม ที่ห้องโถงอาคารศูนย์คอมพิวเตอร์ ผมก็คิดว่าน่าจะนำความรู้มาเผยแพร่ไว้ตรงนี้ด้วย ลองอ่านดูนะครับ

    free-linuxmint-17-psu-cc-32bit

    เริ่มต้น ผมก็ไปเอาไฟล์ linuxmint-17-mate-dvd-32bit.iso จากเว็บไซต์ https://licensing.psu.ac.th/linux-mint-17-qiana-released/ ซึ่งไฟล์ที่วางไว้ในเว็บไซต์นี้ก็ไป download มาจากของแท้ที่เมืองนอกนะครับ นำมาติดตั้งเป็น Virtual Machine ในโปรแกรม Oracle VM VirtualBox โดยสร้าง username คือ mint password คือ mint และตั้งให้ auto login

    จากนั้นก็ปรับแต่งการอัปเดตเวอร์ชั่นให้อัปเดตจากเซิร์ฟเวอร์ในมหาวิทยาลัย (ในเมืองไทย) โดยการแก้ไขที่ไฟล์ official-package-repositories.list ด้วยคำสั่งดังนี้
    sudo vi /etc/apt/sources.list.d/official-package-repositories.list
    โดยเปลี่ยน 2 แห่ง คือ
    1.เปลี่ยนจาก archive.ubuntu.com เป็น th.archive.ubuntu.com
    2.เปลี่ยนจาก packages.linumint.com เป็น mirrors.psu.ac.th/linuxmint-packages

    ต่อไปก็ตั้งค่า time zone ดังนี้
    Menu > Administration > Time and Date > Click to make changes
    Time zone: Asia/Bangkok

    ต้องการให้ผู้ได้รับแผ่นดีวีดีนี้ไปใช้งานได้สะดวก จึงเพิ่มคำสั่งนี้เพื่อให้ไม่ต้องถาม password ทุกครั้งที่จะเพิ่มโปรแกรม
    sudo sh -c “echo ‘mint ALL=NOPASSWD: ALL’ >> /etc/sudoers”

    ผู้ใช้งานส่วนใหญ่จะใช้ฟอนต์ภาษาไทย TH SarabanPSK ผมก็ช่วยลงให้ซะเลย
    sudo wget ftp://ftp.psu.ac.th/pub/thaifonts/sipa-fonts/*ttf -P /usr/share/fonts/truetype/thai

    ติดตั้งโปรแกรมต่างๆเพิ่มดังนี้
    สำหรับแสดงรายชื่อ hardware
    sudo apt-get install lshw-gtk
    สำหรับตรวจเช็คสถานะ LAN card
    sudo apt-get install ethtool
    สำหรับดึงข้อมูลเว็บเพจมาดำเนินการ
    sudo apt-get install curl
    สำหรับใช้งานเบราว์เซอร์ google chrome
    sudo touch /etc/default/google-chrome
    แล้วไป download จากเว็บไซต์ของ google อาจทำด้วยคำสั่งข้างล่างนี้

    wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - 
    sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' 
    sudo apt-get update 
    sudo apt-get install google-chrome-stable

    ติดตั้งโปรแกรมต่างๆ ผ่านทาง Menu > Software Sources
    1. Tuxmath  : เกมส์คิดเลขเร็ว
    2. Tuxpaint  : เด็กหัดใช้เมาส์วาดภาพและตัวปั้มหมึก
    3. Shutter  : screen capture tool
    4. RecordMyDesktop and gtk-recordmydesktop  : บันทึกหน้าจอเป็นวิดีโอ
    5. winff  : แปลงชนิดไฟล์ของไฟล์เสียง
    6. audacity  : ตัดหรือต่อไฟล์เสียง
    7. gparted  : สร้างหรือเปลี่ยนแปลง disk partition
    8. openshot  : ตัดหรือต่อวิดีโอ ไฟล์เสียง เพื่อทำเป็นวิดีโอ
    9. libavcodec-extra-54  :  เพื่อให้ใช้ codec ได้มากชนิด
    10. filezilla  :  โปรแกรม ftp/ftps/sftp/ client
    11. inkscape :  โปรแกรมทำสื่อสิ่งพิมพ์ จัด art work หน้ากระดาษ (แทน ilustrator)

    ติดตั้งโปรแกรม ffDiaporama ต้องใช้ command line เพื่อเอาเวอร์ชั่นล่าสุด
    12.ffdiaporama  : โปรแกรมนำไฟล์รูปภาพมาจัดทำเป็น Movie พรีเซ็นเตชั่นมีเพลงประกอบได้
    sudo add-apt-repository ppa:ffdiaporamateam/stable
    sudo apt-get update
    sudo apt-get install ffdiaporama
    sudo apt-get install ffdiaporama-texturemate
    sudo apt-get install ffdiaporama-openclipart

    ติดตั้งโปรแกรมที่ต้องใช้ ผ่านทาง Menu > Package Manager
    1. frei0r-plugins
    2. frei0r-plugins-doc

    สร้าง shortcut icon ที่ desktop
    1. TV (ดูทีวีฟรี)
    2. Tux Math
    3. Tux Paint
    4. Google Chrome
    5. version.txt

    ติดตั้ง shell script สำหรับทำงานเฉพาะอย่าง
    1. hardware-list.sh
    2. myjob.sh
    3. nic-led.sh
    และทุกไฟล์ใส่ ได้ set ค่า flag เป็น executable

    ตอนนี้ก็มาถึงความต้องการโปรแกรมที่ใช้ในการทำแผ่นดีวีดีขึ้นมาใหม่ เรียกว่า remastersys โดยติดตั้งตามคำสั่งดังนี้
    wget -N -P /tmp http://ftp.psu.ac.th/pub/psu-remastersys/psu-remastersys.tgz
    tar -zxpvf /tmp/psu-remastersys.tgz -C /tmp
    cd /tmp/psu-remastersys
    sudo sh install-psu-remastersys.sh
    wget -O – http://www.remastersys.com/ubuntu/remastersys.gpg.key | sudo apt-key add –
    แก้ไขค่า option ให้เหมาะสม
    sudo vi /etc/remastersys.conf
    ================================
    LIVEUSER=”mint”
    LIVECDLABEL=”Linux Mint 17 PSU CC”
    CUSTOMISO=”linuxmint-17-psu-cc-32bit.iso”
    BACKUPSHOWINSTALL=”1″
    ================================

    แล้วก็มาถึงขั้นตอนสุดท้าย คือ สั่งสร้าง linuxmint-17-psu-cc-32bit.iso ดังนี้
    เข้าไปที่ Menu > Administration > Remastersys
    แล้วก็รอสัก 15 นาที
    จากนั้นให้เข้าไปเอาไฟล์ไปใส่ใน ftp server
    เข้าไปที่ Menu > Terminal
    cd /home/remastersys/remastersys/
    scp linuxmint-17-psu-cc-32bit.iso user@your_ftp_server

    ทั้งหมดก็มีเรื่องราวประมาณนี้ครับ ขอแถมสักนิดว่า หากจะทำเป็นแผ่นที่บูตแล้วแสดง presentation ก็ให้นำไฟล์ไปวางไว้ใน /home/mint/.config/autostart/
    เช่น
    mint@mint-PSU ~ $ ls -l /home/mint/.config/autostart/
    total 12
    -rw-r–r– 1 mint mint  88 มิ.ย.   5 13:23 myjob.desktop
    -rw-r–r– 1 mint mint 487 มิ.ย.   5 13:23 myjob.sh

    mint@mint-PSU ~ $ cat /home/mint/.config/autostart/myjob.desktop
    [Desktop Entry]
    Type=Application
    Name=myjob
    Exec=/home/mint/.config/autostart/myjob.sh

    mint@mint-PSU ~ $ cat /home/mint/.config/autostart/myjob.sh
    #!/bin/bash
    sleep 3
    SOURCE_FILE=”prstart.sh”
    TEMP1=”/tmp/myjob-temp1.$$”
    wget http://ftp.psu.ac.th/pub/custom/${SOURCE_FILE} -O ${TEMP1}
    if [ -s ${TEMP1} ] ; then
    exec sh ${TEMP1}
    fi

    คิดว่าท่านจะสามารถอ่านและทำได้ครับ ขอบคุณครับ

  • แก้ปัญหา ubuntu server 14.04 เปลี่ยน eth0 เป็น em1

    เรื่องมีอยู่ว่า ผมและวิศิษฐ ช่วยกันทำต้นฉบับ PSU12-Sritrang ใหม่เมื่อมี ubuntu 14.04 ออกมาแล้ว เดิมใช้ ubuntu 12.04 มาโดยตลอด ปัญหานี้เกิดขึ้นตั้งแต่ ubuntu เปลี่ยนเวอร์ชั่นเป็น 13.04 แล้ว คือ เมื่อ clone ไปแล้ว บูต server แล้วจะไม่เห็น eth0

    เมื่อตรวจสอบด้วยคำสั่ง dmesg | grep eth0 ก็พบว่าบรรทัดที่มีข้อความว่า renamed eth0 to em1

    วิศิษฐ ค้นเจอว่า หากต้องการบังคับให้ใช้แบบเก่า คือ ใช้ eth0 จะต้องแก้ไขไฟล์
    /etc/default/grub ทำดังนี้

    หากใช้ editor vi คล่อง ก็ใช้คำสั่งนี้
    sudo vi /etc/default/grub
    หากไม่คล่อง ก็ใช้ดังนี้
    sudo nano /etc/default/grub

    ในไฟล์ /etc/default/grub ให้หาบรรทัด
    GRUB_CMDLINE_LINUX_DEFAULT=””
    แก้ไขเป็น
    GRUB_CMDLINE_LINUX_DEFAULT=”net.ifnames=1 biosdevname=0″

    จากนั้นให้สั่งคำสั่งนี้ด้วย
    sudo update-grub

    เท่าที่ทดสอบผลกับเครื่องที่มีปัญหา สามารถบังคับให้ใช้ eth0 ได้ครับ ยังไม่พบว่าวิธีการนี้จะใช้ไม่ได้เมื่อมีการ update versions ของ ubuntu ยังคงต้องตรวจสอบในเวอร์ชั่นต่อไป

     

    อัปเดตข้อมูล (17 มี.ค. 2559)

    ใน ubuntu 16.04 server ผมกลับพบว่า คำสั่งนี้ใช้ไม่ได้

    GRUB_CMDLINE_LINUX_DEFAULT=”net.ifnames=1 biosdevname=0″

    แต่คำสั่งข้างล่างนี้ใช้ได้

    GRUB_CMDLINE_LINUX_DEFAULT=”net.ifnames=0″

    ทำให้ใช้ eth0 ได้

    ซึ่งการกำหนดค่า net.ifnames=0 นี้นำมาจากเอกสารที่อ้างอิง [1] ข้างล่างนี้ ผมเลือกใช้ option ที่ 3

     

    และมีคำอธิบายในเรื่องความเปลี่ยนแปลงในการใช้ชื่อ network interface name ใน [2]

     

    Reference:
    [1] http://www.freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames/

    [2] https://lists.ubuntu.com/archives/ubuntu-devel/2015-May/038761.html

     

  • การติดตั้ง Lighttpd + PHP5 บนเครื่อง Ubuntu 14.04 LTS

    มาเริ่มขั้นตอนการติดตั้งกันเลยครับ

    วิธีการติดตั้ง Lighttpd Web Server

    1. ทำการติดตั้ง Lighttpd ผ่าน apt-get ดังนี้ครับ

    # sudo apt-get install -y lighttpd

    2. ให้ทำการ Restart Lighttpd ด้วยคำสั่ง

    # sudo service lighttpd restart
    

    3. ทำการทดสอบเข้าใช้งาน HTTP โดยพิมพ์คำสั่ง http://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น

    http://192.168.99.1

    4. ในกรณีที่ต้องการติดตั้ง SSL ให้พิมพ์คำสั่งเพื่อเปิด site ดังนี้

    sudo lighttpd-enable-mod ssl
    

    5. หลังจากนั้นทำการ สร้าง key จาก default cer (ถ้ามี key จริงสามารถนำมาแทนได้ในภายหลัง)

    ในกรณีที่ไม่เคยติดตั้ง apache ให้ติดตั้งโปรแกรม ssl-cert ก่อนดังนี้

    sudo apt-get install -y ssl-cert
    

    ทำการรวม Key โดยสร้างเป็นไฟล์ใหม่ เก็บไว้ที่ /etc/lighttpd/snakeoil.pem

    sudo sh -c 'cat /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/private/ssl-cert-snakeoil.key > /etc/lighttpd/snakeoil.pem'
    

    6. จากนั้นทำการเข้าไปแก้ไฟล์ระบุ เพื่อระบุตำแหน่ง cer ให้ถูกต้อง

    sudo nano /etc/lighttpd/conf-enabled/10-ssl.conf
    

    7. ทำการแก้ไขข้อความในไฟล์ดังนี้

    ssl.pemfile = "/etc/lighttpd/snakeoil.pem"
    

    8. จากนั้นให้สั่ง Restart Lighttpd  ตามปกติ

    # sudo service lighttpd restart
    

    9. ทำการทดสอบเข้าใช้งาน HTTPS โดยพิมพ์คำสั่ง https://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น

    https://192.168.99.1
    

    *หมายเหตุ วิธีการดู IP ให้พิมพ์ดังนี้

    ifconfig

    ให้วิธีการดูให้สังเกตุตามรูปตัวอย่าง

    2014-05-22_102420

    – eth0 เป็น ip จาก nat interface
    – eth1 เป็น ip จาก bridge interface
    – lo เป็น ip จาก loopback interface

    วิธีการเปลี่ยน Lighttpd Server Default Port

    *ยกตัวอย่างการเปลี่ยนจาก port 80->8081

    – เปิดไฟล์ /etc/lighttpd/lighttpd.conf

    sudo nano /etc/lighttpd/lighttpd.conf
    

    – แก้ไขข้อความในไฟล์ดังนี้ (วิธีการ save ให้กด Ctrl-X แล้วกด y แล้ว enter)

    server.port = 8081

    วิธีการติดตั้ง PHP5 เพื่อใช้งานกับ Lighttpd Web Server
    1. ทำการติดตั้ง PHP5 ดังนี้

    sudo apt-get install php5-cgi
    

    2. ทำการเปิดใช้งาน module เพื่อให้สามารถใช้งาน php บน lighttpd ได้

    sudo lighty-enable-mod fastcgi
    sudo lighty-enable-mod fastcgi-php
    

    3. จากนั้นให้สั่ง Restart Lighttpd  ตามปกติ

    # sudo service lighttpd restart

    4. วิธีการสร้างไฟล์ตรวจสอบสามารถทำได้ดังนี้

    – เปิดไฟล์ /var/www/info.php

    sudo sh -c 'echo "<?php echo phpinfo(); ?>" > /var/www/info.php'
    

    – จากนั้นทำการเปิด web http://หมายเลขไอพีของเซิร์ฟเวอร์/info.php ตัวอย่าง

    http://192.168.99.1/info.php
  • การติดตั้ง Apache2 + PHP5 บนเครื่อง Ubuntu 14.04 LTS

    มาเริ่มขั้นตอนการติดตั้งกันเลยครับ

    วิธีการติดตั้ง Apache2 Web Server

    1. ทำการติดตั้ง Apache ผ่าน apt-get ดังนี้ครับ

    # sudo apt-get install -y apache2 
    

    2. ให้ทำการ Restart Apache ด้วยคำสั่ง

    # sudo service apache2 restart
    

    จะเห็นได้ว่าจะมี Warning เกี่ยวกับ Domain Name ไม่ต้องตกใจครับ สามารถใช้งานได้ แต่เพราะยังไม่ได้จด Domain ให้กับ IP เครื่องที่ติดตั้ง ทุกครั้งที่ Restart ก็จะมีการฟ้องจนกว่าจะจดครับ

    ถ้าไม่ต้องการให้ขึ้น Warning ดังกล่าว ให้ทำการแก้ไขไฟล์ /etc/apache2/apache2.conf ดังนี้

    – เปิดไฟล์ /etc/apache2/apache2.conf

    sudo nano /etc/apache2/apache2.conf
    

    – เพิ่มข้อความท้ายไฟล์ดังนี้ (วิธีการ save ให้กด Ctrl-X แล้วกด y แล้ว enter)

    ServerName localhost

    3. จากนั้นทำการ Restart Apache อีกครั้งจะไม่พบข้อความ Warning อีกแล้ว

    # sudo service apache2 restart

    4. ทำการทดสอบเข้าใช้งาน HTTP โดยพิมพ์คำสั่ง http://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น

    http://192.168.99.1
    

    5. ในกรณีที่ต้องการติดตั้ง SSL ให้พิมพ์คำสั่งเพื่อเปิด site ดังนี้

    sudo a2enmod ssl
    sudo a2ensite default-ssl

    6. จากนั้นให้สั่ง Restart Apache ตามปกติ

    # sudo service apache2 restart
    

    7. ทำการทดสอบเข้าใช้งาน HTTPS โดยพิมพ์คำสั่ง https://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น

    https://192.168.99.1
    

    8. ในกรณีที่ต้องการยกเลิกการติดตั้ง SSL ให้พิมพ์คำสั่งเพื่อปิด site ดังนี้

    sudo a2dismod ssl
    sudo a2dissite default-ssl

    9. จากนั้นให้สั่ง Restart Apache ตามปกติ

    # sudo service apache2 restart
    

    *หมายเหตุ วิธีการดู IP ให้พิมพ์ดังนี้

    ifconfig

    ให้วิธีการดูให้สังเกตุตามรูปตัวอย่าง

    2014-05-22_102420

    – eth0 เป็น ip จาก nat interface
    – eth1 เป็น ip จาก bridge interface
    – lo เป็น ip จาก loopback interface

    วิธีการเปลี่ยน Apache Server Default Port

    *ยกตัวอย่างการเปลี่ยนจาก port 80->8080

    1. เปิดไฟล์ /etc/apache2/sites-enabled/000-default.conf

    sudo nano /etc/apache2/sites-enabled/000-default.conf
    

    2. แก้ไขข้อความในไฟล์ดังนี้ (วิธีการ save ให้กด Ctrl-X แล้วกด y แล้ว enter)

    <VirtualHost *:8080>

    3. เปิดไฟล์ /etc/apache2/ports.conf

    sudo nano /etc/apache2/ports.conf
    

    2. แก้ไขข้อความในไฟล์ดังนี้ (วิธีการ save ให้กด Ctrl-X แล้วกด y แล้ว enter)

    Listen 8080

    3. จากนั้นให้สั่ง Restart Apache ตามปกติ

    # sudo service apache2 restart
    

    4. ทำการทดสอบเข้าใช้งาน โดยพิมพ์คำสั่ง http://หมายเลขไอพีของเซิร์ฟเวอร์:8080 เช่น

    http://192.168.99.1:8080

    ตั้ง PHP5 เพื่อใช้งานกับ Apache2 Web Server
    1. ทำการติดตั้ง PHP5 ดังนี้

    sudo apt-get install -y php5 libapache2-mod-php5
    

    2. วิธีการสร้างไฟล์ตรวจสอบสามารถทำได้ดังนี้

    – เปิดไฟล์ /var/www/html/info.php

    sudo sh -c 'echo "<?php echo phpinfo(); ?>" > /var/www/html/info.php'
    

    – จากนั้นทำการเปิด web http://หมายเลขไอพีของเซิร์ฟเวอร์/info.php ตัวอย่าง

    http://192.168.99.1/info.php
  • วิธีแก้ไขปัญหาเครื่อง Laptop ไม่สามารถปรับควบคุมแสงสว่าง Brightness Control ใน Ubuntu 14.04

    วิธีแก้ไขปัญหาเครื่อง Laptop ไม่สามารถปรับควบคุมแสงสว่าง Brightness Control ใน Ubuntu 14.04

    ปัญหานี้เกิดกับ Laptop ที่มีการ์ดแสดงผลของยี่ห้อ [Intel Graphics] ซึ่งจะไม่สามารถปรับควบคุมความเข้มความสว่างของจอภาพเพื่อปรับลด/เพิ่ม แสงได้ตามปกติ
    Desktop_Ubuntu

    – ให้ลองใช้คำสั่งตรวจสอบ video/graphic card ของท่านดูก่อนว่าเป็นผลิตภัณฑ์ยี่ห้อใด
    ls /sys/class/back light/
    list graphic card

    ถ้าปรากฎว่าแฟ้มข้อมูลที่แสดงออกมามีแฟ้มชื่อ intel_backlight อาจจะเกิดปัญหากับการปรับลด/เพิ่ม แสงของหน้าจอ ให้แก้ไขดังนี้

    touch /usr/share/X11/xorg.conf.d/20-intel.conf
    touch 20-intel.conf

    sudo vi /usr/share/X11/xorg.conf.d/20-intel.conf
    Selection_005
    จากนั้นพิมพ์ข้อมูลดังนี้

    Section "Device"
            Identifier  "card0"
            Driver      "intel"
            Option      "Backlight"  "intel_backlight"
            BusID       "PCI:0:2:0"
    
    EndSection

    หลังจากพิมพ์ข้อความเสร็จให้ทำการบันทึกแฟ้มดังกล่าว จากนั้นให้ลองล็อกเอาท์ logout หรือทำการ restart เครื่องใหม่ และลองใช้ฟังค์ชั่นคียร์ปรับลด/เพิ่ม แสงของจอภาพ
    เป็นอันเสร็จเรียบร้อย… ^_^

  • เรียนรู้ด้วยตนเอง Linux System Administration I และ II

    linux-tutorial

    ขอแนะนำแหล่งความรู้สำหรับทุกท่านที่ต้องการเรียนรู้ Linux ซึ่งผมและอาจารย์ฉัตรชัย จันทร์พริ้ม ได้รวบรวมเขียนไว้และจัดอบรมไปแล้ว 1 รุ่น ใน Workshop I สอนด้วย Ubuntu 12.04 และใน Workshop II Ubuntu 14.04 ออกมาพอทันให้ได้ใช้กันครับ

    Workshop Linux System Administration I
    (http://opensource.cc.psu.ac.th/WS-LSA1)
    เนื้อหา
    เป็นการให้ความรู้ในการทำหน้าที่ system administrator เพื่อดูแลระบบปฏิบัติการ Linux โดยจะใช้ Ubuntu ซึ่งปัจจุบันมีผู้ใช้งานกันมาก โดยจัดเนื้อหาเป็น 2 ตอน ในตอนแรกนี้จะเป็นความรู้จำเป็นที่จะเป็นพื้นฐานไปสู่การเป็นมืออาชีพที่สามารถดูแล server ด้วยตนเองต่อไปได้อย่างมั่นใจ โดยใช้เวลา 2 วัน

    LSA-I

    Workshop Linux System Administration II
    (http://opensource.cc.psu.ac.th/WS-LSA2)
    เนื้อหา
    เป็นการให้ความรู้ในการทำหน้าที่ system administrator เพื่อดูแลระบบปฏิบัติการ Linux โดยจะใช้ Ubuntu ในตอนที่ 2 นี้จะเป็นความรู้ในการติดตั้ง server การดูแล server การป้องกันและตรวจสอบความปลอดภัย server และ web application ที่ติดตั้งในเครื่อง โดยใช้เวลา 2 วัน

    LSA-II

    วิธีการเรียนใน workshop ผู้เรียนจะได้ฝึกปฏิบัติด้วย Ubuntu server ที่ติดตั้งใน Oracle VM Virtualbox ซึ่งเป็นโปรแกรมในการจำลองเครื่องเสมือนจริง

    สำหรับเพื่อนๆที่ไม่ได้เข้า workshop ลองเข้าไปอ่านกันได้นะครับ และเพื่อนๆที่เข้า workshop ก็ทบทวนได้เมื่อต้องการเรียนรู้ด้วยตนเองเกี่ยวกับ Linux System Administration I และ II

  • วิธีตั้งค่า Apache web server 2.4.x แตกต่างจาก 2.2.x

    asf_logo_wide
    เก็บตกจากวันวานเปิดอบรม Workshop Linux System Administration II (WS-LSA2) ที่ศูนย์คอมฯ 2 วัน ผมเตรียมเอกสาร workshop วิธีตั้งค่าหลายๆเรื่องบน ubuntu 12.04 แต่พอดีกับที่ ubuntu 14.04 ออกมาแล้ว จึงนำ ubuntu 14.04 มาให้ผู้เรียนใช้ติดตั้ง มันก็ไม่มีอะไรแตกต่างไปจาก ubuntu 12.04 ตั้งแต่เริ่มต้น installation จนกระทั่งมาถึงเรื่องที่เราจะตั้งค่าเกี่ยวกับ Apache web server ซึ่งทำให้ต้องแก้ไขเอกสารประกอบการสอนกันสดๆตอนนั้นเลย (ฮา)

    เพราะว่า Apache Web Server ที่อยู่ในแผ่น ubuntu 14.04 นั้นเป็นเวอร์ชั่น 2.4.7 ซึ่งมี Default Document Root อยู่ที่ /var/www/html ต่างจาก Apache Web Server เวอร์ชั่นก่อนหน้านี้ (2.2.x) ที่มี Default Document Root อยู่ที่ /var/www เป็นต้น

    พอจะสรุปได้ดังนี้

    Apache Web Server 2.2.x ทำแบบนี้
    1.พื้นที่ default ของ Apache Web Server คือไดเรกทอรี /var/www
    หากจะติดตั้ง Joomla CMS เราจะเตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ไดเรกทอรี /var/www/testjoomla ด้วยคำสั่ง sudo mkdir -p /var/www/testjoomla

    2.website config file จะอยู่ที่ไดเรกทอรี /etc/apache2/sites-available
    จะมีไฟล์ชื่อ default และ default-ssl มาให้
    และหากจะสร้าง VirtualHost pma.example.com เราก็สร้าง config file ที่มีชื่อไฟล์อย่างไรก็ได้ เช่น /etc/apache2/sites-available/pma หลังจากนั้นเราก็ enable VirtualHost นี้ จาก config ที่เราสร้างขึ้นใหม่ โดยการใช้คำสั่ง sudo a2ensite pma แล้วก็สั่ง restart apache

    3.เมื่อเข้าไปดูในไฟล์ default
    DocumentRoot จะอยู่ที่ /var/www

    4.Apache2 config file จะอยู่ที่ /etc/apache2/conf.d
    สมมติว่าต้องการเพิ่มการป้องกัน joomla web server ด้วย config file ชื่อ jce จะต้องทำดังนี้
    สร้างไฟล์ที่จะมีชื่ออย่างไรก็ได้ เช่น /etc/apache2/conf.d/jce แค่นี้ก็ได้แล้ว แล้วก็สั่ง restart apache และเมื่อจะไม่ใช้ config file jce นี้แล้ว ก็แค่ลบไฟล์นี้ทิ้ง

    แต่สำหรับ Apache Web Server 2.4.x วิธีการจะแตกต่างไป ดังนี้
    1.พื้นที่ default ของ Apache Web Server คือไดเรกทอรี /var/www/html
    หากจะติดตั้ง Joomla CMS เราจะต้องเตรียมพื้นที่สำหรับติดตั้ง joomla ไว้ที่ไดเรกทอรี /var/www/html/testjoomla ด้วยคำสั่ง sudo mkdir -p /var/www/html/testjoomla

    2.website config file จะอยู่ที่ไดเรกทอรี /etc/apache2/sites-available
    จะมีไฟล์ชื่อ 000-default และ default-ssl มาให้ (ต่างจาก 2.2.x)
    และหากจะสร้าง VirtualHost pma.example.com เราก็ต้องสร้าง config file ที่มี .conf ต่อท้ายชื่อไฟล์ด้วย เช่น /etc/apache2/sites-available/pma.conf
    หลังจากนั้นเราก็ enable VirtualHost นี้ จาก config ที่เราสร้างขึ้นใหม่ โดยการใช้คำสั่ง
    sudo a2ensite pma แล้วจึงจะสั่ง restart apache สำเร็จ

    3.เมื่อเข้าไปดูในไฟล์ default
    DocumentRoot จะอยู่ที่ /var/www/html

    4.Apache2 config file จะอยู่ที่ไดเรกทอรี /etc/apache2/conf-available และต้องสั่ง enable config file ที่ต้องการใช้งานก่อนจึงจะใช้งานได้ แล้วจะเกิดไฟล์ขึ้นอยู่ที่ไดเรกทอรี /etc/apache2/conf-enabled
    สมมติว่าต้องการเพิ่มการป้องกัน joomla web server ด้วย config file ชื่อ jce จะต้องทำดังนี้ เราต้องตั้งชื่อให้มี .conf ต่อท้ายด้วยคือ /etc/apache2/conf-available/jce.conf
    และใช้คำสั่งเพื่อ enable config file ดังนี้ sudo a2enconf jce แล้วก็สั่ง restart apache จึงจะสำเร็จ และเมื่อจะไม่ใช้ config file นั้น ก็จะต้องสั่งดังนี้ sudo a2disconf jce แล้วก็สั่ง restart apache จึงจะสำเร็จ

    ก็หวังว่าบทความนี้จะเป็น guide ให้แอดมินคิดออกว่า “เอ๊ะ! ทำไมเราตั้งค่าไม่ได้ทั้งๆที่เคยทำได้และทำอยู่บ่อยๆด้วย”

    ขอบคุณครับ

  • เทคนิคการใช้งานคำสั่ง screen บน Linux

    ในกรณีที่อยู่ภายนอกระบบเครือข่ายมหาวิทยาลัย การจะเข้าถึง Linux Server ของตนเองนั้น อาจจะทำได้โดย

    1. VPN เข้ามา แล้ว จึงใช้ SSH Client ต่างๆ เพื่อเข้าถึง
    2. SSH มายัง Server ที่ เปิดให้ Secure Shell ได้จากภายนอก แล้วจึง ssh จากเครื่องดังกล่าว ไปยัง Server ที่ต้องการ

    ปัญหาคือ การใช้งาน VPN ทำให้ ได้ IP เป็น Private ภายในมหาวิทยาลัย อาจจะไม่สะดวกในบางประการ ครั้นจะต้อง ssh ไปยังเครื่องที่เปิดให้ แล้วค่อยไปต่อก็ไม่สะดวกนัก เพราะ ถ้าต้องทำงานกับหลายๆเครื่อง ก็ต้อง ssh กันหลายรอบ

    บทความนี้ ขอยกตัวอย่างว่า มีเครื่อง xxx.psu.ac.th เปิดให้ ssh จากภายนอกเข้ามาได้ และมีเครื่อง aaa.psu.ac.th, bbb.psu.ac.th, ccc.psu.ac.th และ ddd.psu.ac.th เป็นเครื่องที่ต้องการจะเข้าไปจัดการ ด้วย SSH Client และสมมุติให้เครื่องต่างๆ เปิด Firewall ให้ xxx.psu.ac.th สามารถ ssh ไปได้

    วิธีการหนึ่งที่สะดวกกว่าการ ssh หลายๆรอบ คือ การใช้คำสั่ง screen

    ขั้นตอนคือ

    1. ssh ไปยังเครื่อง xxx.psu.ac.th
    2. ใช้คำสั่ง screen
    3. จากนี้ไป เป็นการติดต่อไปยัง Server ต่างๆ …
    4. ที่ Shell ของ screen บนเครื่อง xxx.psu.ac.th ใช้คำสั่ง ssh username@aaa.psu.ac.th ก็จะได้เข้าถึง aaa.psu.ac.th ได้
    5. เมื่อต้องการ ติดต่อไปยัง bbb.psu.ac.th ก็ กดปุ่ม Ctrl + a แล้วกดตัว c (c ตัวพิมพ์เล็ก) จากนั้นจะได้ Prompt ใหม่ของ xxx.psu.ac.th แล้วใช้คำสั่ง ssh username@bbb.psu.ac.th
    6. เมื่อต้องการ ติดต่อไปยัง ccc.psu.ac.th ก็ กดปุ่ม Ctrl + a แล้วกดตัว c (c ตัวพิมพ์เล็ก) จากนั้นจะได้ Prompt ใหม่ของ xxx.psu.ac.th แล้วใช้คำสั่ง ssh username@ccc.psu.ac.th
    7. เมื่อต้องการ ติดต่อไปยัง ddd.psu.ac.th ก็ กดปุ่ม Ctrl + a แล้วกดตัว c (c ตัวพิมพ์เล็ก) จากนั้นจะได้ Prompt ใหม่ของ xxx.psu.ac.th แล้วใช้คำสั่ง ssh username@ddd.psu.ac.th
    8. ต่อไป หากต้องการดูว่า มีการเชื่อมต่อไปยัง Server ใดไว้บ้าง ใช้คำสั่ง Ctrl + a แล้ว กด ” (Double Quote) ก็จะแสดง รายการของ Server ที่ติดต่อไป โดยนำหน้าด้วย ตัวเลข เริ่มจาก 0, 1, 2 และตามด้วยชื่อ โดยเริ่มต้น จะเป็นชื่อ Shell เช่น bash ทำให้จำได้ยาก แต่สามารถ ใช้ปุ่ม ลูกศร บนคีย์บอร์ด เพื่อเลื่อนขึ้นลงได้ ให้ เลื่อนไปที่อันแรก แล้วกด Enter (ซึ่งก็คือเครื่อง aaa.psu.ac.th)
    9. ต่อไป เราสามารถตั้งชื่อได้ โดยใช้คำสั่ง Ctrl + a แล้วกดตัว A (A ตัวพิมพ์ใหญ่) แล้วตั้งชื่อ เป็น aaa.psu.ac.th แล้วกด Enter จากนั้น ลอง ทำข้อ 8 ใหม่ จะพบว่า สามารถตั้งชื่อได้แล้ว ซึ่งจะง่ายขึ้น ในการสลับหน้าจอ
    10. จากนั้น ทำข้อ 8 เพื่อ สลับไปยัง bbb, ccc, ddd เพื่อตั้งชื่อ
    11. ถ้าต้องการสลับไปตามลำดับ ใช้คำสั่ง Ctrl + a แล้วกดตัว n (n ตัวพิมพ์เล็ก) จะสลับไปเรื่อยๆตามลำดับ
    12. ถ้าต้องการสลับไปยังหน้าจอ ลำดับไกลๆ เช่น เปิดไว้ 8 ตัว ก็กดคำสั่ง Ctrl + a แล้วกด ‘ (Single Quote) ตามด้วย ตัวเลขลำดับของหน้าจอ
    13. เมื่อต้องการ กลับมายัง xxx.psu.ac.th ก็แค่กด Ctrl + a แล้วกดปุ่ม d (d ตัวพิมพ์เล็ก),  จากนี้ หากต้องการหยุดการทำงานแล้ว ก็สามารถ exit ออกไปได้เลย โดยที่ เครื่อง xxx ยังติดต่อกับเครื่อง aaa, bbb, ccc, ddd ไว้เหมือนเดืม
    14. แต่เมื่อต้องการ กลับไปใช้ screen ใหม่ ลองใช้คำสั่ง screen -ls เพื่อเรียกดู Session
    15. และใช้คำสั่ง screen -r เพื่อ กลับไปยัง screen ที่ทำงานค้างอยู่ได้

    วิธีการนี้ ทำให้ งานไม่สะดุด เพราะสิ่งที่ run ค้างไว้ ยังคงทำงานต่อไป และสามารถกลับมาทำงานเมื่อไหร่ก็ได้ แถม คนที่ใช้ Shell ผ่านทาง SmartPhone, Tablet ที่ต้องพิมพ์ Password ยากๆ ก็แค่พยายาม ssh ไปยังเครื่อง xxx ครั้งเดียว หลังจากนั้น ก็สามารถ สลับหน้าจอไปมา โดยไม่ต้องพิมพ์ Password ยากๆเหล่านั้นอีกครับ 😉

    ลองดูครับ

  • Shorewall Blacklist

    • ใช้ได้กับ Shorewall 4.4.12 ขึ้นมา
    • แก้แฟ้ม /etc/shorewall/interfaces โดยเพิ่มความว่า blacklist ต่อท้ายของเดิม เป็น

    net eth0 detect tcpflags,logmartians,nosmurfs,blacklist

    • เพิ่มลิสต์ที่ต้องการบล็อคลงไปในแฟ้ม /etc/shorewall/blacklist
    • ตัวอย่างค้นหาเครื่องที่ต้องการบล็อคการเข้าถึงพอร์ต 80 และ 443

    grep -R phpmyadmin/scripts/setup.php /var/log/apache2|cut -d: -f2|awk '{ print $1 }'|sort -t'.' -n -k1,1 -k2,2 -k3,3 -k4,4|uniq

    • จากตัวอย่างในเครื่องเราไม่มี phpmyadmin แต่มีคนพยายามเข้าถึงตัวติดตั้ง phpmyadmin ฉะนั้นบล็อค IP พวกนี้ไว้ก่อน (บล็อคถาวรกรั่กๆ…)
    • เอา IP จากข้อที่แล้วมาใส่ในแฟ้ม /etc/shorewall/blacklist รูปแบบ

    #ADDRESS/SUBNET PROTOCOL PORT

    • เช่น

    93.115.210.90 tcp 80,443
    93.174.93.153 tcp 80,443
    94.23.58.185 tcp 80,443
    94.102.51.155 tcp 80,443
    103.247.21.60 tcp 80,443
    107.6.88.155 tcp 80,443
    109.163.232.218 tcp 80,443
    110.170.34.220 tcp 80,443
    111.90.168.5 tcp 80,443
    115.84.101.78 tcp 80,443
    115.238.101.45 tcp 80,443
    115.239.253.11 tcp 80,443
    116.93.105.112 tcp 80,443
    117.35.96.146 tcp 80,443
    118.140.120.26 tcp 80,443
    119.52.254.20 tcp 80,443
    119.57.51.154 tcp 80,443
    122.49.0.220 tcp 80,443
    123.125.148.79 tcp 80,443
    125.210.204.242 tcp 80,443

    • restart shorewall

    sudo shorewall restart

    • IP ที่ถูกแบล็คลิสต์ อาจหายไปจากสารบบ ทำให้ shorewall start ไม่ขึ้น ต้องลบไอพีดังกล่าวออกไปก่อนจึงจะ start ได้

    Compiling /etc/shorewall/blacklist...
    ERROR: Unknown Host (93.x4.93.153) : /etc/shorewall/blacklist (line 23)

    • จบ… ขอให้สนุกครับ

    ที่มา http://shorewall.net/manpages/shorewall-blacklist.html

    • คีย์เวิร์ดสำหรับแบน
    • /CFIDE/administrator/enter.cfm
    • /MyAdmin/scripts/setup.php
    • /myadmin/scripts/setup.php
    • /phpMyAdmin/scripts/setup.php
    • /pma/scripts/setup.php
    • /w00tw00t.at.blackhats.romanian.anti-sec:)
    • เป็นต้น