เล่าประสบการณ์ หลังย้ายมาใช้ Vultr $3.5 แทน DigitalOcean $5

ทำไมถึงย้าย ?

เดิมทีผมใช้ VPS ของค่าย DigitalOcean ที่ราคา $5/เดือน ใช้มานานหลายปีก็แฮปปี้ดี ไม่เคยมีปัญหาในการใช้งานแต่อย่างใด แต่มาวันนึงผมก็เริ่มคิดขึ้นมาว่า อาจจะมี VPS ค่ายอื่น ที่มีราคา/เดือนถูกกว่านี้ก็เป็นได้

ผมจึงพยายามหาผู้ให้บริการ VPS รายใหม่ ที่ราคาถูกลง และเชื่อถือได้ โดยค้นหาด้วยตัวเองบ้าง ลองถามจากในกลุ่ม Facebook บ้าง และผมก็ได้พบกับ Vultr ที่มีราคาสุดดึงดูดใจเพียง $2.5/เดือนเท่านั้น (สุดท้ายเลือกใช้ $3.5 เพราะตอบโจทย์มากกว่า)

เปรียบเทียบสเปค

สเปคของ DigitalOcean ที่ราคา $5 (Vultr ที่ราคา $5 ก็สเปคเดียวกัน)

  • 1GB RAM
  • 1 CPU
  • 25GB SSD
  • 1,000GB Bandwidth
  • Linux

สเปคของ Vultr ที่ราคา $2.5 และ $3.5

  • 512MB RAM
  • 1 CPU
  • 10GB SSD
  • 500GB Bandwidth
  • Linux
  • สำหรับราคา $2.5 จะได้เป็น IPv6 only
Vultr plan จากขั้นตอนการ deploy server

ซึ่งถ้าดูจากสเปคแล้ว อาจกล่าวได้ว่า ราคาลดลงมาครึ่งหนึ่ง สเปคก็ลดลงมาครึ่งหนึ่งด้วยเช่นกัน (ยกเว้นตรงๆ SSD ที่ลดมาเกินครึ่งเล็กน้อย) และข้อมูลสำคัญอีกหนึ่งจุดที่ต้องพิจารณาคือ Vult ที่ราคา $2.5 จะได้เป็น IPv6 only ซึ่งอาจจะเป็นปัจจัยสำคัญที่ทำให้ใครหลายๆ คนขยับไปใช้ Vultr ที่ราคา $3.5 แทน

Vultr ที่ราคา $2.5 และ $3.5 มีจุดประสงค์เพื่อเอาไว้ใช้ทดสอบระบบ หรือใช้กับระบบที่อยู่ในช่วงเริ่มต้นการพัฒนา สเปคจะเป็นแบบแค่พอใช้งานได้ ไม่ได้รองรับการใช้งานแบบที่มีผู้ใช้เข้ามาใช้งานเยอะๆ และนอกจากนี้ Vultr ยังจำกัดให้ 1 account สามารถสร้าง server ราคา $2.5 ได้เพียง 2 server และสามารถสร้าง server ราคา $3.5 ได้เพียง 5 server เท่านั้น ดังนั้นใครจะสร้าง server ราคา $2.5 และ $3.5 ใช้งานพร้อมกันหลายๆ server คงหมดสิทธิ์ครับ

*** ดู plan อื่นๆ ได้ที่ Vultr Plans & Pricing และ Pricing on DigitalOcean ***

IPv6 only หมายความว่าอย่างไร ?

IPv6 only หมายความว่า VPS จะได้รับเฉพาะ IPv6 เท่านั้น ไม่มี IPv4 มาให้ ส่งผลให้เกิดข้อจำกัดว่าอุปกรณ์อีกฝั่งที่จะมาสื่อสารด้วย ก็จะต้องเป็น IPv6 เหมือนกันจึงจะสื่อสารกันได้ เช่น

  • หากคอมพิวเตอร์/มือถือของคุณ ไม่รองรับ IPv6 และคุณต้องการรีโมท SSH เข้าไปที่ VPS คุณจะไม่สามารถเชื่อมต่อโดยวิธีปกติเข้าไปได้ คุณอาจจำเป็นต้องเข้าใช้งานผ่าน web console แทน ซึ่งก็คงไม่สะดวกนัก
  • หากคุณใช้ VPS เพื่อเปิดให้บริการเว็บไซต์ และคอมพิวเตอร์/มือถือของผู้เยี่ยมชมไม่รองรับ IPv6 ผู้เยี่ยมชมก็จะไม่สามารถเข้าถึงเว็บไซต์ได้ (อาจแก้ไขโดยใช้ Cloudflare เป็นตัวกลางระหว่าง VPS ที่เป็น IPv6 และผู้เยี่ยมชมที่เป็น IPv4 ก็ได้ แต่อย่างไรก็ตามหากคุณมี service อื่นๆ ที่เปิดใช้งานอยู่บน VPS คุณก็จำเป็นต้องเข้าถึง service นั้นๆ ด้วย IPv6 อยู่ดี)

ดังนั้นผมจึงเลือกใช้ Vultr ที่ราคา $3.5 ซึ่งราคาสูงขึ้นมาอีกเล็กน้อย แต่ยังสามารถรองรับการเชื่อมต่อจากผู้ใช้งานที่ยังไม่รองรับ IPv6

Vultr Web Console

ประสิทธิภาพของ Vultr $3.5 เป็นอย่างไร ?

ผมใช้ VPS เพื่อเปิดเว็บไซต์ โดยติดตั้ง Ubuntu18.04 + Nginx + MyriaDB + PHP7 + WordPress ต้องบอกเลยว่า RAM 512MB ไม่พอใช้ครับ หลังจากที่ผมย้ายมาใช้ Vultr ที่ราคา $3.5 ได้เพียง 2 วัน เว็บไซต์ของผมก็แสดงเป็นหน้าว่างๆ พร้อมกับมีข้อความบอกว่าติดต่อกับฐานข้อมูลไม่ได้ แสดงเป็นหน้าว่างๆ แบบนั้นอยู่นานหลายชั่วโมงเลยครับ จนกระทั่งผมรู้ตัวและ reboot ระบบ

เมื่อเว็บไซต์กลับมาใช้งานได้ ผมก็ลองใช้คำสั่ง htop เพื่อดูการใช้ CPU และ RAM เลยสังเกตเห็นว่า RAM ถูกใช้ไปจนเกือบหมด ซึ่ง RAM ส่วนใหญ่ถูกใช้ไปโดย MariaDB ผมก็เลยลองหาข้อมูล และพบบทความที่เกี่ยวข้องกับการใช้งาน MariaDB บนอุปกรณ์ที่มี RAM น้อยครับ ซึ่งดูวิธีการตั้งค่าได้จากบทความเรื่อง Starting MySQL On Low Memory Virtual Machines

นอกจากนี้ผมก็ยังสังเกตเห็นอีกว่า swap partition ไม่ได้ถูกสร้างไว้ ผมก็เลยเพิ่ม swap partitionเข้าไป 1GB เพื่อที่ว่าระบบจะได้เอา swap partition ซึ่งเป็น SSD มาใช้ทดแทน RAM ในกรณีที่ RAM ไม่พอใช้ ถึงแม้ว่าประสิทธิภาพจะลดลงบ้าง แต่ก็ขอให้โปรแกรม และ service ต่างๆ ยังคงทำงานอยู่ได้เป็นพอครับ

และหลังจากที่ผมแก้ไขปัญหาตามที่อธิบายไปข้างต้น เว็บไซต์ของผมก็ไม่พบปัญหาดังกล่าวอีกเลย (อย่างน้อยก็ในประมาณผู้เยี่ยมชมที่มีอยู่ในปัจจุบัน)

หากต้องการเพิ่มประสิทธิภาพ ก็อัปเกรดได้

เมื่อวันหนึ่งเราต้องการประสิทธิภาพของ VPS ที่เพิ่มขึ้น อาจจะเนื่องจากผู้ใช้งานที่เพิ่มมากขึ้น หรือเหตุผลอะไรก็แล้วแต่ คุณก็สามารถอัปเกรด plan ได้ (แต่ดาวน์เกรดไม่ได้) เพียงเข้าไปที่ my.vultr.com > Servers > “Server name” > Settings > Change Plan

หน้าแสดงการอัปเกรด plan ของ Vultr

สรุป

  • ผมย้ายจาก DigitalOcean มาใช้ Vultr ด้วยเหตุผลที่อยากจะลดค่าใช้จ่ายเท่านั้น ไม่ได้เกี่ยวข้องกับประสิทธิภาพ หรือปัญหาการใช้งานแต่อย่างใด
  • Vultr มี plan ที่ราคาถูกกว่า $5 อยู่ 2 ตัว คือ $2.5 และ $3.5 ซึ่งมีสเปคลดลงจากราคา $5 อยู่ครึ่งหนึ่ง
  • ขั้นตอนการ Deploy server หากไม่เจอตัวเลือก $2.5 และ $3.5 แปลว่าราคานี้ขายหมดแล้วใน Location นั้นๆ ให้ลองเลือก Location อื่นดู (Location มีผลต่อความเร็วในการเชื่อมต่อ และส่งข้อมูล)
  • Vultr VPS ที่ราคา $2.5 จะได้รับเฉพาะ IPv6 เท่านั้น หมายความว่าเครื่อง client จะต้องได้รับ IPv6 จาก ISP ด้วย จึงจะสามารถสื่อสารกันได้ ดังนั้นถ้าไม่อยากมีปัญหากับ client ที่ไม่รองรับ IPv6 ก็จำเป็นต้องปรับ plan ขึ้นมาเป็นราคา $3.5
  • Vultr ที่ราคา $2.5 และ $3.5 มี RAM เพียง 512MB เท่านั้น ดังนั้นถ้าเปิดเว็บไซต์ และรัน service เยอะๆ อาจมีปัญหา RAM ไม่พอจน service หยุดทำงานได้ ควรเพิ่ม swap partition สัก 1GB เพื่อแก้ปัญหา RAM ไม่พอ (ถึงแม้มี RAM มากกว่า 512MB ก็ควรเพิ่ม swap partition)

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธีติดตั้ง VirtualBox บน Ubuntu

วิธีติดตั้งต่อไปนี้ เกือบทั้งหมดผมเอามาจากเว็บไซต์ต้นฉบับ https://www.virtualbox.org/wiki/Linux_Downloads ผมตัดทอนให้เหลือเฉพาะขั้นตอนการติดตั้งสำหรับ Ubuntu และมีปรับปรุงคำสั่งบ้างในขั้นตอนการเพิ่ม repo ให้ดึงค่า code name จากระบบมาใส่โดยอัตโนมัติ และในส่วนของการติดตั้ง Extension Pack ผมเขียนคำสั่งให้เช็คเวอร์ชั่นของ VirtualBox ในระบบ และติดตั้ง Extension Pack ให้เป็นเวอร์ชั่นเดียวกันกับ VirtualBox

ผมทดสอบด้วยตัวเองแล้วบน Ubuntu 18.04 เวอร์ชั่น 64bit ขั้นตอนการติดตั้งทั้งหมดจะเป็น command-line เพื่อให้ทุกขั้นตอนจบได้ในโปรแกรม Terminal โปรแกรมเดียว

วิธีติดตั้ง VirtualBox

เพิ่ม VirtualBox repo เพื่อให้สามารถติดตั้ง และอัปเดต VirtualBox ผ่านคำสั่ง apt ได้

echo "deb [arch=amd64] https://download.virtualbox.org/virtualbox/debian $(lsb_release -cs) contrib" | sudo tee /etc/apt/sources.list.d/virtualbox.list

เพิ่ม key ของ VirtualBox ให้กับ apt

wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add -
wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

อัปเดต apt index และติดตั้ง VirtualBox

sudo apt-get update
sudo apt-get install virtualbox-6.0

วิธีติดตั้ง Extension Pack

หลังจากที่เราติดตั้ง VirtualBox เสร็จแล้ว เราควรติดตั้ง Extension Pack เข้าไปด้วย เพื่อให้สามารถใช้งานฟังก์ชั่นของ VirtualBox ได้อย่างครบถ้วน เช่น ติดตั้งเพื่อให้สามารถใช้งานอุปกรณ์ USB 2.0 และ USB 3.0 บน guest OS ได้ เป็นต้น

ดาวน์โหลด Extension Pack

VBOX_CURRENT_VER=$(VBoxManage -v | cut -d 'r' -f 1)
wget -c -O /tmp/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_CURRENT_VER.vbox-extpack https://download.virtualbox.org/virtualbox/$VBOX_CURRENT_VER/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_CURRENT_VER.vbox-extpack

ติดตั้ง Extension Pack

VBOX_CURRENT_VER=$(VBoxManage -v | cut -d 'r' -f 1)
sudo VBoxManage extpack install --replace /tmp/Oracle_VM_VirtualBox_Extension_Pack-$VBOX_CURRENT_VER.vbox-extpack

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธีใช้ command-line บน Linux

command-line คืออะไร ?

command-line หรือ command-line interface เขียนย่อๆ ได้ว่า CLI คือ ส่วนติดต่อผู้ใช้แบบพิมพ์คำสั่งทีละบรรทัด โดยผู้ใช้สามารถพิมพ์คำสั่งเพื่อเรียกใช้งานโปรแกรมต่างๆ ได้ และโปรแกรมส่วนใหญ่ก็จะแสดงผลลัพธ์ในรูปแบบของข้อความ (text) ดังรูปด้านล่าง

ตัวอย่างการใช้ command-line ผ่านโปรแกรม Terminal

ทำไมต้องใช้ command-line ?

  • เพราะโปรแกรมบางตัวมีให้ใช้เฉพาะบน command-line เท่านั้น
  • เพราะโปรแกรมแบบ command-line ใช้ทรัพยากรเครื่องน้อยกว่า, ข้อผิดพลาดน้อยกว่า และทำงานได้เร็วกว่าโปรแกรมแบบ GUI เนื่องจากไม่มีภาระในส่วนของการแสดงผลกราฟิก
  • เพราะเครื่องที่จะใช้งานบางเครื่องรองรับเฉพาะการใช้งานผ่าน command-line เท่านั้น เช่น เครื่องที่เป็น Linux Server, เครื่องที่ไม่มีจอภาพ หรือเครื่องที่ต้องรีโมทเข้าใช้งานผ่าน SSH เป็นต้น
  • เพราะเราสามารถนำผลลัพธ์จาก command-line ไปใช้งานต่อได้ง่ายกว่าแบบ GUI
  • เพราะบางครั้งเราก็ไม่จำเป็นต้องเห็นผลลัพธ์เป็นภาพกราฟิก

วิธีเรียกใช้งาน command-line บน Linux

หากคุณใช้ Linux Server ซึ่งโดยปกติจะทำงานอยู่ในโหมดข้อความ (text-mode) คุณจะสามารถใช้งาน command-line ได้ทันทีที่คุณเปิดเครื่อง และเข้าสู่ระบบ

แต่สำหรับคนที่ใช้ Linux Desktop ซึ่งทำงานอยู่ในโหมดกราฟิก (graphical-mode) หากจะใช้งาน command-line สามารถทำได้ 2 วิธี คือ

  1. ใช้งาน command-line ผ่านโปรแกรม Terminal (แนะนำ)
  2. ใช้งาน command-line โดยการสลับไปที่ tty อื่น ซึ่งอยู่ในโหมดข้อความ (text-mode)

วิธีเรียกใช้งานโปรแกรม Terminal (แนะนำ)

โปรแกรม MATE Terminal

วิธีเรียกใช้งานโปรแกรม Terminal ทำได้โดยการคลิกเรียกโปรแกรมจากเมนู วิธีเดียวกับที่เราใช้เรียกโปรแกรมอื่นๆ ในเครื่อง และสำหรับ Linux บางตัว เช่น Ubuntu สามารถเรียกโปรแกรม Terminal ผ่านการกดปุ่มลัด ALT+CTRL+T เป็นต้น

วิธีสลับไปที่ tty อื่น

Linux มักจะมีหลาย tty เช่น Ubuntu มี tty1-7 โดย tty7 จะถูกใช้งานเป็น graphical-mode ส่วน tty1-6 จะเป็น text-mode ที่สามารถใช้งาน command-line ได้ (graphical-mode จะทำงานอยู่ใน tty ไหนก็ได้ แล้วแต่การตั้งค่าของ Linux แต่ละ distro)

การสลับไปมาระหว่าง tty1-7 สามารถทำได้ดังนี

  • กรณีที่คุณอยู่ใน graphical-mode ให้กดปุ่ม CTRL+ALT+Fx (Fx คือ F1 ถึง F7)
  • แต่ถ้าคุณอยู่ใน text-mode ให้กดปุ่ม ALT+Fx (Fx คือ F1 ถึง F7) ก็พอไม่ต้องกด CTRL
  • หรือพิมพ์คำสั่ง sudo chvt x (x คือตัวเลข 1 ถึง 7)

ซึ่งวิธีสลับ tty นี้ แม้แต่ผมเองก็ไม่ค่อยจะได้ใช้สักเท่าไหร่ จะใช้ก็ต่อเมื่อโปรแกรมในโหมดกราฟิคค้างจนใช้งานไม่ได้ และปิดไม่ได้จากในโหมดกราฟิก หรืออยากจะใช้งาน text-mode แบบเต็มหน้าจอเป็นต้น

วิธีพิมพ์คำสั่งลงบน command-line

วิธีพิมพ์คำสั่งบน command-line ผมจะขอยกตัวอย่างเป็น command-line บน Ubuntu ดังนี้

command-line บน Ubuntu จะแสดง prompt เพื่อบอกผู้ใช้ว่าพร้อมรับคำสั่งแล้ว โดย prompt ใน Ubuntu จะประกอบไปด้วย <username>@<hostname>:<working_directory> แล้วปิดท้ายด้วย $ สำหรับ user ทั่วไป หรือปิดท้ายด้วย # สำหรับ root user (ถ้าเป็น Linux distro อื่น หน้าตา prompt อาจแตกต่างออกไป)

  • username คือ ชื่อผู้ใช้
  • hostname คือ ชื่อเครื่อง
  • working_directory คือ ชื่อไดเรคทอรีปัจุบัน จะแสดงเป็นเครื่องหมาย ~ เมื่อเราอยู่ในโฮมไดเรคทอรีของตัวเอง เช่น /home/<your_username> หรือ /root เมื่อชื่อผู้ใช้เป็น root
[email protected]:~$
[email protected]:~#

เมื่อคุณเห็น prompt ที่ปิดท้ายด้วยเครื่องหมาย $ หรือ # คุณก็สามารถพิมพ์คำสั่ง แล้วกดปุ่ม Enter ได้เลย เช่น พิมพ์ pwd แล้วกดปุ่ม Enter เมื่อคำสั่งนั้นๆ ทำงานเสร็จสิ้น ก็จะแสดง prompt ขึ้นมาเพื่อรอรับคำสั่งอีกครั้ง ตามตัวอย่างด้านล่าง

[email protected]:~$ pwd<ENTER>
/home/poundxi
[email protected]:~$

คำสั่งบน Linux สำหรับทดลองใช้งาน command-line

คำสั่งต่อไปนี้ เป็นคำสั่งที่จะช่วยให้คุณเข้าใจภาพรวมการใช้งาน command-line เบื้องต้น เพราะเป็นคำสั่งที่ง่าย ไม่ซับซ้อน เมื่อคุณใช้งาน Linux แบบจริงจัง คุณจะรู้ และจดจำคำสั่งอื่นๆ ได้ด้วยตัวคุณเอง

  • whoami = แสดงชื่อผู้ใช้ปัจจุบัน
  • pwd = แสดงชื่อไดเรคทอรีปัจจุบัน
  • ls = แสดงรายชื่อไฟล์ และไดเรคทอรีที่อยู่ในไดเรคทอรีปัจจุบัน
  • ls -l = แสดงรายชื่อไฟล์ และไดเรคทอรีที่อยู่ในไดเรคทอรีปัจจุบัน (แสดงแบบ 1 รายการ/บรรทัด)
  • cd <directory_name> = ย้ายไปทำงานที่ไดเรคทอรีชื่อ <directory_name>
  • mkdir <directory_name> = สร้างไดเรคทอรีชื่อ <directory_name>
  • touch <filename> = สร้างไฟล์เปล่าชื่อ <filename>
  • echo “sometext” > <filename> = เขียนข้อมูล sometext ลงไปในไฟล์ชื่อ <filename> (เขียนทับ)
  • cat <filename> = แสดง/อ่านข้อมูลที่อยู่ในไฟล์ชื่อ <filename>
  • rm <filename> = ลบไฟล์ชื่อ <filename>
  • rm -r <directory_name> = ลบไดเรคทอรีชื่อ <directory_name>
  • man <command> = อ่านคู่มือการใช้งานคำสั่ง <command> อาจแทนด้วยคำสั่ง ls ชื่ออ่านคู่มือการใช้งานคำสั่ง ls และคุณสามารถออกจากคำสั่ง man ด้วยการกดปุ่ม q

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

อธิบายคำสั่ง chmod บน Linux

chmod เป็นคำสั่งบน Linux ที่ใช้สำหรับกำหนดสิทธิ์ read, write หรือ execute ให้กับ file หรือ directory ว่าจะให้มีสิทธิ์ใช้งานแบบไหน และใช้งานโดยใครได้บ้าง

หลายๆ ท่านอาจจะเคยเจอคำสั่ง chmod 644, chmod 755 หรือ chmod 777 อะไรทำนองนี้ วันนี้เรามาดูกันครับ ว่ามันมีความหมายอย่างไร

เริ่มกันที่คำสั่ง ls -l

ก่อนจะพูดถึงคำสั่งที่ใช้สำหรับกำหนดสิทธิ์ เรามาดูกันที่คำสั่งสำหรับแสดงสิทธิ์กันก่อนครับ โดยคำสั่งที่เราจะใช้คือ คำสั่ง ls -l ที่จะช่วยให้คุณทราบว่า file หรือ directory นั้นใครเป็นเจ้าของ และ file หรือ directory นั้นถูกกำหนดสิทธิ์ไว้อย่างไร โดยผลลัพธ์ของคำสั่ง ls -l จะหน้าตาเป็นแบบนี้ครับ

-rwxrwx— 1 user group 1293 Jun 3 20:34 file_name

drw-rw-rw- 1 user group 4096 Jun 3 20:34 dir_name

ซึ่งผลลัพธ์ที่ว่านี้จะบอกเราว่ารายการไหนเป็น file หรือ directory, มีสิทธิ์ read, write หรือ execute โดย user และ group ไหนบ้าง, file มีขนาดเท่าไหร่, ถูกแก้ไขล่าสุดตอนไหน, file หรือ directory นั้นมีชื่อว่าอะไร ซึ่งผลลัพธ์แต่ละ column มีความหมายดังนี้

column1 บอกว่าเป็น file (-) หรือ directory (d) พร้อมทั้งบอกสิทธิ์การ read, write และ execute

column2 แสดงจำนวน hard link ของไฟล์ หรือ แสดงจำนวน subdirectory

column3 แสดงชื่อ user ที่เป็นเจ้าของ file หรือ directory

column4 แสดงชื่อ group ที่เป็นเจ้าของ file หรือ directory

column5 แสดงขนาดของ file มีหน่วยเป็น byte หรือหากเป็น directory จะแสดงเป็น 4096

column6 แสดงวันที่ และเวลาที่แก้ไขล่าสุด

column7 แสดงชื่อของ file หรือ directory

ซึ่งในบทความนี้เราจะให้ความสนใจไปที่ column 1, 3 และ 4 ครับ

อธิบาย Column1 -rwxrwxrwx

-rwxrwxrwx จะแบ่งออกได้เป็น 4 ส่วนดังนี้

– | rwx | rwx | rwx

ส่วนที่1 บอกกว่าเป็น file หรือ directory โดยจะแสดง เมื่อเป็น file และจะแสดง d เมื่อเป็น directory

ส่วนที่2 บอกสิทธิ์การ read, write และ execute ของ user ที่เป็นเจ้าของ file/directory

ส่วนที่3 บอกสิทธิ์การ read, write และ execute ของ group ที่เป็นเจ้าของ file/directory

ส่วนที่3 บอกสิทธิ์การ read, write และ execute ของ other หรือ user อื่นๆ ที่ไม่ใช่เจ้าของ file/directory และไม่ได้อยู่ใน group

ตัวอย่าง และความหมาย

-rwx—— แบ่งเป็น -|rwx|—|—

  • – = เป็น file
  • rwx = user สามารถ read write execute ได้
  • — = group ไม่สามารถ read write execute ได้
  • — = other ไม่สามารถ read write execute ได้

-rw-rw—- แบ่งเป็น -|rw-|rw-|—

  • – = เป็น file
  • rw- = user สามารถ read write ได้, แต่ไม่สามารถ execute
  • rw- = group สามารถ read write ได้, แต่ไม่สามารถ execute
  • — = other ไม่สามารถ read write execute ได้

-rwxrwxr-x แบ่งเป็น -|rwx|rwx|r-x

  • – = เป็น file
  • rwx = user สามารถ read write execute ได้
  • rwx = group สามารถ read write execute ได้
  • r-x = other สามารถ read execute ได้, แต่ไม่สามารถ write

drw-rw-r– แบ่งเป็น d|rw-|rw-|r–

  • d = เป็น directory
  • rw- = user สามารถ read write ได้, แต่ไม่สามารถ execute
  • rw- = group สามารถ read write ได้, แต่ไม่สามารถ execute
  • r– = other สามารถ read ได้, แต่ไม่สามารถ write และ execute

drwxrwxr-x แบ่งเป็น d|rwx|rwx|r-x

  • d = เป็น directory
  • rwx = user สามารถ read write execute ได้
  • rwx = group สามารถ read write execute ได้
  • r-x = other สามารถ read execute ได้, แต่ไม่สามารถ write

ความเกี่ยวข้องของ rwxrwxrwx และ ตัวเลข 644 755 777 ฯลฯ

หลังจากที่เราเข้าใจกันไปแล้วว่า rwxrwxrwx เราสามารถแบ่งได้เป็นสิทธ์ของ user, group และ other ซึ่งนับได้ 3 กลุ่ม ซึ่งเท่ากับจำนวนตัวเลขของเราที่มี 3 ตัวพอดีครับ นั่นคือตัวเลขแต่ละตัว บ่งบอกสิทธิ์ของแต่ละกลุ่มนั่นเอง

วิธีการแปลง rwxrwxrwx เป็นตัวเลข

เราจะแทนค่า rwx ด้วยตัวเลขดังนี้ r=4, w=2, x=1, -=0 เช่น

rwx——

=[rwx][—][—]

=[4+2+1][0+0+0][0+0+0]

=700

-rw-rw—-

=[rw-][rw-][—]

=[4+2+0][4+2+0][0+0+0]

=660

rwxrwxr-x

=[rwx][rwx][r-x]

=[4+2+1][4+2+1][4+0+1]

=775

rw-rw-r–

=[rw-][rw-][r–]

=[4+2+0][4+2+0][4+0+0]

=664

การใช้คำสั่ง chmod

หนึ่งในรูปแบบการใช้คำสั่ง chmod ที่เราคุ้นเคยกัน ได้แก่ การใช้คำสั่ง chmod ที่ตามด้วยตัวเลข 3 ตัว เช่น

chmod <octal_digits> file_or_directory_name

หรือใช้สัญลักษณ์ user, group, other, read, write, execute ดังนี้ก็สะดวกดีครับ

chmod u=rwx,g=rwx,o=rwx file_or_directory_name

ตัวอย่าง

ตัวอย่างที่ 1. กำหนดให้ทุก user สามารถ read, write, execute ได้

chmod 777 file_or_directory_name

หรือ

chmod ugo=rwx file_or_directory_name

ตัวอย่างที่ 2. กำหนดให้ user ที่เป็นเจ้าของ และ user ที่อยู่ใน group สามารถ read, write, execute ได้ ส่วน user อื่นๆ กำหนดให้ไม่มีสิทธิ์ใดๆ

chmod 770 file_or_directory_name

หรือ

chmod ug=rwx,o= file_or_directory_name

ตัวอย่างที่ 3. กำหนดให้ user ที่เป็นเจ้าของสามารถ read, write, execute ได้ ส่วน user ใน group สามารถ read, execute ได้ ส่วน user อื่นๆ กำหนดให้ไม่มีสิทธิ์ใดๆ

chmod 750 file_or_directory_name

หรือ

chmod u=rwx,g=rx,o= file_or_directory_name

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธี build hping3 บน Ubuntu

โดยปกติบน Ubuntu คุณสามารถติดตั้ง hping3 ผ่าน repository ได้โดยใช้คำสั่ง apt หรือ apt-get อยู่แล้ว

แต่ถ้าคุณจะ build hping3 เอง อาจจะด้วยเหตุผลอะไรก็แล้วแต่ ให้คุณทำตามขั้นตอนด้านล่างนี้

1. ถ้าคุณยังไม่ได้ติดตั้งชุดเครื่องมือสำหรับ build ให้ติดตั้งก่อน โดยใช้คำสั่งนี้

sudo apt install -y build-essential

2. ติดตั้ง pcap development package

sudo apt install -y libpcap-dev
sudo ln -s /usr/include/pcap/bpf.h /usr/include/net/bpf.h

3. ติดตั้ง TCL development package

sudo apt install -y tcl-dev

4. ดาวน์โหลด source ไฟล์ hping3 จากเว็บไซต์ต้นฉบับ

wget http://www.hping.org/hping3-20051105.tar.gz

5. extract hping3 archive ที่เพิ่งดาวน์โหลดมา

tar xf hping3-20051105.tar.gz

6. ย้ายไปทำงานที่ไดเรกทอรี่ hping3 ที่เพิ่ง extract ออกมา

cd hping3-20051105

7. ถ้าคุณใช้ Ubuntu เวอร์ชั่น 64บิท คุณต้อง Patch ไฟล์ bytesex.h ก่อน

wget -O hping3-bytesex.h-64bit.patch https://git.io/vMsrB
patch bytesex.h hping3-bytesex.h-64bit.patch

8. รันสคริป configure เพื่อสร้าง Makefile ใหม่

./configure

9. build, strip และ ติดตั้ง hping3

make
make strip
sudo make install

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

วิธีติดตั้ง mdk3 บน Ubuntu

ถ้าคุณต้องการจะติดตั้ง mdk3 บน Ubuntu คุณจะต้อง build เอง โดยใช้วิธีดังต่อไปนี้

หมายเหตุ : วิธีนี้ทดสอบแล้ว โดยการ build ด้วย GCC 4.8 และติดตั้งบน Ubuntu 14.04

ขั้นตอนการ build mdk3

1. ดาวน์โหลดไฟล์ source ของ mdk3 จากเว็บไซต์ต้นฉบับ

wget http://aspj.aircrack-ng.org/mdk3-v6.tar.bz2

2. extract ไฟล์ archive ที่เพิ่งดาวน์โหลดมา

tar -xf mdk3-v6.tar.bz2

3. ย้ายไปที่งานที่ไดเรกทอรี่ mdk3 ที่เพิ่ง extract ออกมา

cd mdk3-v6

4. แก้ไขไฟล์ชื่อ “Makefile” ในบรรทัดที่ 2 จาก “LINKFLAGS   = –lpthread” ไปเป็น “LINKFLAGS   = –pthread” (ลบตัวเอ็ล “l” ออก) โดยจะใช้ editor ตัวไหนก็ได้แล้วแต่สะดวก เช่น vim, nano หรือ gedit

จาก > LINKFLAGS   = -lpthread
เป็น > LINKFLAGS   = -pthread

5.ใช้คำสั่ง make เพื่อเริ่มกระบวนการ build

make

6.ติดตั้ง mdk3 ลงบนระบบของคุณ (ขั้นตอนนี้ต้องใช้สิทธิ์ root)

sudo make install

เคล็ดลับ

คุณสามารถรวมขั้นตอนที่ 4 และ 5 เข้าด้วยกันโดยใช้คำสั่งต่อไปนี้

make LINKFLAGS=-pthread

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน

Linux คืออะไร ?

Linux อ่านว่า ลินุกซ์ มีความหมายที่ถูกเข้าใจกันโดยทั่วไปได้ 2 ความหมาย คือ

  1. ลินุกซ์ ซึ่งหมายถึง ระบบปฏิบัติการลินุกซ์ (Linux Operating System)
  2. ลินุกซ์ ซึ่งหมายถึง ลินุกซ์ เคอร์เนิล (Linux Kernel)
Tux.svg
มาสคอต อย่างเป็นทางการของ Linux Kernel ชื่อว่า Tux

เริ่มแรกลินุกซ์ถูกสร้างขึ้นโดย Linus Torvalds โดยใช้ระบบปฏิบัติการ MINIX ซึ่งเป็นระบบปฏิบัติการแบบยูนิกซ์เป็นต้นแบบ โดย Linus Torvalds ไม่ได้พัฒนาลินุกซ์ให้เป็นระบบปฏิบัติการ แต่พัฒนาให้ลินุกซ์เป็นเพียงเคอร์เนิล (Kernel) หรือแก่นของระบบปฏิบัติการ ซึ่งจะเป็นส่วนที่อยู่ระดับล่างสุด และใกล้ชิดกับฮาร์ดแวร์มากที่สุด มีหน้าที่หลักในการติดต่อกับฮาร์ดแวร์ (Hardware) และจัดสรรทรัพยากรของระบบ (Resources Management) เท่านั้น ซึ่งยังไม่เพียงพอต่อการถูกนำไปใช้งานโดยผู้ใช้ทั่วไป

Kernel_Layout.svg
By Bobbo (Own work) [CC BY-SA 3.0 or GFDL], via Wikimedia Commons

ในช่วงเวลาใกล้ๆ กัน Richard Stallman ก็ได้พยายามสร้างระบบปฏิบัติการที่เข้ากันได้กับระบบปฏิบัติการยูนิกซ์ ซึ่งระบบปฏิบัติการนี้ประกอบไปด้วยไลบรารี่, คอมไพเลอร์, โปรแกรมแก้ไขข้อความ, เชลล์ และ Windowing System จะเหลือก็แต่ส่วนที่เป็นเคอร์เนิลซึ่งยังพัฒนาออกมาได้ไม่สมบูรณ์ Richard Stallman จึงได้เอาลินุกซ์ เคอร์เนิลที่พัฒนาโดย Linus Torvalds มาใช้แทน จนทำให้ลินุกซ์ถูกเรียกได้ว่าเป็นระบบปฏิบัติการในที่สุด

Linux Distribution คืออะไร ?

Linux Distribution (อ่านว่า ลินุกซ์ดิสทริบิวชัน) หรือเรียกย่อๆ ว่า Linux Distro (อ่านว่า ลินุกซ์ดิสโทร) คือ ระบบปฏิบัติการลินุกซ์ที่ถูกออกแบบและปรับแต่งเพื่อการแจกจ่าย โดยการนำเอาระบบปฏิบัติการลินุกซ์มาปรับแต่งและเพิ่มซอฟต์แวร์พื้นฐานต่างๆ รวมเข้าไป เช่น เพิ่มส่วนติดต่อผู้ใช้, โปรแกรมจัดการไฟล์, โปรแกรมสำหรับดูหนัง-ฟังเพลง, โปรแกรมเว็บเบราว์เซอร์ เป็นต้น สรุปง่ายๆ ก็คือ ลินุกซ์ดิสโทรเป็นระบบปฏิบัติการลินุกซ์แบบสำเร็จรูป พร้อมใช้งาน เมื่อติดตั้งแล้วแทบจะไม่ต้องปรับแต่งหรือติดตั้งซอฟต์แวร์เพิ่มเลย ใช้งานได้ทันที เช่น Arch Linux, Debian, Ubuntu, Linux Mint, openSUSE, Red Hat และ Fedora เป็นต้น

ระบบปฏิบัติการ Ubuntu 18.04 LTS
ระบบปฏิบัติการ Ubuntu 18.04 LTS

ข้อดีของระบบปฏิบัติการลินุกซ์

  1. เป็นซอฟต์แวร์โอเพนซอร์ส ทำให้เราสามารถปรับแต่งระบบได้อย่างอิสระ
  2. ระบบปฏิบัติการลินุกซ์ส่วนใหญ่ อนุญาตให้คุณใช้งานได้ฟรี ไม่ต้องเสียค่าใช้จ่าย ทำให้ผู้ผลิตฮาร์ดแวร์ที่จำเป็นต้องมีระบบปฏิบัติการส่วนใหญ่นำลินุกซ์ไปใช้ในระบบ เพราะไม่ต้องจ่ายค่าลิขสิทธิ์เพิ่มเติม เช่น เราเตอร์, โทรศัพท์มือถือ, ระบบเครื่องเสียงในรถยนต์ หรือ อุปกรณ์อื่นๆ ที่ใช้ระบบปฏิบัติการ Android เป็นต้น
  3. ไม่ต้องกังวลเรื่องลิขสิทธิ์ เพราะเขาอนุญาตให้คุณใช้งานฟรีภายใต้เงื่อนไขที่ระบุไว้ในสัญญาอนุญาต
  4. ไวรัสคอมพิวเตอร์ส่วนใหญ่ ไม่สามารถทำงานบนระบบปฏิบัติการลินุกซ์ได้ เพราะมาตรการการรักษาความปลอดภัยของลินุกซ์เอง (เช่น ระบบสิทธิ์การใช้งานไฟล์) และเพราะลินุกซ์ยังมีปริมาณผู้ใช้งานที่น้อยมากเมื่อเทียบกับผู้ใช้งานระบบปฏิบัติการวินโดวส์ จนผู้พัฒนาไวรัสคิดว่ายังไม่คุ้มค่าที่จะมาสร้างไวรัสขึ้นมาเพื่อโจมตีผู้ใช้งานลินุกซ์ (คล้ายๆ กับความคิดที่ว่า จะตกปลาก็ตกในบ่อที่มีปลาเยอะๆ หน่อยย่อมให้ผลที่ดีกว่า ใช้เวลาตกปลาเท่ากันแต่จำนวนที่ตกได้ย่อมต่างกัน)
  5. ซอฟต์แวร์บนระบบปฏิบัติการลินุกซ์ส่วนมากได้รับการอัปเดตอยู่ตลอดเวลา ทำให้มั่นใจได้ในเสถียรภาพ ความสามารถ และความปลอดภัย

ข้อเสียของระบบปฏิบัติการลินุกซ์

  • ผู้ผลิตฮาร์ดแวร์ เช่น การ์ดจอ, printer, USB WiFi ไม่ค่อยให้ความสนใจกับไดรเวอร์อุปกรณ์ (device driver) บนลินุกซ์ ทำให้ฮาร์ดแวร์บางตัวไม่สามารถใช้งานได้กับลินุกซ์ หรือถ้าใช้งานได้ก็ไม่เต็มประสิทธิภาพเท่าที่ควร ดังนั้นหากคิดจะใช้ลินุกซ์ควรตรวจสอบให้แน่ใจก่อนว่าฮาร์ดแวร์นั้นๆ สามารถใช้ได้กับลินุกซ์หรือไม่ ถึงแม้ว่าปัจจุบันปัญหาเรื่องไดรเวอร์บนลินุกซ์จะลดลงแล้วก็ตาม
  • ไม่สามารถติดตั้งและใช้งานซอฟต์แวร์หลายๆ ตัวที่ถูกสร้างขึ้นมาสำหรับระบบปฏิบัติการวินโดวส์โดยเฉพาะได้ ดังนั้นหากจะเปลี่ยนมาใช้ลินุกซ์ควรตรวจสอบให้แน่ใจก่อนว่าซอฟต์แวร์ที่จำเป็น ต้องใช้นั้น สามารถใช้ได้บนลินุกซ์หรือไม่ หากซอฟต์แวร์ตัวนั้นใช้งานบนลินุกซ์ไม่ได้ ยังพอมีซอฟต์แวร์ตัวอื่นทดแทนได้ไหม
  • เกมบนระบบปฏิบัติการลินุกซ์ค่อนข้างน้อยเมื่อเทียบกับเกมบนระบบปฏิบัติการวินโดวส์ และหลายๆ เกมกราฟิกไม่สวยเอามากๆ ดังนั้นลินุกซ์จึงเป็นตัวเลือกที่ไม่ดีนักสำหรับผู้ที่ชื่นชอบการเล่นเกม เป็นชีวิตจิตใจ

หมายเหตุ : ลินุกซ์สามารถใช้งานซอฟต์แวร์ของระบบปฏิบัติการวินโดวส์ได้โดยเรียกใช้งานผ่านโปรแกรม Wine (ใช้ได้บางโปรแกรม) หรือ ติดตั้งซอฟต์แวร์ลงบนระบบปฏิบัติการวินโดวส์ที่ถูกติดตั้งไว้บน Virtual Machine เช่น VirtualBox หรือ VMware อีกที (ซึ่งต้องใช้ทรัพยากรของระบบมากพอตัว แน่นอน.. คอมพิวเตอร์เก่าๆ คงหมดสิทธิ์ !)

ข้อมูลเพิ่มเติม

แบ่งปันสิ่งนี้บน