หนังสือ Linux Advance ภาษาไทย

May 20, 2017 | Author: Anonymous | Category: Linux
Share Embed


Short Description

ติดตั้งผ่าน web เซิร์ฟเวอร์ 4. FTP .... server = /usr/sbin/ipop3d l og_on_success + = HOST DURATION log_on_failure + = H...

Description

บทที่ 1 โครงสร้าง ฮาร์ดดิสก์และการเรียกชื่อฮาร์ดดิสก์

1

ฮาร์ดดิสก์ประกอบด้วย 1. MBR (Master Boot Record) 2. Primary Partition 3. Extended Partition 4. Logical Partition MBR MBR ย่อมาจากคำาว่า Master Boot Record ซึ่ง MBR จะอยู่ที่เซกเตอร์แรกสุดของฮาร์ดิสก์ MBR จะประกอบด้วยสองส่วน คือ IPL (Initial Program Loader) ขนาด 446 byte เป็นพื้นที่ที่โปรแกรมบูทโหลดเดอร์ของลีนุกซ์จะไปติดตั้งอยู่ ใช้ในการบูทของลีนุกซ์ และ Partition table ขนาด 66 byte ดังรูปที่ 1-1 Initial Program Loader (IPL) 466 Byte

Partition table 66 Byte

รูปที่ 1-1 รูปแสดงส่วนประกอบของ MBR การสร้าง partition ให้กับฮาร์ดดิสก์ มี 3 แบบ คือ Primary, Extended และ Logical ในการสร้างพาร์ติชันฮาร์ดดิสก์ ถ้าเราสร้างทุกพาร์ติชันให้เป็น Primary ทั้งหมด จะสร้างได้เพียง 4 พาร์ติชันเท่านั้น ถ้าต้องการมากกว่านั้นต้องใช้ 1 พาร์ติชนั เป็น Extended แล้ว แบ่งย่อย Extended เป็น Logical ตัวอย่างดังภาพ ที่ 1-2 และ 1-3 ตัวอย่างการแบ่งพาร์ติชนั `

รูปที่ 1-2 ตัวอย่างการแบ่ง Partition แบบที่ 1 ใช้พาร์ติชันที่ 4 เป็น Extended

รูปที่ 1-3 ตัวอย่างการแบ่ง Partition แบบ ที่ 2 ใช้พาร์ติชันที่ 2 เป็น Extended

2

ลีนุกซ์เคอร์เนลมีข้อจำากัดในการจัดการพาร์ติชันที่เป็นฮาร์ดดิสก์ IDE ได้ 63 พาร์ติชนั ฮาร์ดดิสก์ SCSI จะได้ 15 พาร์ติชนั พาร์ติชนั แรกของ Logical partition จะเป็น Partition ที่ 5 เสมอ

การเรียกชื่อฮาร์ดดิสก์ ฮาร์ดดิสก์ IDE มีการเชื่อมต่อกับสาย IDE ตรงตำาแหน่งต่างๆ จะมีชื่อเรียกดังนี้ Primary Master เรียกว่า /dev/hda Primary Slave เรียกว่า /dev/hdb Secondary Master เรียกว่า /dev/hdc Secondary Slave เรียกว่า /dev/hdd ลำาดับที่ของ พาร์ติชันของฮาร์ดดิลำาดับที่เท่าไหร่ก็จะเรียก /dev/hda1, /dev/hda2 ..., /dev/hdb1, /dev/hdb2..., /dev/hdc1, /dev/hdc2... ฮาร์ดดิสก์ SCSI จะเรียกชื่อตาม SCSI ID SCSI ID 0 เรียกว่า /dev/sda SCSI ID 1 เรียกว่า /dev/sdb SCSI ID 2 เรียกว่า /dev/sdc SCSI ID 3 เรียกว่า /dev/sdd SCSI ID.. เรียกว่า /dev/sd... เรื่อยไปตามจำานวนฮาร์ดดิสก์ที่สามารถใส่ได้ของ SCSI ลำาดับที่ของพาร์ติชันก็เช่นเดียวกันกับฮาร์ดดิสก์แบบ IDE เช่น /dev/sda1, /dev/sda2..., /dev/sdb1, /dev/sdb2..., /dev/sdc1, /dev/sdc2... ส่วน ฮาร์ดดิสก์ SATA ก็จะเรียกชื่อ partition เหมือนกับฮาร์ดดิสก์ SCSI เมื่อเรารู้จักการเรียกชื่อฮาร์ดดิสก์แล้วเราก็พร้อมที่จะติดตั้งลีนุกซ์แล้ว

รูปที่ 1-4 แสดงฮาร์ดดิสก์ แบบ IDE , SCSI และ SATA ตามลำาดับ

บทที่ 2 วิธกี ารที่จะติดตั้งลีนุกซ์และหลักการติดตั้งลีนุกซ์

3

ติดตั้งลีนุกซ์ได้อย่างไรบ้าง วิธีการติดตั้งลีนุกซ์ทุกค่ายคือการติดตั้งด้วยแผ่น CD หรือ DVD สำาหรับการติดตั้งวิธีการอื่นก็สามารถทำาได้ ลีนุกซ์ Red Hat มีวธิ ีการติดตั้งดังนี้ 1. CD / DVD เป็นวิธีที่ง่าย และสะดวก ได้รับความนิยมมากที่สุด 2. NFS เป็นการติดตั้งผ่าน NFS Network file system ซึ่งเป็นการแชร์ไฟล์ของลีนุกซ์ วิธีนี้เหมาะสำาหรับการติดตั้งเพื่อการอบรมลีนุกซ์ สามารถติดตั้งได้พร้อมกันหลายๆ เครื่อง จะเร็วกว่าติดตั้งจาก CD เนื่องจากไม่ต้องคอยเปลี่ยนแผ่น 3. HTTP ติดตั้งผ่าน web เซิร์ฟเวอร์ 4. FTP ติดตั้งผ่าน FTP เซิร์ฟเวอร์ 5. Hard Disk ติดตั้งผ่านฮาร์ดดิสก็ อีกลูกหรืออีกพาร์ติชันหนึ่ง 6. Kickstart ติดตั้งโดยใช้ไฟล์ kickstart เหมาะสำาหรับการติดตั้งลีนุกซ์พร้อมกันจำานวนมาก โดยที่เครื่องสเปคเดียวกัน และติดตั้งเหมือนกันหมดไม่ว่าจะเป็นขนาด partition หรือจำานวน package หลักการติดตั้ง ลีนุกซ์ การติดตั้งลีนุกซ์ มีส่วนสำาคัญตรงขั้นตอนแบ่งพาร์ติชัน เพราะเราต้องรูว้ ่าเราจะติดตั้งลีนุกซ์ เพื่อใช้งานอะไร ในการติดตั้งลีนุกซ์ พาร์ติชันที่จำาเป็นได้แก่ / (อ่านว่า รูท), /boot, swap แต่ในการนำาลีนุกซ์ เซิร์ฟเวอร์ ไปใช้งานจริงนั้นการแบ่งพาร์ติชันเพียงเท่านี้ ไม่สะดวกในการนำาไปใช้งาน จะต้องมีการแบ่งพาร์ติชัน อืน่ ๆ ออกมาด้วย เช่น ต้องการทำา mail เซิร์ฟเวอร์ /boot พื้นที่เก็บ Kernel และไฟล์ที่เกี่ยวข้องกับการบูท / พื้นที่เก็บไฟล์ซิสเต็ม /home พื้นที่ใช้งานของ user /var/spool/mail พื้นที่เก็บ mail /tmp พื้นที่เก็บไฟล์ชั่วคราว swap พื้นที่ที่ใช้เป็นหน่วยความจำาสำารอง เวลา RAM ไม่พอ ต้องการทำา PostgreSQL Database เซิร์ฟเวอร์ /boot พื้นที่เก็บ Kernel และไฟล์ที่เกี่ยวข้องกับการบูท / พื้นที่เก็บไฟล์ซิสเต็ม /usr/local/pgsql พื้นที่เก็บข้อมูลของ PostgreSQL /backup พื้นที่ไว้สำารองข้อมูลของ PostgreSQL /tmp พื้นที่เก็บไฟล์ชั่วคราว swap พื้นที่ที่ใช้เป็นหน่วยความจำาสำารอง เวลา RAM ไม่พอ

4

ขนาด partiton /boot 100 MB / 6-8 GB /tmp 256 MB swap 2 เท่าของ RAM แต่ไม่เกิน 2 GB ส่วนพาร์ติชันอื่นๆ แบ่งตามขนาดของฮาร์ดดิสก์ และความต้องการใช้งาน พาร์ติชัน /tmp เป็นพาร์ติชันที่แยกออกมาเพื่อความปลอดภัยของเซิร์ฟเวอร์ถ้าพาร์ติชัน / ข้อมูลเต็มก็จะไม่มีผลกระทบกับระบบ พาร์ตชิ ันที่แยกออกมาได้และไม่ได้จาก / ของการติดตั้งลีนุกซ์ พาร์ติชนั ที่ไม่สามารถแยกออกจาก / (รูทไดเรกทอรี) หรือแยกจากไฟล์ซิสเต็มได้ คือ /etc, /lib, /bin, /sbin, /dev พาร์ติชนั ที่สามารถแยกออกมาได้ /tmp, /usr, /usr/local, /home, /var, /opt ทำาไมต้องแยกหรือแบ่งพาร์ติชันออกมา เพื่อความยืดหยุ่นในการใช้งาน สามารถแก้ปัญหาได้ง่ายเมื่อฮาร์ดดิสก์เต็ม สามารถทำาโควต้าได้ ถ้าเราไม่แบ่ง พาร์ติชนั แยกออกมาจะไม่สามารถทำาโควต้าได้ นอกจากนั้นยังสะดวกในการสำารองข้อมูล พาร์ตชิ ัน /boot พาร์ติชนั /boot ต้องเป็นพาร์ติชันแรกของฮาร์ดดิสก์

บทที่ 3 กระบวนการบูทของลีนุกซ์

รูปที่ 3-1 รูปแสดงกระบวนการบูทของลีนุกซ์ หลังจากที่เราติดตั้งลีนุกซ์เสร็จ บูทเครื่องใหม่ หรือเปิดสวิทช์ หลังจากที่เครื่องคอมพิวเตอร์ตรวจสอบตัวเองแล้วค้นหาอุปกรณ์ที่ใช้บูท ถ้าตรวเจออุปกรณ์ที่ใช้บูทเป็นฮาร์ดดิสก์ก็จะไปทำางานต่อที่ MBR ซึ่ง GRUB ฝังตัวอยู่ในส่วน IPL ของ MBR มาทำาความเข้าใจเกี่ยวกับโปรแกรม Boot Loader ที่ชื่อ GRUB กันก่อนครับ

5

6

GRUB (Grand Unified Bootloader) GRUB เป็นโปรแกรมที่จัดการเกี่ยวการบูทของลีนุกซ์ ในลีนุกซ์รุ่นเก่าจะใช้ โปรแกรม LILO ซึ่งมีข้อจำากัดและข้อด้อยกว่า GRUB ปัจจุบันทั้งลีนุกซ์ทุกค่ายรวมถึง Solaris ก็หนั มาใช้ GRUB เป็นบูทโหลดเดอร์กันทั้งนั้น ข้อเด่นของ GRUB • สามารถใช้สำาสั่งแบบ Command-line ได้ • ใช้ได้กับไฟล์ซิสเต็มเหล่านี้ ext2/ext3, ReiserFS, JFS, FAT, minix, FFS • มีระบบป้องกันด้วยรหัสผ่านที่เข้าระหัสแบบ MD5 • เปลี่ยนค่าใน grub.conf มีผลทันที • ถ้า MBR ใน /dev/hda ถูกทำาลาย ติดตั้งใหม่ได้ /sbin/grub-install /dev/hda ตัวอย่าง ไฟล์ /boot/grub/grub.conf GRUB version ใหม่ ไฟล์ config จะเปลี่ยนเป็น /boot/grub/menu.lst เราสามารถเปลี่ยนค่าต่างในไฟล์ config นี้ default=0 timeout=10 splashimage=(hd0,1)/grub/splash.xpm.gz #ชุดคำำสัง่ หรือ เมนู ท่ี 0 title Linux TLE (2.4.22-6_1.2163.nptl_03tle) root (hd0,1) kernel /vmlinuz-2.4.22-6_1.2163.nptl_03tle ro root=/dev/hda3 hdc=ide-scsi rhgb initrd /initrd-2.4.22-6_1.2163.nptl_03tle.img #ชุดคำำสัง่ หรือ เมนู ท่ี 1 title Windows rootnoverify (hd0,0) chainloader +1

ถ้า default=0 บูทเข้า ลีนุกซ์ ถ้า default=1 บูทเข้า Windows timeout=10 แสดงหน้าจอเมนูบูทอยู่ 10 วินาที แลัวจึงบูทเข้า default หลังจากที่ผ่านโปรแกรม Boot loader โปรแกรม Boot loader ก็จะส่งการทำางานต่อมาที่ partition /boot ซึ่งในพาร์ติชันนี้จะเก็บ kernel ในลักษณะของไฟล์บีบอัด kernel จะขยายตัวมันเอง ตรวจสอบฮาร์แวร์และติดตั้งไดรเวอร์ หลังจากนัน้ จะเมาท์ root file system แบบ read only แล้วจึงเข้าสู่ขั้นตอน init

7

กระบวนการ init ในกระบวนการบูท ขั้นตอนการ init คือการรันคำาสั่ง /sbin/init นัน่ เอง เริ่มจากอ่านข้อมูลจากไฟล์ /etc/inittab แล้วไปทำางานต่อที่ /etc/rc.d/rc.sysinit ไฟล์ /etc/inittab ในไฟล์ /etc/inittab จะมีรายละเอียดบางส่วนที่จะต้องมาทำาความเข้าใจกันดังนี้ Red Hat ลีนุกซ์จะมี runlevel อยู่ 6 runlevel ใช้งานอยู่จริงๆ 5 runlevel ตามรายละเอียดด้านล่างนี้ 1 2 3 4 5 6 7 8 9 10 11 12 13

# Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:3:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.sysinit

เลข 3 ในบรรทัดที่ 10 เป็นการบอกว่า บูทให้เข้าสู่ runlevel 3 เป็นค่าปกติ ถ้าหากเราต้องการให้เข้า runlevel 5 โดยให้บูทเข้ากราฟิกโหมด หรือ X11 ก็ทำาได้โดยการเปลี่ยน เลข 3 เป็นเลข 5 id:5:initdefault: ถ้าค่า initdefault มีคา่ เป็น 3 ในกระบวนการบูทหลังจากที่รัน script /etc/rc.d/rc.sysinit แล้วก็จะไปทำางานต่อที่ /etc/rc.d/rc3.d/ ถ้าค่า initdefault มีคา่ เป็น 5 ในกระบวนการบูทหหลังจากที่รัน script /etc/rc.d/rc.sysinit แล้วก็จะไปทำางานต่อที่ /etc/rc.d/rc5.d/ ซึ่งใน directory เหล่านี้จะเป็นที่เก็บลิงค์ไฟล์ start script (ลิงค์มาจาก /etc/init.d/) ของ service ต่างๆ ซึ่งเป็นตัวบอกว่าในการบูทขึ้นมาจะให้ start service นัน้ ๆ หรือไม่ หลังจากที่ start service เรียบร้อยแล้วก็จะมาอ่านไฟล์ /etc/rc.d/rc.local ซึ่งเป็นไฟล์ที่เก็บคำาสั่งที่ใช้ start service สำาหรับโปรแกรมที่ไม่มี start script ใน /etc/init.d สุดท้ายก็เข้าสู่กระบวนการ Login ถ้าเป็น Text mode ก็รนั โปรแกรม getty ถ้าเป็น Graphic mode ก็รนั xdm, gdm,

8

kdm ให้ Login ขึ้นอยู่กับว่าใช้ Window Managers ตัวไหน ไฟล์ /etc/rc.d/rc.sysinit ไฟล์ rc.sysinit การรันไฟล์นี้จะเป็นการทำางานของระบบ เช่น set kernel parameter, set เวลา, โหลด keymaps , ใช้งาน swap partition, hostname, ตรวจเชค และเมาท์พาร์ติชันอื่นๆ ฯลฯ ซึ่งจะเป็นทำางานเกี่ยวข้องกับระบบทั้งหมด การ Login การ Login แบบ กราฟิกโหมด (runlevel 5)

รูปที่ 3-3 แสดงการ Login แบบกราฟิก การ Login แบบ Text Mode (runlevel 3) Red Hat Enterprise Linux AS release 4 (Nahant) Kernel 2.6.9­5.EL on an i686 training1 Login: root Password: Last login: Sun Jul 16 04:24:10 from 192.168.1.99 You have new mail. [root@training1~]#

9

Login เข้ามาแล้วจะรีบทู หรือปิดเครื่องอย่างไร บนกราฟิกโหมดคงไม่ต้องพูดถึงนะครับเพราะเห็นกันอยู่แล้วว่าจะรีบูทหรือจะปิดเครื่อง สำาหรับบน text mode มาดูคำาสั่งที่ใช้ในการรีบูท และปิดเครื่องกันนะครับ shutdown -h now ปิดเครื่องทันที shutdown -r now รีบูทเครื่องทันที reboot รีบูทเครื่อง init 6 รีบูทเครื่อง init 0 ปิดเครื่อง poweroff ปิดเครื่อง halt ปิดเครื่อง เลือกใช้กันตามสะดวกนะครับอย่าปิดเครื่องโดยใช้นิ้วปิดสวิทช์เลย อันตรายต่อข้อมูลขอให้ปิดตามขั้นตอน ไฟล์ที่เกี่ยวข้องในบทนี้ /boot/grub/menu.lst หรือ /boot/grub/grub.conf /etc/inittab /etc/rc.d/rc.sysinit /etc/rc.d/rc.local คำาสั่งที่เกี่ยวข้องในบทนี้ init reboot shutdown poweroff halt

บทที่ 4 การเปิดปิด Service

10

service บนลีนุกซ์ มี 2 ประเภท ได้แก่ stand alone service และ xinetd control stand alone service เป็น service ทีอ่ ยู่ได้ดว้ ยตัวเอง ลักษณะสำาคัญของ stand alone service ได้แก่ 1. ทำางานตอนบูท 2. Service เปิดอยู่ตลอดเวลา 3. ไฟล์ start script เก็บอยู่ที่ /etc/init.d การใช้คำาสั่งสำาหรับการ start service ต่างๆ ไม่ว่าจะเป็นลีนุกซ์ Red Hat หรือ Fedora จะใช้คำาสั่ง service เช่น service ชื่อ service {start|stop|restart|reload|status} เช่น service httpd start สำาหรับลีนุกซ์ทั่วไปจะใช้คำาสั่ง /etc/init.d/ชือ่ service {start|stop|restart|force-reload} เช่น /etc/init.d/httpd start สำาหรับคำาสั่งนี้ บนลีนุกซ์ตระกูล Red Hat ก็สามารถ ใช้คำาสั่งนี้ได้เช่นกัน xinetd control เป็น service ทีถ่ ูกควบคุมด้วยโปรแกรม xinetd ลักษณะสำาคัญของ xinetd control service ได้แก่ 1. service ถูกความคุมโดยโปรแกรม xinetd 2. service จะทำางานหรือให้บริการเมื่อมีการร้องขอ 3. ไฟล์ start script เก็บอยู่ที่ /etc/xinit.d สำาหรับการ start service บน Red Hat จะใช้คำาสั่ง chkconfig ชือ่ service on เช่น chkconfig pop3 on หรือจะแก้ไขไฟล์ start script โดยตรงเช่น pop3 { disable = yes socket_type = stream wait = no user = root server = /usr/sbin/ipop3d l og_on_success + = HOST DURATION log_on_failure + = HOST } ถ้าเราต้องการเปิด service ของ pop3 เราให้แก้ไขบรรทัด disable = yes ให้เป็น disable = no service อื่นๆ ก็เช่นกัน

เครื่องมือที่ช่วยในการเปิดปิด service ตอนบูท ลีนุกซ์ตระกูล Red Hat จะมีเครื่องมือช่วยให้ service ต่างๆทำางานตั้งแต่ตอนบูท ดังนี้ 1. chkconfig

รูปที่ 4-1 แสดงการใช้คำาสั่ง chkconfig chkconfig เป็นคำาสั่งแบบ command line การใช้งานง่าย chkconfig –list แสดง service ทั้งหมด chkconfig –add เพิ่ม service เข้าไปในระบบ chkconfig ชื่อ service on | off เปิด-ปิด service 2. ntsysv

รูปที่ 4-2 แสดงโปรแกรม ntsysv

11

12

ntsysv เป็นโปรแกรมแบบ Text User Interface หากต้องการให้ service ที่ต้องการทำางานตั้งแต่ตอนบูทก็ให้ กด spacebar ให้มีเครื่องหมาย * หากไม่ต้องการให้ service นัน้ ๆ ทำางานตอนบูท ก็ กด spacebar อีกครั้งหนึ่งให้เครื่องหมาย * หายไป 3. serviceconf / redhat-config-service / system-config-service

รูปที่ 4-3 แสดงโปรแกรม serviceconf / system-config-service serviceconf / redhat-system-config / system-config-service เป็นโปรแกรมแบบ GUI สามารถรันได้บนกราฟิกโหมดเท่านั้น ข้อเสียของ ntsysv และ serviceconf คือ มันจะมีผลต่อการเปิดปิด service ตอนบูทเฉพาะรัน Level ที่เรา ทำางานอยู่เท่านั้นเช่น เรียกใช้งานโปแกรมใน runlevel 5 แล้วบูทเครื่องเข้ามา runlevel 3 service ที่เปิดหรือปิดเอาไว้ก็จะไม่มีผลเมื่อบูทเข้ามาใน runlevel 3 ไดเรกทอรีที่เกี่ยวข้อง /etc/init.d /etc/xinet.d ไฟล์ที่เกี่ยวข้อง /etc/init.c/* /etc/xinet.d/* คำาสั่งที่เกี่ยวข้อง service chkconfig

13

บทที่ 5

โครงสร้างของไดเรกทอรีของลีนุกซ์ ผู้ใช้งานวินโดว์จะมีความคุ้นเคยกับลักลักษณะโครงสร้างไดเรกทอรี ที่มี Driver C:\ , D:\ และโฟลเดอร์ แต่สำาหรับลีนุกซ์นั้น จะไม่มีไดรฟ์แต่จะมี ไดเรกทอรีเหนือสุดคือ / (รูทไดเรกทอรี) หลังจากที่เราติดตั้งลีนุกซ์เสร็จ ก็จะมีไดเรกทอรีมากมาย ซึ่งเหมือนกับตอนที่เราติดตั้งวินโดว์เสร็จเราจะเห็นโฟลเดอร์ Windows, Programs File ฯลฯ มุมมองแบบไดเรกทอรี

รูปที่ 5-1 แสดงไดเรกทอรีทั้งหมดของลีนุกซ์ มุมมองแบบภาพ หรือ โฟลเดอร์แบบวินโดว์

รูปที่ 5-2 แสดงไดเรกทอรีในมุมมองแบบโฟลเดอร์ในวินโดว์

14

มุมมองโครงสร้างแบบต้นไม้

รูปที่ 5-3 แสดงโครงสร้างไดเรกทอรีแบบแผนภูมิต้นไม้ การเปลี่ยนไปทำางานยังไดเรกทอรีต่างๆด้วยคำาสั่ง cd ที่เขียนเรื่องนี้มาเพราะจะเจอปัญหาความไม่เข้าใจเกี่ยวกับการเปลี่ยนการทำางานไปยังไดเรกทอรีต่างๆ มากสำาหรับลีนุกซ์มือใหม่ คือไม่รู้ว่าต้อง มี / หรือ ไม่มี มาดูต่อครับ สิ่งที่ต้องจำาและทำาความเข้าใจ รูทไดเรกทอรี คือ / เป็นไดเรกทอรี่เหนือสุด เทียบกับวินโดว์ก็ Drive C:\ โฮมไดเรกทอรีของ user root คือ /root บ้านของคนชื่อ root เป็นคนที่มีสิทธิสูงสุดในระบบอย่าหลง / (รูทไดเรกทอรี) กับ /root (บ้านของคนชื่อ root) ไดเรกทอรีที่อยู่ถัดจากรูทไดเรกทอรี คือ /boot, /etc, /initrd, /misc, /opt, /root, /sys, /usr, /bin, /dev, /home, /lib, /media, /mnt, /proc, /sbin, /tmp, /var การใช้คำาสั่ง cd เพื่อเปลี่ยนไดเรกทอรี ถ้าต้องการเปลี่ยนไดเรกทอรีไปทำางานที่ติดกับ / ต้องมี / นำาหน้า เช่น cd /boot, cd /etc , cd /usr, cd /mnt กรณีที่ไดเรกทอรี ที่อยูใ่ นลำาดับขั้นถัดไปจากที่เราทำางานอยู่ ไม่ต้องใส่เครื่องหมาย / เช่น ทำางานอยู่ที่ /usr ต้องการเข้าไปทำางานที่ /usr/local/pgsql ก็สามารถใช้คำาสั่ง cd local/pgsql ได้เลย ข้อควรจำา ถ้าเปลี่ยน ไดเรกทอรีไปทำางานที่ไดเรกทอรีที่ไม่ติดกับ / และเป็นไดเรกทอรีถัดไปก็ไม่ต้องใส่เครื่องหมาย /

15

ตัวอย่างการใช้คำาสั่ง cd เพื่อเปลี่ยนการทำางานไปยังไดเรกทอรีต่างๆ ทำางานอยู่ที่ /root เปลี่ยนไปทำางานที่ /usr/local/pgsql ใช้คำาสั่ง cd /usr/local/pgsql ทำางานอยู่ที่ /usr/local/pgsql เปลี่ยนไปทำางานที่ /var/www ใช้คำาสั่ง cd /var/www ทำางานอยู่ที่ / เปลี่ยนไปทำางานที่ /usr/local/pgsql ใช้คำาสั่ง cd usr/local/pgsql ` ทำางานอยู่ที่ / เปลี่ยนไปทำางานที่ /etc ใช้คำาสั่ง cd etc ทำางานอยู่ที่ /root เปลี่ยนไปทำางานที่ /etc/httpd/ ใช้คำาสั่ง cd /etc/httpd ไม่สนใจว่าทำางานอยู่ที่ไหน ต้องการเปลียนไปไปทำางาน ที่ /var/www/html ใช้คำาสั่ง cd /var/www/html คำาสั่ง pwd เป็นคำาสั่งที่แสดงชื่อของไดเรกทอรีปัจจุบันที่เราทำางานอยู่ตัวอย่างดังรูปที่ 5-4

รูปที่ 5-4 แสดงการใช้คำาสั่ง pwd คำาสั่ง pwd จะช่วยให้เรารู้ว่าเราทำางานอยู่ที่ตำาแหน่งไดเรกทอรีไหน จะได้ไม่หลงไดเรกทอรี คำาสั่งที่เกี่ยวข้องในบทนี้ cd pwd

บทที่ 6 การใช้งาน Vi

16

การใช้งานลีนุกซ์หนีไม่พ้นที่จะต้องใช้งาน Text Editor ตัวใดตัวหนึ่ง เพราะ ลีนุกซ์มีความจำาเป็นต้องแก้ คอนฟิกไฟล์ ทีเป็น Text ไฟล์ โปรแกรม Text Editor มีหลายตัว เช่น pico, nano, mc, Vi ฯลฯ แต่ในที่นี้จะพูดถึง Vi เพราะเป็น Text Editor ที่มาคู่กับ Unix มานาน และได้รับความนิยมมากตัวหนึ่ง Vi (ออกเสียงว่า "veeeye")เป็นคำาเรียกสั้นๆ ของ Visual editor

รูปที่ 6-1 แสดงโปรแกรม Vi เริ่มใช้งาน vi เราสามารถเรียกใช้งาน Vi โดยพิมพ์คำาสั่ง vi ตามด้วยชื่อไฟล์ ชื่อไฟล์นี้เป็นไปได้ทั้งไฟล์ที่มีอยู่แล้ว และชื่อไฟล์ใหม่ ตัวอย่าง # vi /etc/samba/smb.conf # vi newfilename.txt vi Mode

17

vi มี 2 โหมด ● command mode ใช้สำาหรับรับคำาสั่ง ของผู้ใช้ เช่น จะเข้าสู่ insert mode บันทึกไฟล์ ออกจากโปรแกรม ฯลฯ ● insert mode ใช้สำาหรับแก้ไขไฟล์ เช่น พิมพ์ข้อมูลเพิ่ม ลบคำา เมื่อเราเปิดโปรแกรม vi ขึน้ มาโปรแกรมจะเข้าสู่ command mode เราจะพิมพ์ข้อความลงไปไม่ได้ จนกว่าเราจะเข้าสู่ insert mode โดยการกดปุ่ม i (หรืออื่นๆ) เมื่อเราทำางานใน insert mode เราสามารถแก้ไขข้อมูลในไฟล์ได้ ถ้าเราต้องการบันทึกไฟล์ หรือออกจากการใช้งาน vi ก็ต้องกลับเข้าสู่ command mode โดยการกดปุ่ม Esc เข้าสู่ insert mode เพื่อแก้ไขข้อความ a เพิ่มข้อความที่อยู่ข้างหลัง A เพิ่มข้อความต่อท้ายบรรทัดปัจจุบัน i แทรกข้อความที่อยู่หน้าเคอร์เซอร์ I แทรกข้อความที่ต้นบรรทัดปัจจุบัน o เพิ่มบรรทัดว่างๆใหม่อีกหนึ่งบรรทัด ถัดจากบรรทัดที่เคอร์เซอร์อยู่ O เพิ่มบรรทัดว่างๆใหม่อีกหนึ่งบรรทัด เหนือจากบรรทัดที่เคอร์เซอร์อยู่ การบันทึกไฟล์และออกจากโปรแกรม (command mode) ถ้าทำางานอยู่ใน insert mode เข้าสู่ command mode โดยการกด Esc แล้วค่อยพิมพ์คำาสั่ง ZZ ออกจากโปรแกรมบันทึกไฟล์ :q! ออกจากโปรแกรมไม่บันทึกไฟล์ :wq ออกจากโปรแกรมบันทึกไฟล์ การเลื่อนเคอร์เซอร์ไปยังตำาแหน่งต่างๆ ใน 1 จอภาพ h เลื่อนเคอร์เซอร์ไปทางซ้าย 1 ตัวอักษร j เลื่อนเคอร์เซอร์ไปยังบรรทัดล่าง 1 บรรทัด k เลื่อนเคอร์เซอร์ไปยังบรรทัดบน 1 บรรทัด l เลื่อนเคอร์เซอร์ไปทางขวา 1 ตัวอักษร เลื่อนเคอร์เซอร์ทีละคำา ประโยค ย่อหน้า w เลื่อนเคอร์เซอร์ไปยังตัวอักษรแรกของคำาที่อยู่ถัดไป e เลื่อนเคอร์เซอร์ไปยังตัวอักษรสุดท้ายของคำาที่อยู่ถัดไป b เลื่อนเคอร์เซอร์ไปยังตำาแหน่งแรกของคำาที่อยู่ก่อนหน้า

18

การเลื่อนจอภาพ ^F เลื่อนจอภาพเพื่อดูข้อมูลที่อยู่ในหน้าถัดไป ^B เลื่อนจอภาพเพื่อดูข้อมูลที่อยู่ก่อน 1 หน้า ^D เลื่อนจอภาพไปอีกครึ่งจอภาพ ^U เลื่อนจอภาพย้อนกลับไปอีกครึ่งจอภาพ ^R หรือ ^L ให้แสดงจอภาพปัจจุบันอีกครั้งหนึ่ง การลบ

dd dw de db d^ d$

ลบเฉพาะบรรทัดที่เคอร์เซอร์อยู่ ลบคำาตั้งแต่ตัวอักษรที่เคอร์เซอร์อยู่ไปจนถึงตัวอักษรแรกของคำาต่อไป ลบคำาตั้งแต่ตัวอักษรที่เคอร์เซอร์อยู่ไปจนถึงตัวอักษรสุดท้ายของคำาปัจจุบัน ลบคำาตั้งแต่ตัวอักษรที่อยู่หน้าเคอร์เซอร์ไปถึงอักษรแรกของคำาปัจจุบัน ลบคำาตั้งแต่ตัวอักษรที่อยู่หน้าเคอร์เซอร์ไปจนถึงตัวอักษรแรกของบรรทัดที่ไม่ใช่ space ลบคำาตั้งแต่ตัวอักษรที่เคอร์เซอร์อยู่ไปจนถึงตัวสุดท้ายของบรรทัด

การโยกย้ายและการทำาสำาเนา ym นำาข้อความที่ต้องการเก็บลงใน buffer (m=จำานวนบรรทัด) yy นำาข้อความทั้งบรรทัด ที่เคอร์เซอร์อยู่ไปเก็บใน buffer p นำาข้อความใน buffer มาวางหลังเคอร์เซอร์ การยกเลิกคำาสั่ง u undo . redo การค้นหาคำา /Test /This is test /^Test หาคำาว่า Test /Test$ หาคำาว่า Test /^$

หาคำาว่า Test หาวลี This is test หาคำาว่า Test ที่ปรากฏที่ต้นบรรทัด หาคำาว่า Test ที่ปรากฏที่ท้ายบรรทัด หาบรรทัดที่เป็นบรรทัดว่างๆ

บทที่ 7 การใช้คำาสั่ง RPM (RPM Package Manager)

19

โปรแกรมบนลีนุกซ์ส่วนใหญ่จะเขียนด้วยภาษา C ในการติดตั้งต้องเอา source code ของโปรแกรมมา compile ด้วย 3 คำาสั่งหลัก ./configure, make, make install ซึ่งเป็นเรื่องยาก และไม่สะดวกสำาหรับผู้ใช้งานทั่วไป เพราะฉะนัน้ ลีนุกซ์แต่ละค่าย ก็พยายามที่จะอำานวยความสะดวกในการติดตั้งโปรแกรมให้กับผู้ใช้งาน ก็จะมีวิธีการ และเทคโนโลยีที่ต่างๆกันไป เช่น ลีนุกซ์ Debain ubuntu ใช้ apt-get, Red Hat ใช้ rpm (RPM Package Manager) รูปแบบของไฟล์ RPM name version release architecture noarch

ชื่อ Package เวอร์ชัน ปรับปรุงครั้งที่ i386, i586, athlon : Intel x86 Compatible Alpha : Digital Alpha/AXP ia64 : IA-64 (Itanium) s300: S/390 architecture-independency code

ตัวอย่าง postgresql-7.3.2-3.i386.rpm ชื่อ package คือ postgresql version คือ 7.3.2 release คือ 3 architecture คือ i386 setup-2.5.25-1.noarch.rpm noarch คือ ไม่ขนึ้ กับสถาปัตถยกรรม CPU ติดตั้งและลบ package (โปรแกรม) nstall: rpm -i ติดตั้ง Upgrade: rpm -U อัพเกรด Freshen: rpm -F อัพเกรดถ้ามีอยู่ / ถ้าไม่มีไม่ทำาอะไร Erase: rpm -e ลบ Output option: -v, -h แสดงเครื่องหมาย # ขณะทำางาน

20

rpm Query รูปแบบ rpm -q what_package what_information • Package Options; • -a • package_name • -f filename • -p package_file_name • Information Options: • Default: package name • -i: general information • -l: file list ตัวอย่างการใช้คำาสั่ง rpm query rpm -qa มี Package อะไรติดตั้งอยู่บ้าง rpm -qi postgresql ดูข้อมูลของ Package rpm -ql postgresql ดูว่ามีไฟล์อะไรอยู่บ้างใน Package postgresql rpm -qf /usr/bin/psql ไฟล์นี้อยู่ใน Package อะไร rpm -qlp postgresql-7.3.2-3.i386.rpm ไฟล์นี้ติดตั้งแล้วไปมีไฟล์อะไรบ้างไปติดตั้งอยู่ที่ไหน rpm -qip zip-2.3-16.i386.rpm ดูข้อมูลของไฟล์นี้ ตัวอย่างผลของการใช้คำาสั่ง rpm quey [root@localhost ]# rpm -ql postgresql /usr/bin/clusterdb /usr/bin/createdb /usr/bin/createlang /usr/bin/createuser /usr/bin/dropdb /usr/bin/droplang ... [root@localhost]# rpm -qi postgresql Name : postgresql Relocations: (not relocateable) Version : 7.3.2 Vendor: Red Hat, Inc. Release : 3 Build Date: อา. 16 ก.พ. 2546, 10:21:48 Install Date: ส. 3 พ.ค. 2546, 06:39:59 Build Host: porky.devel.redhat.com

21

Group : Applications/Databases Source RPM: postgresql-7.3.2-3.src.rpm Size : 6481748 License: BSD Signature : DSA/SHA1, จ. 24 ก.พ. 2546, 12:43:22, Key ID 219180cddb42a60e Packager : Red Hat, Inc. URL : http://www.postgresql.org/ Summary : PostgreSQL client programs and libraries. Description : PostgreSQL is an advanced Object-Relational database management system (DBMS) that supports almost all SQL constructs, including ...

คำาสั่งที่เกี่ยวข้องในบทนี้ rpm

บทที่ 8 การบริหารจัดการบัญชีรายชื่อผู้ใช้ระบบ User / Group Accounts อย่างที่ได้กล่าวไปแล้วว่าลีนุกซ์มีการทำางานแบบผู้ใช้งานคราวละหลายคน (multi user) การจัดการบัญชีรายชื่อมีความจำาเป็นเพื่อง่ายและสะดวกในการดูแลรักษาเซิฟเวอร์ ลีนุกซ์ Red Hat ถ้าเราเพิ่ม user เข้าไปโดยใช้คำาสั่ง useradd ตามด้วยชื่อ user โดยไม่มี option -g ระบบก็จะทำาการเพิ่มกลุ่มให้อีก 1 กลุ่มตามชื่อ user นัน้ ซึ่งเรียกว่า Private Group คำาสั่งที่เกี่ยวข้องกับการจัดการ User ได้แก่ groupadd, groupdel, useradd, userdel, usermod หากเราไม่ต้องการ Private Group ก็สามารถเพิ่มกลุ่มเข้ามาเองโดยใช้คำาสั่ง groupadd คำาสั่ง groupadd เพิ่มกลุ่มใหม่ groupadd option ชื่อ group ที่ต้องการเพิ่ม -g gid (group id) ตัวอย่าง #เพิ่มกลุ่มชื่อ manager โดยมีหมายเลข gid = 1000 #เพิ่มกลุ่มชื่อ web #เพิ่มกลุ่มชื่อ hr #เพิ่มกลุ่มชื่อ hr

groupadd ­g 1000 manager groupadd web groupadd hr groupadd sale

คำาสั่ง groupdel ลบกลุ่มออก groupdel ชื่อgroupที่ต้องการลบ ตัวอย่าง groupdel manager คำาสั่ง useradd เพิม่ ผู้ใช้งานใหม่ useradd option user -d ระบุโฮมไดเรคตอรี -g ระบุ group -m สร้างโฮมไดเรคทอรีให้ด้วย -c ระบุชื่อของ user -u ระบุ user id

22

23

ตัวอย่าง หลังจากที่เราเพิ่มกลุ่มเรียบร้อยแล้วเราก็สามารถเพิ่ม user ได้เลย

useradd ­g manager ­c “Mr. Somchai” somchai

#เพิ่มผู้ใช้งาน ชื่อ somchai อยุ่ในกลุ่ม manager มีชื่อว่า Mr. Somchai

useradd ­g web ­c ”Miss Manee” manee

#เพิ่มผู้ใช้งาน ชื่อ somchai อยุ่ในกลุ่ม manager มีชื่อว่า Mr. Somchai useradd ­g web ­c “Mr. Piti” piti #เพิ่มผู้ใช้งาน ชื่อ somchai อยุ่ในกลุ่ม manager มีชื่อว่า Mr. Somchai useradd ­g hr ­c “Miss Chuchai” chuchai #เพิ่มผู้ใช้งาน ชื่อ somchai อยุ่ในกลุ่ม manager มีชื่อว่า Mr. Somchai useradd ­g sale ­c “Mr. Mana” mana #เพิ่มผู้ใช้งาน ชื่อ somchai อยุ่ในกลุ่ม manager มีชื่อว่า Mr. Somchai passwd somchai   passwd manee passwd piti passwd chuchai passwd mana

# Set password ให้กับ user somchai # Set password ให้กับ user manee # Set password ให้กับ user piti # Set password ให้กับ user chuchai # Set password ให้กับ user mana

คำาสั่ง userdel ลบผู้ใช้งานออก userdel option userที่ต้องการลบ -r ลบไฟล์ของ user ในโฮม และใน /var/spool/mail การเปลี่ยนแปลงข้อมูลของผู้ใช้งานด้วย usermod usermod option user ที่ต้องการเปลี่ยนแปลง -c เปลี่ยน comment หรือชื่อของ user -d เปลี่ยนโฮมไดเรคทอรีของ user -e ตั้งวันหมดอายุให้กับ user -g เปลี่ยนกลุ่มของ user -G group1 [ ,group2,... , [groupN] เพิ่มกลุ่มให้กับ user ให้ user มีกลุ่มหลายกลุ่มได้ -u uid เปลี่ยน uid ของ user -L ล๊อคไม่ให้ user เข้าใช้งาน -U ยกเลิกการล๊อค

24

ตัวอย่างการจัดการบัญชีรายชื่อ [root@training1 ~]# useradd ­g manager ­c "Mr. Somchai" somchai [root@training1 ~]# useradd ­g web ­c "Miss Manee" manee [root@training1 ~]# useradd ­g web ­c "Mr. Piti" piti [root@training1 ~]# useradd ­g hr ­c "Miss Chuchai" chuchai [root@training1 ~]# useradd ­g sale ­c "Mr. Mana" mana [root@training1 ~]# id piti uid=502(piti) gid=501(web) groups=501(web) [root@training1 ~]# finger piti Login: piti                             Name: Mr. Piti Directory: /home/piti                   Shell: /bin/bash Never logged in. No mail. No Plan. [root@training1 ~]# usermod ­g hr ­c “Piti”  piti [root@training1 ~]# id piti uid=502(piti) gid=502(hr) groups=502(hr) [root@training1 ~]# finger piti Login: piti                             Name: Piti Directory: /home/piti                   Shell: /bin/bash Never logged in. No mail. No Plan. [root@training1 ~]# [root@training1 ~]# passwd somchai Changing password for user somchai. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. [root@training1 ~]# usermod ­g hr ­c “Piti Yindee” piti [root@training1 ~]# usermod ­L piti [root@training1 ~]#

คำาสั่งที่เกี่ยวข้องในบทนี้ groupadd groupmod groupdel useradd usermod userdel passwd id finger

บทที่ 9 Permission ของไฟล์ และ Directory

25

เนื่องจากลีนุกซ์มีระบบการทำางานแบบผู้ใช้งานคราวละหลายคน เพราะฉะนัน้ จำาเป็นต้องมีการจำากัดสิทธิของการเข้าถึงไฟล์ และไดเรกทอรี ในระบบไฟล์ของลีนุกซ์จะแบ่งกลุ่มของการเข้าถึงไฟล์ออกเป็น 3 กลุ่ม คือ 1. คนที่เป็นเจ้าของไฟล์ 2. คนที่อยู่ในกลุ่มเดียวกัน 3. คนที่ไม่ใช่เจ้าของไฟล์ และไม่ได้อยู่กลุ่มเดียวกัน เมื่อเราใช้คำาสั่ง ls -l ก็จะเห็นรายละเอียดของไฟล์และไดเรกทอรี drwxr­xr­x drwxr­xr­x ­rw­r­­r­­

3 8 1 

root root    4096 2006­07­03 07:20  Desktop root root    4096 2006­07­01 08:33  MyDownload root root    4529 2006­07­03 17:09  test.php

ในแต่ละกลุ่มจะมีการกำาหนดสิทธิได้ 3 แบบ ตัวอักษร r มาจาก Read หมายถึง อ่าน ตัวอักษร w มาจาก Write หมายถึง เขียน ตัวอักษร x มาจาก Execute หมายถึง ประมวลผล สิทธิ

เมื่อใช้กบั ไฟล์

เมื่อใช้กบั ไดเร็คทอรี

read

ดูเนื้อหา

writer

เปลี่ยนแปลง และแก้ไขเนื้อหาในไฟล์ สร้างหรือลบไฟล์ในไดเร็คทอรี

execute

สั่ง execute (ประมวลผลได้)

ตัวอย่าง ­­­ : ไม่มีสิทธิอะไรเลย (เลขที่ใช้คือ 0) ­­x : ประมวลผลได้อย่างเดียว (เลขที่ใช้คือ 1) r­­ : อ่านได้อย่างเดียว (เลขทีใ่ ช้คือ 4) rw­ : อ่าน และเขียนได้ (เลขทีใ่ ช้คือ 6) r­x : อ่าน และประมวลผลได้ (เลขทีใ่ ช้คือ 5) rwx : อ่าน เขียน และประมวลผลได้ (เลขที่ใช้คือ 7)

ดูรายชื่อไฟล์ในไดเร็คทอรี เปลี่ยนไดเร็คทอรี, ค้นหา หรือสำาเนาจากไฟล์ในไดเร็คทอรีนั้น

26

รูปที่ 8-1 แสดงค่าของการกำาหนดสิทธิ ความหมายของ rwxrwxrwx จะห็นว่ามีอักษร 9 ตัว (ความจริง 10 ตัว) ตัวแรก ไม่นับเป็นตัวบอกชนิดของไฟล์ - หมายถึงไฟล์ d หมายถึง ไดเรกทอรี l หมายถึงลิงค์ไฟล์ (ภาษาวินไดว์ เรียกว่า shortcut) 3 ตัวแรกหมายถึง เจ้าของ 3 ตัวที่สองหมายถึง คนในกลุ่มเดียวกัน 3 ตัวที่สามหมายถึง คนอืน่ ที่ไม่ใช่เจ้าของและไม่ใช่คนในกลุ่มเดียวกัน ตัวอย่าง ­rwx­­­­­­ : เจ้าของเท่านั้นที่มีสิทธิทุกอย่างคนในกลุ่มและคนอื่นไม่มีสิทธิ (เลขทีใ่ ช้คือ 700) ­rwxrwx­­­ : เจ้าของ และสมาชิกกลุ่มเดียวกันมีสิทธิทุกอย่างคนอื่นไม่มีสิทธิ (เลขที่ใช้คือ 770) ­rw­rw­rw­ : เจ้าของ และสมาชิกกลุ่มเดียวกันและคนอื่นอ่านและเขียนได้ (เลขที่ใช้คือ 666) ­rwxr­xr­x : เจ้าของทำาได้หมด ส่วนกลุ่มและคนอืน ่ อ่านและประมวลผลได้ (เลขที่ใช้คือ 755) ­r­­r­­r­­ : ทุกคนอ่านได้อย่างเดียว (เลขทีใ่ ช้คือ 444)

คำาสั่งที่ใช้ในการเปลี่นสิทธิของไฟล์และไดเรกทอรี chmod เปลี่ยนโหมด chown เปลียนเจ้าของ chgrp เปลี่ยนกลุ่ม

27

ตัวอย่าง การใช้งานคำาสั่ง chmod root@sothorn:~# touch test.html root@sothorn:~# ls ­l test.html ­rw­r­­r­­ 1 root root 0 2006­07­12 11:03 test.html root@sothorn:~# chmod 755 test.php root@sothorn:~# ls ­l test.html ­rwxr­xr­x 1 root root 0 2006­07­12 11:03 test.html root@sothorn:~# chmod 666 test.html root@sothorn:~# ls ­l test.html ­rw­rw­rw­ 1 root root 0 2006­07­12 11:03 test.html root@sothorn:~# ls ­l test.html ­rw­rw­rw­ 1 root root 0 2006­07­12 11:03 test.html root@sothorn:~# chmod 700 test.html root@sothorn:~# ls ­l test.html ­rwx­­­­­­ 1 root root 0 2006­07­12 11:03 test.html root@sothorn:~#

ปัญหาที่เกิดขึ้นที่เราทำางานกับสิทธิที่ไม่ถูกต้อง เช่น ไบนารีไฟล์ จะไม่สามารถ execute ได้ root@sothorn:/usr/local/firefox# chmod 660 firefox root@sothorn:/usr/local/firefox# ./firefox bash: ./firefox: Permission denied root@sothorn:/usr/local/firefox# chmod 755 firefox root@sothorn:/usr/local/firefox# ./firefox

ไฟล์ .html ไม่สามารถ execute ได้ เมื่อเรียกผ่าน browser จะเกิด error ดังภาพ

รูปที่ 8-2 แสดงข้อความ error เมื่อ browser เรียกไฟล์ที่ไม่สามารถ execute ได้

28

ตัวอย่าง การใช้คำาสั่ง chown และ chgrp root@sothorn:~# ls ­l test.sql ­rwxr­xr­x 1 root root 0 2006­07­12 11:03 test.sql root@sothorn:~# chgrp postgres test.sql root@sothorn:~# ls ­l test.sql ­rwxr­xr­x 1 root postgres 0 2006­07­12 11:03 test.sql root@sothorn:~# chown postgres test.sql root@sothorn:~# ls ­l test.sql ­rwxr­xr­x 1 postgres postgres 0 2006­07­12 11:03 test.sql root@sothorn:~# root@sothorn:~# ls ­l test.sql ­rwxr­xr­x 1 root root 0 2006­07­12 11:03 test.sql root@sothorn:~# chown postgres test.sql root@sothorn:~# ls ­l test.sql ­rwxr­xr­x 1 postgres root 0 2006­07­12 11:03 test.sql root@sothorn:~# chown root test.sql root@sothorn:~# ls ­l test.sql ­rwxr­xr­x 1 root root 0 2006­07­12 11:03 test.sql root@sothorn:~# chown postgres.postgres test.sql root@sothorn:~# ls ­l test.sql ­rwxr­xr­x 1 postgres postgres 0 2006­07­12 11:03 test.sql

คำาสั่งที่เกี่ยวข้องในบทนี้ chmod chgrp chown

บทที่ 10 การใช้งาน System Config ต่าง ๆ ลีนุกซ์ Red Hat มีเครื่องมือในการช่วยปรับแก้ config ต่างๆของระบบ เช่น การเปลี่ยน IP การปรับวันที่ เวลา ฯลฯ เราสามารถทดลองดูได้ว่ามีโปรแกรมอะไรบ้าง โดยการพิมพ์ system- แล้วกด Tab สองครั้งก็จะเห็นดังภาพ สำาหรับ Red Hat ใน เวอร์ชันตำ่ากว่า Enterprise 4 หรือ FC4 ก็จะขึ้นต้นด้วย redhat[root@training1 ~]# system­ system­cdinstall­helper          system­config­packages system­config­authentication     system­config­printer system­config­date               system­config­printer­gui system­config­display            system­config­printer­tui system­config­httpd              system­config­rootpassword system­config­keyboard           system­config­samba system­config­language           system­config­securitylevel system­config­lvm                system­config­securitylevel­tui system­config­mouse              system­config­services system­config­network            system­config­soundcard system­config­network­cmd        system­config­time system­config­network­druid      system­config­users system­config­network­gui        system­control­network system­config­network­tui        system­install­packages system­config­nfs                system­logviewer

โปรแกรมต่างๆ เหล่านี้จะอยู่ในเมนูอยู่แล้ว โปรแกรมจะช่วยเราทำางานใน Graphic Mode เท่านั้น

รูปที่ 10- 1 แสดงโปรแกรม System Settings

29

30

ติดตั้งโปรแกรม system-config ถ้าในขั้นตอนติดตั้งลีนุกซ์ไม่ได้เลือก Package Server Configuration Tools และ Administration Tools ก็ไม่สามารถใช้งานโปแกรม system-config ต่างๆได้

รูปที่ 10-2 การติดตั้งโปรแกรม Server Configuration Tools

รูปที่ 10-3 การติดตั้งโปรแกรม Administration Tools

31

system-config-network / neat ช่วยในการเปลี่ยน IP

รูปที่ 10-4 แสดงโปรแกรม system-config-network system-config-display ช่วยในการเปลี่ยนความละเอียดของหน้าจอ

รูปที่ 10-5 แสดงโปรแกรม system-config-display

32

ส่วนการทำางานใน Text Mode ให้ใช้คำาสั่ง setup

รูปที่ 10-6 รูปแสดงการใช้คำาสั่ง setup

รูปที่ 10-7 แสดงการใช้คำาสั่ง setup เลือกเมนู Network configuration

การเปลี่ยนแปลงค่า Network TCP/IP โดยการแก้ไฟล์คอนฟิก

33

ถ้าหากเราต้องการเปลี่ยน IP ของเครื่องโดยที่เราไม่ใช้เครื่องมือช่วยก็สามารถแก้ไฟล์ได้สะดวกเวลาที่เราทำางานบน Text Mode การเปลี่ยน IP Address ไดเรกทอรีที่เกี่ยวกับ Network ของ Red Hat อยู่ที่ /etc/sysconfig/network­scripts/ [root@training1 ~]# cd /etc/sysconfig/network­scripts/ [root@training1 network­scripts]# ls ifcfg­eth0      ifdown­ipv6  ifup          ifup­isdn    ifup­sit ifcfg­lo        ifdown­isdn  ifup­aliases  ifup­plip    ifup­sl ifdown          ifdown­post  ifup­ippp     ifup­plusb   ifup­wireless ifdown­aliases  ifdown­ppp   ifup­ipsec    ifup­post    init.ipv6­global ifdown­ippp     ifdown­sit   ifup­ipv6     ifup­ppp     network­functions ifdown­ipsec    ifdown­sl    ifup­ipx      ifup­routes  network­functions­ipv6 [root@training1 network­scripts]#

ไฟล์ที่เราต้องแก้คือ ifcfg-eth0 DEVICE=eth0 BOOTPROTO=static BROADCAST=192.168.1.255 HWADDR=00:10:B5:CC:98:36 IPADDR=192.168.1.5 NETMASK=255.255.255.0 NETWORK=192.168.1.0 ONBOOT=yes TYPE=Ethernet

ถ้าหากต้องการเปลี่ยน IP ก็สามารถทำาได้โดยการแก้ไขบรรทัด IPADDR หรือบรรทัดอื่นๆ ตามต้องการ แก้เสร็จให้ใช้คำาสั่ง service network restart หรือ /etc/init.d/network restart  แค่นี้เปลี่ยน IP ได้แล้วครับ การเปลี่ยน Name เซิร์ฟเวอร์ Name เซิร์ฟเวอร์ สามารถเปลี่ยนได้ที่

/etc/resolv.conf

nameserver 203.155.33.1

หมายเลข IP ของเนมเซิร์ฟเวอร์สามารถเปลี่ยนได้ตาม ISP ที่ทา่ นใช้บริการอยู่

34

การแก้ปัญหากรณีที่ใช้ system-comfig-display แล้วยังเข้า X Window ไม่ได้ กรณีที่ติดตั้งลีนุกซ์ใช้งานอยู่แล้วเปลี่ยนจอทำาให้เข้า X Window ไม่ได้ ให้แก้ปัญหาโดยการบูทเข้า runlevel 3 แล้วใช้คำาสั่ง system-config-display แล้วปรับแก้ค่าต่างๆ แล้วพิมพ์คำาสั่ง startx เพื่อเข้าสู่ X Window ถ้าไม่สามารถเข้า X Window ได้ ก็ให้แก้ไขไฟล์ /etc/X11/xorg.conf ถ้าเป็นลีนุกซ์เวอร์ชันเก่า /etc/X11/XF86Config Section "Screen"         Identifier "Screen0"         Device     "Videocard0"         Monitor    "Monitor0"         DefaultDepth     24         SubSection "Display"                 Viewport   0 0                 Depth     16                 Modes    "800x600" "640x480"         EndSubSection         SubSection "Display"                 Viewport   0 0                 Depth     24                 Modes    "1024x768" "800x600" "640x480"         EndSubSection EndSection

ลดขนาด Resolution ของ หน้าจอลงมาโดยการลบ "1024x768" ออก Section "Screen"         Identifier "Screen0"         Device     "Videocard0"         Monitor    "Monitor0"         DefaultDepth     24         SubSection "Display"                 Viewport   0 0                 Depth     16                 Modes    "800x600" "640x480"         EndSubSection         SubSection "Display"                 Viewport   0 0                 Depth     24                 Modes    "800x600" "640x480"         EndSubSection EndSection

หรือ ให้ปรับลดค่า

HorizSync  VertRefresh ให้ลดลงจากเดิม

35

Section "Monitor"         Identifier   "Monitor0"         VendorName   "Monitor Vendor"         ModelName    "LCD Panel 1024x768"         HorizSync    31.5 ­ 48.5         VertRefresh  40.0 ­ 70.0         Option      "dpms" EndSection

คำาสั่งที่เกี่ยวข้องในบทนี้ neat setup system-config-display system-config-network system-config-packages system-config-*

บทที่ 11 การ mount ไฟล์ system อื่นๆ

36

การใช้งานบนวินโดว์เวลาเราต้องการเอาอุปกรณ์บันทึกข้อมูลอื่นใส่เข้าไปวินโดว์ก็จะรู้จัก และแสดงไดรว์ให้เห็นและสามารถใช้งานได้เลย บนลีนุกซ์เวอร์ชันใหม่ๆ ก็มีความสามารถแบบนั้นแล้วเช่นกัน แต่ก็ควรรู้เอาไว้หากลีนุกซ์ไม่ทำางานให้อัตโนมัติจะ mount อย่างไร mount point หรือ ไดเรกทอรีทตี่ ้องการ mount mount point คือ ไดเรกทอรีที่ต้องการเอาไฟล์บนอุปกรณ์ที่จะเมาท์มาแสดง ไดเรกทอรีที่นิยมสำาหรับการ เมาท์ คือ /mnt เช่น /mnt/floppy , /mnt/cdrom, แต่ในปัจจุบันในลีนุกซ์เวอร์ชันใหม่ๆ จะนิยมเอา mount point ไปไว้ที่ /media เช่น /media/cdrom, /media/hda1 ชือ่ อุปกรณ์ที่จะ mount /dev/cdrom เป็น CD/DVD Drive /dev/fd0 เป็น Flopy Disk /dev/hda1 เป็น ฮาร์ดดิสก์ Primary Master IDE พาร์ติชนั ที่ 1 /dev/sda1 เป็น ฮาร์ดดิสก์ SCSI พาร์ติชนั ที่ 1 /dev/sda เป็น อุปกรณ์พวก Thumb drive USB ถ้าฮาร์ดดิสก์ เป็น /dev/sda อุปกรณ์พวกนี้ ก็จะเป็น /dev/hdb จะมีหมายเลขพาร์ติชันหรือไม่ขึ้นกับอุปกรณ์นั้นๆ ต้องลองเช่น บางอัน mount /dev/sda บางอันก็ mount /dev/sda1 การใช้คำาสั่ง mount mount options device | dir หรือ mount options device dir ตัวอย่าง mount -t vfat /dev/hda1 /mnt/hda1 mount /dev/fd0 /mnt/fd0 mount /dev/cdrom /mnt/cdrom mount /dev/sda /mnt/thumb mount /dev/cdrom mount /mnt/cdrom การ mount แบบย่อ mount options device | dir เช่น mount /mnt/cdrom การที่จะใช้คำาสั่งแบบนี้ได้ จะต้องมีข้อมูลของอุปกรณ์ หรือ พาร์ติชนั อยู่ในไฟล์ /etc/fstab ก่อน ก่อนที่จะ mount directory /mnt/fd0, /mnt/cdrom, /mnt/thumb จะเป็นไดเรกทอรีเปล่าๆ เมื่อ mount ได้สำาเร็จในไดเรกทอรีเหล่านั้นก็จะมีไฟล์ต่างที่อยู่ซึ่งเป็นไฟล์ในอุปกรณ์ที่ mount ขึ้นมานั่นเอง

37

ยกเลิกการเมาท์ เมื่อเมาท์ได้สำาเร็จ จะต้องยกเลิกการเมาท์ การยกเลิกการเมาท์ ใช้คำาสั่ง umount เช่น CD-ROM จะเอาแผ่น CD ออกไม่ได้ถ้าไม่ยกเลิกการเมาท์ หรืออาจทำาความเสียหายให้กับอุปกรณ์ประเภท USB ได้ การใช้งาน umount umount option dir | device ตัวอย่างการยกเลิกการเมาท์ด้วยคำาสั่ง umount umount /mnt/fd0 umount /mnt/cdrom umount /mn/thumb

คำาสั่งที่เกี่ยวข้องในบทนี้ mount umount

บทที่ 12 การใช้โปรแกรมบีบอัดไฟล์เพื่อ Backup ข้อมูล

คำาสั่ง tar (Tape Archiver) คำาสั่ง tar เป็นคำาสั่งที่ใช้สำารองไฟล์ลง Tape Backup แต่ยังใช้สำาหรับบีบอัดไฟล์หรือไดเรกทอรีให้มีขนาดเล็กลง ให้รวมเป็น .tar ไฟล์เดียว เมื่อระบุออปชัน -z ก็จะบีบอัดด้วยโปรแกรม gzip อีกครั้งหนึ่ง ซึ่งจะมีนามสกุล .tar.gz รูปแบบการใช้คำาสั่ง tar ออปชัน ชื่อไฟล์ที่บีบอัด ไฟล์หรือไดเรกทอรีที่ต้องการบีบอัด ออปชันของ tar c สร้าง archive ไฟล์ x กู้ข้อมูลจาก archive ไฟล์ v แสดงรายละเอียดของการ tar z บีบอัดด้วย gzip -f file กำาหนดชื่อของ archive ไฟล์ ซึ่งจะเป็นไฟล์ธรรมดา หรือไฟล์อุปกรณ์ก็ได้ ตัวอย่าง การบีบอัดไฟล์ด้วย tar และ gzip [root@training1 backup]# tar cvfz postgres_data.tar.gz  /usr/local/pgsql/data /usr/local/pgsql/data/ /usr/local/pgsql/data/pg_ident.conf /usr/local/pgsql/data/postgresql.conf /usr/local/pgsql/data/pg_xlog/ ... [root@training1 backup]# ls postgres_data.tar.gz

ตัวอย่างการขยายไฟล์ [root@training1 ~]# tar xvfz postgresql­8.0.7.tar.gz postgresql­8.0.7/ postgresql­8.0.7/doc/ postgresql­8.0.7/doc/src/ postgresql­8.0.7/doc/src/FAQ/ postgresql­8.0.7/doc/src/FAQ/FAQ.html ... [root@training1 ~]# ls ­l drwxrwxrwx  6   70   70      4096 Feb 13 07:31 postgresql­8.0.7

38

39

คำาสั่ง zip เป็นคำาสั่งที่ใช้บีบอัดไฟล์ไฟล์ที่บีบอัดบนลีนุกซ์ แล้วสามารถนำาไปขยายไฟล์ได้บนวินโดว์โดยใช้ winzip หรือ winrar คำาสั่ง zip มี ออปชันมากมายแต่จะไม่พูดถึงในที่นี้ ออปชัน -r zip รวมเอาไฟล์ที่อยู่ในไดเรกทอรีย่อยด้วย [root@training1 backup]# zip ­r postgres_backup.zip  /usr/local/pgsql/data/ adding: usr/local/pgsql/data/ (stored 0%) adding: usr/local/pgsql/data/pg_ident.conf (deflated 54%) adding: usr/local/pgsql/data/postgresql.conf (deflated 65%) adding: usr/local/pgsql/data/pg_xlog/ (stored 0%) ... [root@training1 backup]# ls ­l ­rw­r­­r­­   1 root root 2313921 Jul 18 12:19 postgres_backup.zip

ขยายไฟล์ด้วย unzip [root@training1 backup]# unzip postgres_backup.zip  Archive:  postgres_backup.zip creating: usr/local/pgsql/data/ inflating: usr/local/pgsql/data/pg_ident.conf inflating: usr/local/pgsql/data/postgresql.conf creating: usr/local/pgsql/data/pg_xlog/ ...

คำาสั่งที่เกี่ยวข้องในบทนี้ tar zip unzip ที่ยกตัวอย่างมายังกล่าวถึงรายละเอียดของแต่ละคำาสั่งยังไม่หมดหากต้องการดูวธิ ีการใช้งานเพิ่มเติม ใช้คำาสั่ง man tar man zip man unzip

40

บทที่ 13 คำาสั่งที่เกี่ยวข้องกับการดูแลเซิร์ฟเวอร์ การใช้งานเซิร์ฟเวอร์จะเกิดปัญหาขึ้นมาถ้าไม่เกิดจากการถูกแฮก ก็จะเกิดจากผู้ดูแลระบบเองไม่ใส่ใจดูแล เช่น ฮาร์ดดิสก์เต็ม ซึ่งจะสร้างปัญหาปวดหัวให้กับผู้ดูแลระบบมือใหม่พอสมควร เพราะฉะนัน้ ควรจะป้องกันเอาไว้ก่อนโดยใช้คำาสั่งเพื่อตรวจสอบอยู่บ่อยๆ คำาสั่ง df df เป็นคำาสั่งที่รายงานการใช้งานพื้นที่ฮาร์ดดิสก์ ซึ่งมีออปชันต่างๆ แต่ที่ใช้บ่อยคือ -h ซึ่งจะแสดงขนาดพื้นที่ที่เหลือและที่ใช้ไปแล้ว ออกมาเป็น K, M, G ซึ่งอ่านเข้าใจง่าย ตัวอย่าง [root@training1 ~]# df ­h Filesystem            Size  Used Avail Use% Mounted on /dev/hda2             7.7G  2.6G  4.8G  36% / /dev/hda5             9.7G  2.8G  6.4G  31% /backup /dev/hda1              99M  8.3M   86M   9% /boot /dev/hda6             4.9G   42M  4.6G   1% /home /dev/hda3              13G  4.4G  7.5G  38% /usr/local/pgsql

คำาสั่ง ps ps เป็นคำาสั่งที่ใช้ดูสถานะการทำางานของแต่ละโปรแกรมที่รนั อยู่ (Process) คำาสั่ง ps มีออปชันเยอะมาก แต่มี่ที่ใช้อยู่บ่อย คือ -e แสดงทุกโปรเซส -f แสดงแบบเต็มรูปแบบ ตัวอย่าง [root@training1 ~]# ps ­ef UID        PID  PPID  C STIME TTY          TIME CMD root         1     0  0 02:30 ?        00:00:00 init [5] root         2     1  0 02:30 ?        00:00:00 [ksoftirqd/0] root         3     1  0 02:30 ?        00:00:00 [events/0] root         4     3  0 02:30 ?        00:00:00 [khelper] ...

คอลัมน์ซ้ายสุดจะเป็นเจ้าของโปเซส ถัดมาเป็นหมายเลขโปรเซส คอลัมน์ขวาสุดจะเป็นคำาสั่งที่ทำางานอยู่ กรณีที่ต้องการดูเฉพาะโปรเซสที่ต้องการก็สามารใช้ | grep ร่วมด้วย

41 [root@training1 ~]# ps ­ef |grep postgres postgres 17952     1  0 10:13 ?        00:00:00 /usr/local/pgsql/bin/postmaster ­D  /usr/local/pgsql/data postgres 17954 17952  0 10:13 ?        00:00:00 postgres: writer process  postgres 17955 17952  0 10:13 ?        00:00:00 postgres: stats buffer process  postgres 17956 17955  0 10:13 ?        00:00:00 postgres: stats collector process 

คำาสั่ง kill ใช้สำาหรับหยุดการทำางานของโปรเซส หรือพูดได้วา่ ฆ่าโปรเซสทิ้ง ในการใช้คำาสั่ง kill ตามด้วยหมายเลข โปรเซส (PID) เช่น [root@training1 ~]# kill 17952

คำาสั่ง top เป็นการดูโปรเซสโดยรวมของเครื่องแบบ real time ซึ่งจะ refresh ตามเวลาที่กำาหนด การใช้คำาสั่ง top -d 1 ให้ refresh ทุก 1 วินาที . top ­ 14:49:32 up 12:19,  4 users,  load average: 0.00, 0.00, 0.00 Tasks:  83 total,   1 running,  82 sleeping,   0 stopped,   0 zombie Cpu(s):  0.3% us,  0.3% sy,  0.0% ni, 99.3% id,  0.0% wa,  0.0% hi,  0.0% si Mem:    515108k total,   422216k used,    92892k free,    23012k buffers Swap:  2112508k total,      160k used,  2112348k free,   253544k cached PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND 1 root      16   0  3156  560  480 S  0.0  0.1   0:00.72 init 2 root      34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0 3 root       5 ­10     0    0    0 S  0.0  0.0   0:00.00 events/0 4 root       6 ­10     0    0    0 S  0.0  0.0   0:00.00 khelper 5 root      15 ­10     0    0    0 S  0.0  0.0   0:00.00 kacpid 20 root       5 ­10     0    0    0 S  0.0  0.0   0:00.00 kblockd/0 30 root      20   0     0    0    0 S  0.0  0.0   0:00.00 pdflush 31 root      15   0     0    0    0 S  0.0  0.0   0:00.28 pdflush 33 root      11 ­10     0    0    0 S  0.0  0.0   0:00.00 aio/0 21 root      15   0     0    0    0 S  0.0  0.0   0:00.00 khubd 32 root      16   0     0    0    0 S  0.0  0.0   0:00.77 kswapd0 107 root      25   0     0    0    0 S  0.0  0.0   0:00.00 kseriod 186 root      15   0     0    0    0 S  0.0  0.0   0:00.20 kjournald 1047 root       6 ­10  2124  448  376 S  0.0  0.1   0:00.01 udevd 1644 root      16   0     0    0    0 S  0.0  0.0   0:00.02 kjournald 1645 root      19   0     0    0    0 S  0.0  0.0   0:00.00 kjournald

คำาสั่งในบทนี้ df ps

42

kill top

บทที่ 14 การติดตั้ง JAVA บนลีนุกซ์ตระกูล Red Hat ดาวน์โหลด j2sdk เวอร์ชัน 1.4.2_05 จาก http://java.sun.com หรือ http://java.sun.com/j2se/1.4.2/download.html ไฟล์ที่ได้มา ชื่อไฟล์ j2sdk-1_4_2_05-linux-i586.rpm.bin หากไฟล์ที่ดาวน์โหลดมายังไม่เป็น mode execute ให้ใช้คำาสั่ง [root@localhost root]# chmod 755 j2sdk-1_4_2_05-linux-i586.rpm.bin [root@localhost root]# ./j2sdk-1_4_2_05-linux-i586.rpm.bin จะได้ไฟล์ j2sdk-1_4_2_02-linux-i586.rpm [root@localhost root]# rpm -Uvh j2sdk-1_4_2_05-linux-i586.rpm.rpm #เพื่อติดตั้ง Preparing... ########################################### [100%] 1:j2sdk ########################################### [100%] [root@localhost root]# เมื่อติดตั้งเสร็จไฟล์จะไปเก็บอยู่ที่ /usr/java/j2sdk1.4.2_05 แก้ไขไฟล์ /ete/profile [root@localhost root]# vi /etc/profile บรรทัดล่างสุด export JAVA_HOME=/usr/java/j2sdk1.4.2_05 export PATH=${PATH}:/usr/java/j2sdk1.4.2_05/bin Save ไฟล์ แล้วใช้คำาสั่ง [root@localhost root]# source /etc/profile #เพื่อให้ใช้งานได้โดยไม่ต้อง reboot เครื่อง ทดสอบ [root@localhost root]# echo $JAVA_HOME /usr/java/j2sdk1.4.2_05

43

[root@localhost root]# java Usage: java [-options] class [args...] (to execute a class) or java [-options] -jar jarfile [args...] (to execute a jar file) ... ถ้าได้ผลแบบบนี้แสดงว่าติดตั้ง JAVA เรียบร้อยแล้ว

บทที่ 15 ขัน้ ตอนการติดตั้ง PostgreSQL 8.x บนลีนุกซ์ตระกูล Red Hat ด้วยการ Compile Source Code ตรวจสอบดูว่า Package postgresql ที่มากับ Linux Distribution ได้ถูกติดตั้งไปแล้วหรือไม่ โดยใช้คำาสั่ง # rpm -ql postgresql ผล package postgresql is not installed # rpm -ql postgresql-server ผล package postgresql-server is not installed ถ้า Package postgresql ได้ถูกติดตั้งไว้ก่อนแล้ว ให้ใช้คำาสั่งด้านล่างนี้เพื่อลบ package ออก # rpm -e postgresql-server # rpm -e postgresql สิ่งจำาเป็น 1. RedHat 9.0 หรือ Linux ตระกูล Red Hat ที่ติดตั้ง Package ชุด Development Tools หากใครที่ยังไม่ติดตั้ง ก็สามารถติดตั้งด้วย คำาสั่งเหล่านี้ บนกราฟิกโหมด Red Hat 9 ใช้คำาสั่ง # redhat-config-packages Fedora Core 4 / Red Hat Enterprise ใช้คำาสั่ง # system-config-packages

44

จะได้ดังรูป ถ้า Development Tools ยังไม่ได้เลือก ก็ให้เลือกแล้วกดปุ่ม Update โปรแกรมจะถามหาแผ่นติดตั้งลีนุกซ์เอง 2. Source code ของ PostgreSQL ดาวน์โหลดจาก http://www.postgres.org ชื่อไฟล์ postgresql-8.0.7.tar.gz ขั้นตอนการ compile และติดตัง้ 1. นำาไฟล์ที่ดาวน์โหลดมา สมมติ ว่ามาเก็บไว้ที่ /root ขยายไฟล์ออกมาโดยใช้คำาสั่ง 2. [root@localhost root]# tar xvfz postgresql-8.0.7.tar.gz จะได้ directory postgresql-8.0.7 ใช้คำาสั่ง 3. [root@localhost root]# cd postgresql-8.0.7 [root@localhost postgresql-8.0.7]# 4. [root@localhost postgresql-8.0.7]# ./configure --prefix=/usr/local/pgsql เป็นการ Config เพื่อ บอก directory ที่จะติดตั้ง ให้ไปติดตั้งโปรแกรมที่ /usr/local/pgsql 5. [root@localhost postgresql-8.0.7]# gmake คำาสั่ง gmake เพื่อ compile 6. [root@localhost postgresql-8.0.7]# gmake install คำาสั่ง gmake install เพื่อติดตั้งไปไว้ที่เรากำาหนดใน prefix คือ /usr/local/pgsql 7. [root@localhost postgresql-8.0.7]# useradd postgres เพิ่มผู้ใช้งานที่ ชื่อ postgres 8. [root@localhost postgresql-8.0.7]# cd /usr/local/pgsql เข้าไปทำางานที่ /usr/local/pgsql 9. [root@localhost pgsql]# mkdir data

45

สร้าง directory data เพื่อเป็นที่เก็บข้อมูล และไฟล์ Config 10. [root@localhost pgsql]# chown postgres:postgres data เปลี่ยน เจ้าของและกลุ่ม ของ directory data เป็น postgres 11. [root@localhost pgsql]# su - postgres เปลี่ยนการทำางานจาก user root เป็น user postgres 12. [postgres@localhost postgres]$ /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data สร้าง database ตั้งต้น ถึงตอนนี้ PostgreSQL พร้อมที่ Start แล้ว หากต้องการ Start Server ก็ทำาได้ โดยใช้คำาสั่ง [postgres@sothorn postgres]$ /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data & แต่มีวิธีการ Start Service ที่ดีกว่านี้ อ่านต่อครับ

วิธีการเพิ่ม PostgreSQL ให้เป็น Service ของ Red Hat และทำางาน ตอนบูท ทำางานด้วย user root นะครับ 1. [root@localhost init.d]# cd /root/postgresql-8.0.7/contrib/start-scripts 2. [root@localhost start-scripts]# ls freebsd linux PostgreSQL.darwin StartupParameters.plist.darwin จะมีไฟล์ ชื่อ linux เป็น startup ไฟล์ ของ PostgreSQL 3. [root@localhost start-scripts]# cp linux /etc/init.d/postgresql copy ไฟล์ linux ไปไว้ที่ /etc/init.d พร้อมเปลี่ยนชื่อเป็น postgresql 4. [root@localhost start-scripts]# chmod 755 /etc/init.d/postgresql เปลี่ยนให้เป็น mode ที่ execute ได้ 5. [root@localhost start-scripts]# service postgresql start Starting PostgreSQL: ok [root@localhost start-scripts]# chkconfig --add postgresql เพิ่ม PostgreSQL เข้าไปในระบบการ Start ตอนบูท [root@localhost start-scripts]# chkconfig postgresql on ให้ PostgreSQL Start Service ตอนที่บูทเครื่อง

46

ตอนนี้ก็สามารถ start stop restart service ของ PostgreSQL ก็สามารถใช้คำาสั่ง # service postgresql start # service postgresql stop # service postgresql restart เรียบร้อยแล้วครับ พร้อมแล้วที่จะใช้งาน PostgreSQL 8.0.7 บนเครื่อง localhost แต่ยังไม่พร้อมที่จะให้เครื่องลูกข่ายติดต่อเข้ามา

การอนุญาตให้เครื่องลูกข่ายเข้ามาใช้งานผ่านทางโปรโตคอล TCP/IP 1. แก้ไฟล์ /usr/local/pgsql/data/pg_hba.conf pg_hba.conf เป็นไฟล์ที่อนุญาตให้เครื่องลูกข่ายเข้ามาใช้งานได้ # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all trust # IPv4 local connections: host all all 127.0.0.1/32 trust host all all 192.168.1.0/24 password 192.168.1.0/24 หมายความว่า อนุญาตให้เครื่องลูกข่ายที่มี IP 192.168.1.1-192.168.1.254 เข้ามาใช้งานได้ ทั้งนีข้ ึ้นอยู่กับ วง IP ที่ทา่ นใช้งานอยู่ แก้ไฟล์แล้วบันทึกไฟล์ 2. แก้ไฟล์ /usr/local/pgsql/data/postgresql.conf เป็นไฟล์คอนฟิกของ PostgreSQL ซึ่งรายละเอียดเยอะมาก แต่ในทีน่ ี้เราจะแก้คอนฟิกให้ PostgreSQL สามารถให้บริการผ่านทางโปรโตคอล TCP/IP ได้

47

# - Connection Settings เดิม #listen_addresses = 'localhost' # what IP interface(s) to listen on; # defaults to localhost, '*' = any เปลี่ยนเป็น listen_addresses = '*' # what IP interface(s) to listen on; # defaults to localhost, '*' = any เสร็จแล้วใช้คำาสั่ง service postgresql retstart เพื่อให้ PostgreSQL อ่านค่าคอนฟิกใหม่

3. เปลี่ยน password ให้กับ user postgres เพื่อเข้าใช้งานฐานข้อมูล [root@localhost root] su – postgres [postgres@localhost postgres]$ /usr/local/pgsql/bin/psql template1 Welcome to psql 8.0.7, the PostgreSQL interactive terminal. Type: copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit template1=# ALTER USER postgres with password 'password_here'; ALTER USER template1=# \q [postgres@sothorn postgres]$ PATH PostgreSQL

48

การที่เราจะใช้คำาสั่งของ PostgreSQL ทีอยู่ใน /usr/local/pgsql/bin เราต้องป้อน PATH เต็มเช่น /usr/local/pgsql/bin/psql เพราะเรายังไม่ set PATH ให้กับระบบ ถ้าเรา set PATH แล้ว เราจะสามารถใช้คำาสั่งของ PostgreSQL ได้เลย เช่น แทนที่จะพิมพ์ /usr/local/pgsql/bin/psql ก็พิมพ์แค่ psql การ Set PATH ให้ PostgreSQL ทำาได้ได้โดยแก้ไฟล์ /etc/profile แล้วเพิ่มบรรทัดนี้ลงไปที่บรรทัดสุดท้าย export PATH=${PATH}:/usr/local/pgsql/bin บันทึกไฟล์แล้ว ใช้คำาสั่ง source /etc/profile เพื่อให้ PATH สามารถใช้งานได้เลยโดยไม่ต้องรีบูทเครื่อง

บทที่ 16 การควบคุมเซิร์ฟเวอร์ลีนุกซ์จากระยะไกลด้วย SSH และส่งไฟล์ ด้วย SFTP การใช้งานเซิร์ฟเวอร์โดยปกติแล้วเราอาจจะไม่ได้นั่งอยู่หน้าจอของเซิร์ฟเวอร์ตลอดเวลา เราสามารถ รีโมทเข้ามาทำางานได้ เมื่อก่อนเราสามารถรีโมทเข้ามาทำางานด้วยโปรแกรม telnet แต่ telnet มีข้อด้อยในการรักษา ความปลอดภัยในการส่งข้อมูลระหว่างไคลเอ็นต์กับเซิร์ฟเวอร์ เพราะไม่มีการเข้ารหัส ข้อมูลระหว่างการส่งข้อมูล ในปัจจุบันได้เปลี่ยนมาใช้ Secure Shell (SSH) Secure Shell (SSH) โปรโตคอลในการสร้างการติดต่อเพื่อเข้าใช้งานระบบอย่างปลอดภัย โดยที่โปรโตคอลดังกล่าวจะทำาการเข้า รหัสข้อมูลทุกอย่างไม่ว่าจะเป็น ชือ่ ผู้ใช้ รหัสผ่าน หรือข้อมูลอื่นๆ ก่อนที่จะทำาการส่งไปยังเครื่องเซิร์ฟเวอร์ โดย ปกตินิยมนำา SSH มาใช้งานแทน telnet เพราะมีความปลอดภัยมากกว่า Secure File Transfer Protocol (SFTP) เป็นโปรโตคอลที่นำามาใช้แทน FTP โดยจะเป็นส่วนหนึ่งของ SSH ซึ่งจะมี sftpserv เป็นโปรแกรมที่รันอยู่ที่ฝั่งเซิร์ฟเวอร์ รอรับการติดต่อจากไคลเอ็นต์ผ่านทางคำาสั่ง sftp บนระบบปฏิบัติการ linux และในระบบปฏิบัติการ Windows ก็มีโปรแกรมที่จะใช้สำาหรับติดต่อและโอนถ่ายข้อมูลกับเซิร์ฟเวอร์ผ่าน SSH ด้วย

49

เช่น winscp และ SSH Secure File Transfer Client เป็นต้น การใช้งาน ssh และ sftp บนลีนุกซ์ตระกูล Red Hat หลังจากติดตั้งเสร็จสามารถใช้งานได้เลยถ้าไม่ได้ติดตั้ง Firewall การใช้งาน ssh บนลีนุกซ์ ssh [­1246AaCfgkMNnqsTtVvXxY] [­b bind_address] [­c  cipher_spec] port] [­e escape_char] [­F configfile] [­i  identity_file] [­L  [bind_address:]port:host:hostport] [­l login_name] [­m mac_spec [­O ctl_cmd] [­o option] [­p port]  [­R[bind_address:]port:host:hostport] [­S ctl_path]  [user@]hostname[command]

[­D 

ตัวอย่างการใช้งาน ssh root@sothorn:~# ssh ­l root 192.168.1.5 [email protected]'s password: Last login: Sat Jul 22 08:36:58 2006 [root@training1 ~]# exit Connection to 192.168.1.5 closed. root@sothorn:~# ssh ­l root 192.168.1.5 shutdown ­h now [email protected]'s password: root@sothorn:~#

การใช้งาน ssh จากโปรแกรมบนวินโดว์ การทำางานอยู่บนวินโดว์ก็สามารรีโมทเข้ามาทำางานที่ลีนุกซ์ได้ แต่ต้องติดตั้งโปรแกรม SSH Client ก่อน เช่น Putty SSH Secure Shell Client ตัวอย่าง โปรแกรม Putty

50

รูปที่ 16-1 แสดงโปแกรม Putty ตัวอย่างโปแกรม SSH Secure Shell Client

รูปที่ 16-2 แสดงโปรแกรม SSH Secure Shell Client

การใช้งาน sftp sftp [-1Cv] [-B buffer_size] [-b batchfile] [-F ssh_config] [-o ssh_option] [-P sftp_server_path] [-R num_requests] [-S program] [-s subsystem | sftp_server] host ftp [[user@]host[:file [file]]] sftp [[user@]host[:dir[/]]] sftp -b batchfile [user@]host ตัวอย่างการใช้งาน sftp

51

เอาไฟล์จากเครื่องที่เราทำางานอยู่ไปไว้ที่ server root@sothorn:~# sftp [email protected] Connecting to 192.168.1.5... [email protected]'s password: sftp> put postgresql­8.0.7.tar.gz Uploading postgresql­8.0.7.tar.gz to /root/postgresql­8.0.7.tar.gz postgresql­8.0.7.tar.gz                       100%   13MB  6.7MB/s   00:02 sftp>

เอาไฟล์จาก Server มาไว้ที่เครื่องทำางาน sftp>ls dovecot­0.99.11­2.EL4.1.i386.rpm postgresql­8.0.7.tar.gz            sftp> get dovecot­0.99.11­2.EL4.1.i386.rpm Fetching /root/dovecot­0.99.11­2.EL4.1.i386.rpm to dovecot­ 0.99.11­2.EL4.1.i386.rpm /root/dovecot­0.99.11­2.EL4.1.i386.rpm        100%  601KB  600.7KB/s   00:01 sftp>

การใช้งาน sftp จากวินโดว์ บนวินโดว์เราสามารถส่งไฟล์ขนึ้ ไปบนลีนุกซ์ หรือนำาไฟล์จากลีนุกซ์ลงมาทีว่ ินโดว์ โดยการติดตั้ง sftp client ซึ่งมีอยู่หลายโปรแกรม เช่น WinSCP, SSH Secure File transfer Client

ตัวอย่างโปแกรม WinSCP

52

รูปที่ 16-3 แสดงโปรแกรม winscp โปแกรม SSH Secure File transfer Client

รูปที่ 16-4 แสดงโปแกรม SSH Secure File transfer Client SFTP แบบกราฟิกบนลีนุกซ์

53

บนลีนุกซ์ก็มีโปรแกรมสำาหรับ sftp ได้แก่โปรแกรม gftp

รูปที่ 16-5 แสดงโปรแกรม gftp ที่กล่าวมาทั้งหมดในบทนี้คงช่วยให้ท่านสามารถทำางานกับลีนุกซ์ได้สะดวกยิ่งขึน้ คำาสั่งที่เกี่ยวข้อง ssh sftp

บทที่ 17

crontab

54

crontab เป็นโปแกรมตั้งเวลาทำางานบนลีนุกซ์โดยให้ลีนุกซ์ทำางานทุกๆ เวลาที่กำาหนด เช่น ทุกนาที, ทุกครึ่งชัว่ โมง, ทุกชั่วโมง, ทุกเที่ยงคืนของวันอาทิตย์, ทุกวันที่ 1 มกราคมของทุกปี การทำางานของ crontab โปรแกรมจะมีการเปิด service ของ crontab อยู่แล้ว เราเพียงเรียกใช้งานโปแกรม แล้วระบุช่วงเวลา และคำาสั่งที่ต้องการให้ทำางาน เมื่อเราเรียกโปแกรม crontab มาใช้งานโปแกรมก็จะเรียกโปแกรม Text Editor ขึน้ มาทำางานส่วนใหญ่แล้วบนลีนุกซ์ Red Hat จะเป็นโปแกรม Vi ส่วน Debian และ Ubuntu จะเป็นโปรแกรม mc การใช้งานโปแกรม crontab crontab [­u user] file crontab [­u user] { ­e | ­l | ­r } ­e      แก้ไข หรือเพิ่ม crontab ของ user ­l      แสดง crontab ของ user ­r      ลบ crontab ของ user

การทำางานของ crontab จะผูกติดอยู่กับแต่ละ user เรา Login เข้ามาทำางานด้วย user ใดถ้าเรียกคำาสั่งโดยไม่ระบุออปชัน -u ก็จะเป็น crontab ของ user ที่ Login เข้ามา รูปแบบของคำาสั่งตั้งเวลาให้คำาสั่งต่างๆ ทำางาน หลังจากทีเรียกโปแกรม crontab แล้วจะเปิดโปแกรม Text Editor เราจะต้องระบุช่วงเวลา และคำาสั่ง โดยมีรูปแบบดังนี้ นาที ชัว่ โมง วันที่ เดือน วันในสัปดาห์ คำาสั่งที่ต้องการให้ทำางาน นาที แทนด้วย 0-59 ชั่วโมง แทนด้วย 0-23 โดยที่ 0=เที่ยงคืน วันที่ แทนด้วย 1-31 เดือน แทนด้วย 1-12 วันในสัปดาห์ แทนด้วย 0-6 โดยที่ 0=วันอาทิตย์ ตัวอย่าง * * * * * คำาสั่ง ทำาทุกๆ นาที */30 * * * * คำาสั่ง ทำาทุกๆ 30 นาที * 20 * * * คำาสั่ง ทำาทุกๆนาทีโดยเริ่มตั้งแต่ 20.00-20.59 น. 5 0 * * * คำาสั่ง ทำาทุกๆวันเวลา 00.05 น. 0 0 * * 0 คำาสั่ง ทำาทุกวันอาทิตย์ตอนเที่ยงคืน */10 8-17 * * * คำาสั่ง ทำาทุก 10 นาที เวลา 08.00-17.00 น.

ตัวอย่างการใช้งานจริง

55

00*** 00**0 0011*

/sbin/shutdow -r now /usr/local/pgsql/util/backup/sunday.sh /usr/lcoal/hospitalOS/reset_sequence.sh

คำาสั่งที่เรียกใช้งานเป็นได้ทั้งคำาสั่งที่มีอยู่บนลีนุกซ์ และ shell script ที่เราเขียนขึ้นมาเอง เช่น จากตัวอย่างข้างต้น shutdown -r now เป็นคำาสั่งบนลีนุกซ์ sunday.sh และ reset_sequence.sh เป็น shell script ที่เขียนขึ้นเอง ตัวอย่างรายงานข้อผิดพลาดกรณีที่เราระบุช่วงเวลาไม่ถูกต้อง [root@training1 ~]# crontab ­e crontab: installing new crontab "/tmp/crontab.XXXXgIneQA":1: bad minute errors in crontab file, can't install. Do you want to retry the same edit?

ตัวอย่างติดตั้ง crontab เรียบร้อย [root@training1 ~]# crontab ­e crontab: installing new crontab [root@training1 ~]#

บทที่ 18

56

การเพิ่มพาร์ตชิ ันหรือเพิ่มฮาร์ดดิสก์ กรณีที่มีพื้นที่ฮาร์ดดิสก์เหลือ หรือต้องการเพิ่มฮาร์ดดิสก์บนวินโดว์เราสามารถเอาฮาร์ดดิสก์มาเสียบแล้ว Format ก็สามารถใช้งานได้เลยซึ่งมี Drive เป็น Drive ถัดไป แต่บนลีนุกซ์นั้นไม่เป็นอย่างนั้นมีหลายขั้นตอน หลายคำาสั่ง เรามาเรียนรู้กัน การใช้งาน fdisk fdisk เป็นโปรแกรมที่ใช้สำาหรับจัดการพาร์ติชันของฮาร์ดดิสก์ fdisk [-u] [-b sectorsize] [-C cyls] [-H heads] [-S sects] device fdisk -l [-u] [device ...] fdisk -s partition ... fdisk -v กรณีที่เราติดตั้งลีนุกซ์แล้วยังมีพื้นที่เหลือแล้วต้องการนำาพื้นที่ที่เหลือมาใช้ประโยชน์เราสามารถ ตรวจสอบดูได้ว่าฮาร์ดดิสก์เรามีพื้นที่เหลือหรือไม่ [root@fdisk ~]# fdisk ­l Disk /dev/hda: 40.0 GB, 40020664320 bytes 255 heads, 63 sectors/track, 4865 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        1288    10241437+  83  Linux /dev/hda3            1289        1353      522112+  82  Linux swap [root@fdisk ~]#

หลังจากที่ใช้คำาสั่ง fdisk -l จะเห็นว่าฮาร์ดดิสก์ขนาด 40.0 GB มี 4865 cylinder ตอนนี้ใช้ไป 1353 cylinder ถ้าหากเราต้องการจัดการพาร์ติชันของฮาร์ดดิสก์ /dev/hda เราก็สามารถใช้คำาสั่ง fdisk /dev/hda หลังจากนั้นก็จะเข้าสู่การใช้งานโปรแกรม fdisk ถ้าเราใช้คำาสั่ง m ให้โปแกรม fdisk แสดงคำาสั่งทั้งหมดออกมา

57

[root@fdisk ~]# fdisk /dev/hda The number of cylinders for this disk is set to 4865. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs    (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): m Command action   a   toggle a bootable flag b   edit bsd disklabel c   toggle the dos compatibility flag d   delete a partition l   list known partition types m   print this menu n   add a new partition o   create a new empty DOS partition table p   print the partition table q   quit without saving changes s   create a new empty Sun disklabel t   change a partition's system id u   change display/entry units v   verify the partition table   w   write table to disk and exit   x   extra functionality (experts only) Command (m for help):

ต้องการสร้างพาร์ติชันใหม่ Command (m for help): n Command action    e   extended    p   primary partition (1­4) e Selected partition 4 First cylinder (1354­4865, default 1354): Using default value 1354 Last cylinder or +size or +sizeM or +sizeK (1354­4865, default 4865): Using default value 4865

ในการสร้างพาร์ติชันใหม่ให้ใช้คำาสั่ง n เนื่องจาก พาร์ติชันเดิมที่มีอยู่ 3 พาร์ติชันนั้น เป็น Primary พาร์ติชนั ทั้งหมด ถ้าพาร์ติชันที่เพิ่มมาใหม่เป็น Primary อีก ก็ไม่สามารถที่จะเพิ่มพาร์ติชันได้อีก เพราะฉะนัน้ เราต้องเอาพื้นที่ที่เหลือทั้งหมดเป็น Extended โดยการตอบ e เดิมมีอยู่แล้ว 3 พาร์ติชันก็ให้พาร์ติชันต่อมาเป็นพาร์ติชันที่ 4 First cylinder ให้ Enter ผ่าน หรือใส่ 1354 ตามค่า default ก็ได้ เพราะเราต้องการพาร์ติชันต่อจากพาร์ติชันเดิมอยู่แล้ว Last cylinder or +size ก็ให้ Enter ผ่านเช่นกัน เพราะต้องการใช้พนื้ ที่ที่เหลือทั้งหมดเป็น Extended ให้ใช้คำาสั่ง p เพื่อ print รายละเอียดของการพาร์ติชันออกมาดู

58

Command (m for help): p Disk /dev/hda: 40.0 GB, 40020664320 bytes 255 heads, 63 sectors/track, 4865 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        1288    10241437+  83  Linux /dev/hda3            1289        1353      522112+  82  Linux swap /dev/hda4            1354        4865    28210140    5  Extended Command (m for help):

เราจะเห็นได้ว่าพาร์ติชันที่ 5 เป็น Extended พาร์ติชันเริ่มที่ cylinder 1354 จบที่ 4865 ถือว่าได้ใช้พื้นที่ของฮาร์ดดิสก์หมดแล้ว ในการเพิ่มพาร์ติชันถัดไป ก็จะเป็นการแบ่งย่อย Extended ออกมา Command (m for help): n First cylinder (1354­4865, default 1354): Using default value 1354 Last cylinder or +size or +sizeM or +sizeK (1354­4865, default 4865):  +10000M Command (m for help): p Disk /dev/hda: 40.0 GB, 40020664320 bytes 255 heads, 63 sectors/track, 4865 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        1288    10241437+  83  Linux /dev/hda3            1289        1353      522112+  82  Linux swap /dev/hda4            1354        4865    28210140    5  Extended /dev/hda5            1354        1476      987966   83  Linux Command (m for help): w The partition table has been altered! Calling ioctl() to re­read partition table. WARNING: Re­reading the partition table failed with error 16: Device or  resource busy. The kernel still uses the old table. The new table will be used at the next reboot. Syncing disks.

การเพิ่มพาร์ติชันใหม่ให้ใช้คำาสั่ง n แล้ว เมือ่ ถาม First cylinder ให้ Enter ผ่านเพื่อใช้ค่า default Last cylinder or +size or +sizeM or +sizeK ให้ตอบขนาดพาร์ติชันที่ต้องการ เช่น +10000M เพื่อให้พาร์ติชันนี้มีขนาด 10 GB ให้ใช้คำาสั่ง p เพื่อให้แสดงรายละเอียดของพาร์ติชัน หลังจากนั้นให้ใช้คำาสั่ง w (write) สิ่งที่ได้กระทำาไปลงฮาร์ดดิสก์ หลังจากใช้คำาสั่ง w แล้วจะออกจากการใช้งานโปรแกรม fdisk ให้ทดลองใช้คำาสั่ง fdisk -l

59

[root@fdisk ~]# fdisk ­l Disk /dev/hda: 40.0 GB, 40020664320 bytes 255 heads, 63 sectors/track, 4865 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        1288    10241437+  83  Linux /dev/hda3            1289        1353      522112+  82  Linux swap /dev/hda4            1354        4865    28210140    5  Extended /dev/hda5            1354        2570     9775521   83  Linux

จะเห็นว่าพาร์ติชันที่สร้างมาใหม่มี ID 83 มี ไฟล์ System เป็น Linux เป็นค่าปกติหากต้องการ File system เป็นอย่างอื่นได้ โดยใช้คำาสั่ง l (แอล) เพื่อดูรหัสของ File system แล้วใช้คำาสั่ง t เพื่อเปลี่ยน File system Command (m for help): l  0  Empty           1c  Hidden W95 FAT3 70  DiskSecure Mult bb  Boot Wizard hid  1  FAT12           1e  Hidden W95 FAT1 75  PC/IX           be  Solaris boot  2  XENIX root      24  NEC DOS         80  Old Minix       c1  DRDOS/sec (FAT­  3  XENIX usr       39  Plan 9          81  Minix / old Lin c4  DRDOS/sec (FAT­  4  FAT16 &1;done|less cannot touch `file42': Disk quota exceeded file43touch: cannot touch `file43': Disk quota exceeded file44touch: cannot touch `file44': Disk quota exceeded file45touch: cannot touch `file45': Disk quota exceeded file46touch: cannot touch `file46': Disk quota exceeded file47touch: cannot touch `file47': Disk quota exceeded file48touch: cannot touch `file48': Disk quota exceeded file49touch: cannot touch `file49': Disk quota exceeded file50touch: cannot touch `file50': Disk quota exceeded

ทดลองสร้างไฟล์ จำานวน 50 ไฟล์

66

[sothorn@banban ~]$ ls file1   file12  file15  file18  file20  file23  file26  file29  file31  file34  file37  file4   file5  file8 file10  file13  file16  file19  file21  file24  file27  file3   file32  file35  file38  file40  file6  file9 file11  file14  file17  file2   file22  file25  file28  file30  file33  file36  file39  file41  file7 [sothorn@banban ~]$ quota Disk quotas for user sothorn (uid 501):      Filesystem  blocks   quota   limit   grace   files   quota   limit  grace       /dev/hda3      36       0       0              50*     40      50 [sothorn@banban ~]$

จะเห็นว่าเราสามารถสร้างได้แค่ 41 ไฟล์ รวมกับของเดิมที่มีอยู่แล้ว (ไฟล์ซ่อน 9 ไฟล์) เป็น 50 ไฟล์ ถ้าเรามี user จำานวนมากแล้วต้องมานั่ง set โควต้าให้กับทุกคนคงยุ่งยากพอสมควร เราสามารถการ copy โควต้าจาก User หนึ่งไปยังอีก user หนึ่ง ได้ถ้าการจำากัดจำานวนโควต้าที่เท่ากัน edquota -p a b c d e f ... # ทดลองด้วย copy โควต้า ของ User a ไปยัง user b c d e f Grace Period คือ เวลาที่เราใช้พื้นที่ มาถึง soft limit แต่ไม่ถึง hard limit มาเป็นเวลาครบตามกำาหนดโดยที่ soft limit ก็จะกลายเป็น hard limit จนกว่าเราจะลบไฟล์ออก ค่าของ graceperiod ถ้าเราไม่กำาหนดค่า grace period จะมีคา่ 7 วัน ค่าของ grace period มีคา่ เป็น months, weeks, days, hours, minutes และ seconds คำาสั่งที่ใช้เปลี่ยนแปลงค่า grace period คือ edquota -t ### ค้าง Group Quota ทำาดีหรือไม่

67

บทที่ 20

DNS (Domain Name System) ระบบชื่อโดเมน การกำาหนดชื่อโดเมนให้เครื่องคอมพิวเตอร์แทนการใช้หมายเลข IP (IP Address) ให้จำาง่ายในการอ้างอิงถึงคอมพิวเตอร์ที่เชื่อมต่อกับเครือข่ายอินเทอร์เน็ต เช่น หมายเลข IP 203.155.110.38 แทนด้วยโดเมนชื่อ linuxsiam.com ซึ่งจะมี DNS Server เป็นตัวให้บริการชื่อโดเมนซึ่งจัดเก็บฐานข้อมูลชื่อโดเมน และหมายเลขไอพี โดยที่ DNS Server มีโปรแกรม ที่มีหน้าที่แปลงชื่อโดเมนเป็นหมายเลข IP และแปลงหมายเลข IP เป็นโดเมน เพื่อตอบคำาถามให้กับเครื่องลูกข่ายที่ถามเข้ามา ตัว DNS Server แต่ละตัวไม่ได้มีข้อมูลครบทั้งหมด หากลูกข่ายถามมาแล้วไม่เจอโดเมนนั้นๆ ตัว DNS Server ก็จะถาม DNS Server ในระดับสูงขึน้ ไป โดเมน กลุ่มของคอมพิวเตอร์บนเครือข่ายอินเทอร์เน็ตแบ่งเป็นระดับโดยมีเครื่องหมาย . เป็นตัวคั่น เช่น univercity.ac.th โดยที่ .th เป็นโดเมนสูงสุด ในการจดชื่อโดเมนสามารถทำาได้โดยเข้าไปที่เวบโฮสติ้งต่างๆ ที่รับจดชื่อและเช่าพืน้ ที่ เช่น www.keepdomain.com เมื่อเรากรอกข้อมูลในขั้นตอนกรอก DNS Servr เราต้องทราบก่อนว่าเราจะใช้พื้นที่ที่ไหนทำาเวบที่ที่ให้เราเช่าพื้นที่ทำาเวบเขาก็จะมี DNS Server ให้อยู่แล้ว เช่น ของ KSC ns.ksc.co.th. 203.155.33.1 ns2.ksc.co.th. 202.44.144.33 หรือจะเช่าพื้นที่กับ Hosting ที่รับจดโดเมนเนมเลยก็ได้ หรือจดชื่อแล้วจะจัดการเรื่อง DNS เองก็ลองไปลงทะเบียนที่ www.zonedit.com ที่กล่าวมาเป็นเรื่องของอินเทอร์เน็ตถ้าเป็นอินทราเน็ตล่ะเราแต่ติดตั้ง DNS Server ในองค์กรเราก็สามารถตั้งชื่อโดเมนอะไรก็ ได้ เพราะ DNS Server เป็นของเราเองลีนุกซ์โปแกรมที่ใช้ทำา DNS Server คือโปแกรม BIND ปัจจุบันพัฒนามาถึงเวอร์ชัน 9 ประวัติความเป็นมาของ BIND BIND (Berkeley Internet Name Domain) โปแกรม BIND ได้พัฒนาขึ้นที่ University of California at Berkeley เป็นโปเจคของนักศึกษาปริญญาตรี ภายใต้การสนับสนุนโดย US Defense Advanced Research Projects Administration (DARPA) โปแกรม BIND ตั้งแต่พัฒนาจนถึงเวอร์ชัน 4.8.3 ได้รับการดูแลจาก Computer Systems Research Group (CSRG) ที่ UC Berkeley ทีมพัฒนาได้แก่ Douglas Terry, Mark Painter, David Riggle และ Songnian Zhou หลังจากนั้นก็ได้มีการรับช่วงการพัฒนามาหลายคนหลายองค์กร จนปัจจุบัน BIND เวอร์ชัน 9 ซึ่งออกมาเมื่อเดือนกันยายน ปี 2000 ได้รับการสนับสนุนการพัฒนาจากหน่วยงานเหล่านี้ ● Sun Microsystems, Inc. ● Hewlett Packard ● Compaq Computer Corporation ● IBM ● Process Software Corporation ● Silicon Graphics, Inc.

68

Network Associates, Inc. ● U.S. Defense Information Systems Agency ● USENIX Association ● Stichting NLNet - NLNet Foundation ● Nominum, Inc. สามารถดาวน์โหลดโปแกรม BIND มาใช้งานได้ที่ http://www.isc.org/index.pl?/sw/bind แต่เราไม่จำาเป็นต้องดาวน์โหลดมาคอมไพล์และติดตั้งเองลีนุกซ์ทุกค่ายจะมีโปรแกรม BIND มาให้อยู่แล้ว ●

การติดตั้ง BIND บน Red Hat การติดตั้ง DNS Server บน Red Hat สามารถทำาได้โดยใช้ system-config-packages

รูปที่ xx แสดง หลังจากติดตั้งเสร็จก็ให้ใช้คำาสั่ง chkconfig named on เพื่อให้เซอร์วิส named ทำางานตั้งแต่ตอนบูท ไฟล์และไดเรกทอรีที่เกี่ยวข้อง /etc/named.conf /var/named/chroot/var/named /var/name/name.ca

เป็นไฟล์คอนฟิกหลักที่จะไปเรียกใช้ไฟล์อื่น เป็นไดเรกทอรีที่เก็บไฟล์ที่เรียกใช้จาก /etc/named.conf เป็นที่ที่เราสร้างไฟล์ที่เกี่ยวกับโดเมนไปเก็บไว้ เป็นลิงค์ไฟล์มาจาก/var/named/chroot/var/named/name.ca เป้นไฟล์ที่เก็บ รูทเนมเซิร์ฟเวอร์ ที่ดูแลโดย InterNic

69

ขั้นตอนการคอนฟิก 1. ตั้งชื่อโดเมน 2. แก้ไขไฟล์ /etc/name.conf 3. สร้างไฟล์ที่จะเปลี่ยนชื่อเป็น IP Address ใน /var/named/chroot/var/named 4. สร้างไฟล์เปลี่ยน IP Address เป็นชื่อ /var/named/chroot/var/named 5. start หรือ restart service named 6. แก้ไฟล์ /etc/resolv.conf 7. ใช้ เครื่องมือในการทดสอบ ตั้งชื่อโดเมน ทำาความเข้าใจกันก่อนนะครับว่าเราจะติดตั้ง Server กันภายในหน่วยงานของเรา เพราะฉะนัน้ ชื่อจะซำ้ากับที่มีอยู่บนอินเทอร์เน็ตก็ไม่เป็นไร เช่น mydomain.com, sweetdomain.com จากนี่ไปผมจะขอตั้งชื่อโดเมนนี้วา่ ourintranet.net สิ่งที่ต้องการ IP Address

Role

ชื่อ

192.168.1.1

DNS, Web, Mail

ourdomain.net, www.ourdomain.net

192.168.1.2

FTP

ftp.ourdomain,net

192.168.1.254

Gateway

gateway.ourdomain.net

แก้ไฟล์ /etc/named.conf

70 zone "." IN {         type hint;         file "named.ca"; }; zone "localdomain" IN {         type master;         file "localdomain.zone";         allow­update { none; }; }; zone "localhost" IN {         type master;         file "localhost.zone";         allow­update { none; }; }; zone "0.0.127.in­addr.arpa" IN {         type master;         file "named.local";         allow­update { none; }; }; zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa"  IN {         type master;         file "named.ip6.local";         allow­update { none; }; }; zone "255.in­addr.arpa" IN {         type master;         file "named.broadcast";         allow­update { none; }; }; zone "0.in­addr.arpa" IN {         type master;         file "named.zero";         allow­update { none; }; }; zone "ourintranet.net." IN {         type master;         file "ourintranet.net.db"; }; zone "1.168.192.in­addr.arpa." IN {         type master;         file "192.168.1.db"; };

ทดสอบไฟล์ /etc/named.conf เราสามารถทดสอบได้ว่า ไฟล์ /etc/named.conf ที่เราได้เพิ่มเข้าไปนั้นถูกต้องหรือไม่โดยใช้คำาสั่ง named-checkconf ตามด้วยไฟล์ /etc/named.conf ตัวอย่างการณีที่มีความผิดพลาดเกิดขึ้น ถ้าไม่มีความผิดพลาดก็จะไม่รายงานอะไรออกมา

71

[root@banban named]# named­checkconf  /etc/named.conf /etc/named.conf:30: unknown option 'asdad' /etc/named.conf:31: unexpected token near '}'

ถ้าไม่มีข้อผิดพลาด

[root@banban named]# named­checkconf  /etc/named.conf [root@banban named]# 

สร้างไฟล์ที่จะเปลี่ยนชื่อเป็น IP Address (ourintranet.net.db) ในทีน่ ี้คือไฟล์ ourintranet.net.db ซึ่งจะมีหน้าที่ในการเปลี่ยนชื่อเป็น IP Address บนลีนุกซ์ตระกูล Red Hat สร้างไฟล์นี้ที่ /var/named/chroot/var/named $TTL 1H @     IN     SOA     ourintranet.net.    root.ourintranet.net. (      1     ; Serial  3h    ; Refresh after 3 hours                          1h    ; Retry after 1 hour                             1w    ; Expire after 1 week                             1h    ; Negative caching TTL of 1 hour    )         NS      ns.ourintranet.net.         IN      MX      10      mail.ourintranet.net.         IN      A       192.168.1.1 mail    IN      A       192.168.1.1 www     IN      A       192.168.1.1 ftp     IN      A       192.168.1.2 gateway IN      A       192.168.1.254

สร้างไฟล์ที่จะเปลี่ยน IP Address เป็นชื่อ (192.168.1.db) ในทีน่ ี้คิอไฟล์ 192.168.1.db มีหน้าที่ในการเปลี่ยน IP Address เป็นชื่อ ที่อยู่ของไฟล์ก็ที่เดียวกันกับไฟล์ ourintranet.net.db $TTL 1H @   IN       SOA     ourintranet.net.    root.ourintranet.net. (  1     ; Serial  3h    ; Refresh after 3 hours                          1h    ; Retry after 1 hour                             1w    ; Expire after 1 week                             1h    ; Negative caching TTL of 1 hour    )         IN      NS      ns.ourintranet.net. 1.1.168.192.in­addr.arp.arpa.     IN    PTR    www.ourintranet.net. 2.1.168.192.in­addr.arp.arpa.     IN    PTR    ftp.ourintranet.net. 254.1.168.192.in­addr.arp.arpa.   IN    PTR    gateway.ourintranet.net.

72

อธิบายความหมายของคำาต่างๆ TTL @ IN Serial Refresh Retry Expire TTL

Time to Live ค่าของเวลาของ โซน หรือ โดเมนที่จะ cache หรือบันึกโดย secondary server

Internet ระยะเวลาที่ใช้ในการรีเฟรชข้อมูล ระยะเวลาที่ใช้ในการตรวจสอบข้อมูลกับ Primary ระยะเวลาการหมดอายุของข้อมูล กรณีที่ไม่สามารถติดต่อเพื่อขอข้อมูล (refresh) กับ Primary ได้ ระยะเวลาการมีชีวิต (Time to Live)

TypeDescription SOA Start of authority NS A CNAME MX PTR

Authorized name server Host address Canonical name Mail server exchange Reverse name pointer#

## restart service service named start | restart ## แก้ไฟล์ /etc/resolv.conf nameserver 192.168.1.1

73

เครื่องมือในการตรวจสอบ เครื่องมือในการตรวจสอบว่าเราสิ่งที่เราได้ทำาไปถูกต้องหรือไม่ [root@ourintranet  ~]# dig ourintranet.net ;  DiG 9.2.4  ourintranet.net ;; global options:  printcmd ;; Got answer: ;; ­>>HEADERHEADERHEADERHEADER \q Bye [root@ourintranet ~]

หรือ mysql> exit Bye [root@ourintranet ~]

การใช้งาน user และ password ของ mysql แบบแรก ให้ mysql ถามรหัสผ่าน [root@ourintranet ~]# mysql ­u root ­p Enter password: Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 4 to server version: 4.1.7 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

แบบที่ 2 ใส่รหัสผ่านต่อจากออปชัน -p [root@ourintranet ~]# mysql ­u root ­pmypassword Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 7 to server version: 4.1.7 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql>

ถ้าใส่รหัสผ่านผิดก็จะมีข้อความเตือน [root@ourintranet ~]# mysql ­u root ­p Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using  password: YES)

78

การสร้างฐานข้อมูล MySQL สร้างฐานข้อมูลใหม่และดูชื่อฐานข้อมูล [root@ourintranet ~]# mysqladmin create newdb ­u root ­p Enter password: [root@ourintranet ~]# mysql ­u root ­p Enter password: Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 6 to server version: 4.1.7 Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> show databases; +­­­­­­­­­­+ | Database | +­­­­­­­­­­+ | mysql    | | newdb    | | test     | +­­­­­­­­­­+ 3 rows in set (0.00 sec) mysql> \q

การนำาเข้าฐานข้อมูล และ backup ฐานข้อมูล นำาเข้าฐานข้อมูลจากไฟล์ด้วย mysql newdb  SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpassword‘);

หรือ [root@ourintranet ~]# mysql ­u root ­poldpassword mysql> UPDATE mysql.user SET Password = PASSWORD('newpassword‘) WHERE  User = 'root'; mysql> FLUSH PRIVILEGES;

ถึงตอนนี้ MySQL ก็พร้อมใช้แล้วมาดูกนั ต่อว่า จะให้ apache + PHP รูจ้ ัก MySQL ได้อย่างไร

79

การติดตั้ง Web Server + PHP การติดตั้งเวบเซิร์ฟเวอร์จาก Package ลองลีนุกซ์ตระกูล Red Hat ให้ใช้ system-config-packages จะดีกว่าใช้คำาสั่ง rpm เนื่องจากมี package ที่ขึ้นต่อกันมาก [root@ourintranet ~]# system­config­packages

กด Details เลือก Package

รูปที่ xx

80

รูปที่ xx เราจะใช้งาน PHP ด้วยเพราะฉะนั้นอะไรที่เกี่ยวข้องก็เลือกไปเถอะครับเกินดีกว่าขาด มันไม่ได้กินพื้นที่มากด้วย เลือกเสร็จกดปุ่ม Close แล้ว Update โปรแกรมจะถามหาแผ่นติดตั้งเอง หลังจากติดตั้งเสร็จให้ใช้คำาสั่ง [root@ourintranet ~]# chkconfig httpd on เพื่อให้ httpd ทำางานทุกครั้งที่เปิดเครื่อง ให้ httpd ทำางาน [root@ourintranet ~]# service httpd start หรือ [root@ourintranet ~]# /etc/init.d/httpd start สิ่งที่ต้องทราบ /var/www/html คือ ไดเรคทอรีที่เราเอาไฟล์ .html หรือ .php ไปเก็บไว้ หรือเรียกว่า Document root /etc/httpd/conf/httpd.conf ไฟล์ config ของ Web Server

81

ทดสอบการทำางานของ Web Server และ PHP ทำางานหรือไม่ให้เปิดโปรแกรม Browser Mozilla หรือ Firefox แล้วเรียก URL http://www.ourintranet.com หรือ http://localhost ของเครื่อง ถ้าเปิดหน้า Default Page ขึ้นมาได้ ก็แสดงว่า Web Server ทำางานแล้ว

ทดลองใช้งาน SERVER AddDefaultCharset UTF-8 #AddDefaultCharset TIS-620

ทดสอบการทำางานของ PHP สร้างไฟล์ phpinfo.php โดยมีเนื้อความข้างในไฟล์

แล้วนำาไฟล์ phpinfo.php ไปไว้ที่ /var/www/html

82

สิ่งที่ควรระวัง ถ้ายังไม่เข้าใจเกี่ยวกับการทำางานของ Firewall มากนักก็ให้ปิดการทำางานของ Firewall ไปก่อน โดยใช้คำาสั่ง [root@ourintranet ~]# system­config­securitylevel

รูปที่ xx ให้ Disable firewall และ SELinux ไปก่อนแล้วค่อยมาศึกษาเรื่อง Filewall กันทีหลังดังรูป xx หรือจะใช้คำาสั่ง [root@ourintranet ~]# chkconfig iptables off [root@ourintranet ~]# service  iptables stop

83

ทดสอบการทำางานกับ PHP กับ MySQL สร้างไฟล์ connect.php ไว้ที่ /var/www/html โดยมีเนื้อความดังนี้

ทดสอบการทำางานการติอต่อฐานข้อมูลด้วย Browser ถ้าหากไม่สามารถติดต่อฐานข้อมูลได้ก็ระรายงาน error ขึน้ มาดังรูป XX

รูปที่ xx แสดงการติดต่อฐานข้อมูล MySQL ด้วย PHP ถ้า php สามารถติดต่อฐานข้อมูลได้ก็จะแสดงข้อความ Connected successfully ออกมาดังรูป XX

รูปที่ xx แสดงการติดต่อฐานข้อมูล MySQL ด้วย PHP ถ้าหากว่าเราสามารถติดต่อฐานข้อมูลด้วย username และ password ที่เราตั้งเอาไว้เราก็สามารถติดตั้ง โปรแกรมอื่นๆ ที่เขียนด้วยภาษา PHP และใช้ฐานข้อมูล MySQL ได้แล้ว

84

การติดตั้ง phpMyAdmin phpMyAdmin เป็นโปแกรมที่เขียนด้วยภาษา PHP ให้สำาหรับจัดการฐานข้อมูล MySQL โดยที่เราไม่ต้องใช้คำาสั่ง ทำางานผ่าน Web Browser ดาวน์โหลดมาติดตั้งได้จาก http://www.phpmyqdmin.net

รูปที่ xx แสดงเวบ www.phpmyadmin.net ไฟล์ที่ดาวน์โหลดมา จะมีชื่อ phpMyAdmin-version.tar.gz เช่น phpMyAdmin-2.8.2.4.tar.gz เมื่อได้ไฟล์มาให้เอาไปไว้ที่ /var/www/html แล้วขยายไฟล์ออกมา จะได้ไดเรกทอรี phpMyAdmin-2.8.2.4 [root@ourintranet html]# tar xvfz phpMyAdmin­2.8.2.4.tar.gz   phpMyAdmin­2.8.2.4/ phpMyAdmin­2.8.2.4/Documentation.txt phpMyAdmin­2.8.2.4/CREDITS phpMyAdmin­2.8.2.4/ChangeLog phpMyAdmin­2.8.2.4/Documentation.html phpMyAdmin­2.8.2.4/INSTALL ... [root@ourintranet html]# ls phpMyAdmin­2.8.2.4  phpMyAdmin­2.8.2.4.tar.gz

เพื่อความสะดวกในการใช้งานให้เปลี่ยนชื่อ ไดเรกทอรีให้สั้นลง [root@ourintranet html]# mv phpMyAdmin­2.8.2.4 phpMyAdmin

85

ทดลองทดสอบการทำางานจาก Browser http://www.ourintranet.net/phpMyAdmin/

รูปที่ xx จากรูปจะเห็นว่ายังไม่สามารถติดต่อฐานข้อมูลได้ ให้เข้าไปทำางานที่ได้เรกทอรี phpMyAdmin/libraries เพื่อแก้ไขไฟล์ config.default.php แก้ไฟล์ด้วย vi หรือ text editor ที่ท่านถนัด [root@ourintranet html]# cd phpMyAdmin/libraries [root@ourintranet libraries]# vi config.default.php

ให้ค่าตัวแปรของ $cfg['PmaAbsoluteUri'] $cfg['PmaAbsoluteUri'] = 'http://www.ourintranet.net/phpMyAdmin/';

ถ้าเราไม่ได้ทำา DNS server บรรทัดนี้เป็น $cfg['PmaAbsoluteUri'] = 'http://192.168.1.1/phpMyAdmin/';

หรือ

$cfg['PmaAbsoluteUri'] = 'http://localhost/phpMyAdmin/';

ให้ค่าตัวแปรของ auth_type user และ password auth_type มี 2 แบบคือ config กับ http ถ้าเลือกแบบ config โปรแกรมจะอ่านค่า username และ password จากไฟล์คอนฟิกนี้ http โปรแกรมจะถาม username และ password ก่อน user user ที่จะติดต่อฐานข้อมูล MySQL password รหัสผ่าน ของผู้ใช้งานที่จะติดต่อฐานข้อมูล เช่น $cfg['Servers'][$i]['auth_type']     = 'config';      $cfg['Servers'][$i]['user']          = 'root';      $cfg['Servers'][$i]['password']      = 'mypassword';  

86

ถ้า username และ password ถูกต้องก็จะเข้าใช้งานได้เลย

รูป xxx แสดง ถ้ากรณีที่ไฟล์คอนฟิกเป็นแบบนี้ $cfg['Servers'][$i]['auth_type']     = 'http';      $cfg['Servers'][$i]['user']          = 'root';      $cfg['Servers'][$i]['password']      = '';  

เมื่อเราเรียกใช้งานโปแกรมก็จะถามผู้ใช้งานและรหัสผ่านก่อน

รูป xxx ถ้าชื่อผู้ใช้และรหัสผ่านถูกต้องก็จะเข้าใช้งานได้ดังรูป xxx การติดตั้ง phpPgAdmin phpPgadmin เป็นโปรแกรมที่เขียนด้วยภาษา PHP เช่นเดียวกันกับ phpMyAdmin แต่ phpPgAdmin เป็นเครื่องมือใช้สำาหรับจัดการฐานข้อมูล PostgreSQL ผ่านทางเวบ สามารถดาวน์โหลดมาใช้งานได้ที่

87

http://phppgadmin.sourceforge.net

ไฟล์ที่ดาวน์โหลดมา phpPgAdmin-4.0.1.tar.gz เอาไปไว้ที่ไดเรคทอรี /var/www/html แล้วขยายไฟล์ออกมา จะได้ ได้เรกทอรี phpPgAdmin-4.0.1 ให้เปลี่ยนชื่อเป็น phpPgAdmin เพื่อความสะดวกในการใช้งาน [root@ourintranet ~]# ls phpPgAdmin­4.0.1.tar.gz [root@ourintranet ~]# cp phpPgAdmin­4.0.1.tar.gz /var/www/html/ [root@ourintranet ~]# cd /var/www/html/ [root@ourintranet html]# tar xvfx phpPgAdmin­4.0.1.tar.gz phpPgAdmin­4.0.1/ phpPgAdmin­4.0.1/CREDITS phpPgAdmin­4.0.1/classes/ ... [root@ourintranet html]# mv phpPgAdmin­4.0.1 phpPgAdmin

ทดสอบการใช้งานโดยการเรียกผ่าน Browser http://www.ourintranet.net/phpPgAdmin จะเห็นว่าเราไม่สามารถ login เข้าใช้งานได้ มีข้อความเตือน Login disallowed for security reasons.

88

ต้องมีการแก้ไฟล์ config ก่อน [root@ourintranet html]# mv phpPgAdmin­4.0.1 phpPgAdmin [root@ourintranet html]# cd phpPgAdmin/conf [root@ourintranet conf]# ls config.inc.php  config.inc.php­dist [root@ourintranet conf]# vi config.inc.php

ให้คา่ ตัวแปร $conf['servers'][0]['host'] เป็ น localhost  // Hostname or IP address for server.  Use '' for UIX domain socket.  // use 'localhost' for TCP/IP connection on this computer         $conf['servers'][0]['host'] = 'localhost';

ให้คา่ ตัวแปร $conf['extra_login_security'] เป็ น false // If extra login security is true, then logins via phpPgAdmin with no  // password or certain usernames (pgsql, postgres, root, administrator)  // will be denied. Only set this false once you have read the FAQ and  // understand how to change PostgreSQL's pg_hba.conf to enable  // passworded local connections.         $conf['extra_login_security'] = false;

ทดลอง

89

การติดตั้ง phpNukeThai phpNuke เป็นโปรแกรม Content Management System ที่ได้รับความนิยมเอามาทำาเวบไซต์มากตัวหนึ่ง สามารถดาวน์โหลดได้ที่ http://www.phpnuke.org/ เนื่องจากได้รับความนิยมมากคนไทยเรา ได้เอามาพัฒนาเพิ่มเติมใส่ระบบภาษาไทยเข้าไปซึ่งดาวน์โหลดได้ที่ http://www.thainuke.org

รูปที่ xxx แสดงเวบไซต์ www.thainuke.org ไฟล์ที่เราดาวน์โหลดมาเป็นเวอร์ชัน 7.8 ชื่อไฟล์ PHP-Nuke-7.8-Thai-Edition.zip ขยายไฟล์ด้วยคำาสั่ง unzip [root@ourintranet ~]# unzip PHP­Nuke­7.8­Thai­Edition.zip   Archive:  PHP­Nuke­7.8­Thai­Edition.zip   creating: PHP­Nuke­7.8­Thai­Edition/docs/   inflating: PHP­Nuke­7.8­Thai­Edition/docs/Addons­Modules.txt ... [root@ourintranet ~]# cd PHP­Nuke­7.8­Thai­Edition [root@ourintranet PHP­Nuke­7.8­Thai­Edition]# ls docs  html  README­THAI.txt  sql  upgrades [root@ourintranet PHP­Nuke­7.8­Thai­Edition]# cp ­r html  /var/www/html/nuke [root@ourintranet PHP­Nuke­7.8­Thai­Edition]# cd sql [root@ourintranet PHP­Nuke­7.8­Thai­Edition]# cd sql [root@ourintranet sql]# ls nuke.sql [root@ourintranet sql]# [root@ourintranet sql]# mysqladmin create nuke ­u root ­pmypassword [root@ourintranet sql]# mysql nuke  Internet Options -->Conections -->LAN Settings ก็ให้ยกเลิกค่า ของ Proxy Server

132

ภาพที่ xx เมื่อลูกข่ายใช้งานอินเตอร์เน็ตก็จะออกผ่าน Proxy Server ถ้าหากเราต้องการตั้งกฏใน squid ## ถ้าจะเพิ่มกฏ มีตัวอย่างดังนี้ เช่น ไม่ให้เครื่องลูกข่าย IP 192.168.1. 50 ใช้งาน ตัวอย่างจากกฎ acl client50 src 192.168.1.50 http_access deny client 50 หรือจะเขียนแบบให้ไปอ่านจาก Text File acl banned_ips src "/etc/squid/banip.txt" http_access deny banmed_ips

133

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # Example rule allowing access from your local networks. Adapt # to list your (internal) IP networks from where browsing should # be allowed acl our_networks src 192.168.1.0/24 acl banned_ips       src "/etc/squid/banip.txt" acl within_timeframe time MTWHFAS 09:00­16:00 acl web url_regex ­i ^http://www.sex  http_access deny web  http_access allow  within_timeframe http_access allow our_networks http_access allow localhost # And finally deny all other access to this proxy http_access deny all

134

บทที่ SAMBA Samba เป็นซอฟต์แวร์ที่ช่วยให้สามารถแชร์ไฟล์และเครื่องพิมพ์บนลินุกซ์ให้กับระบบปฏิบัติการวินโดวส์ 95, 98, 2000, NT รวมทั้ง smbclient อืน่ เช่น linux, unix อื่นๆ ได้ จะยกตัวอย่างการติดตั้ง และใช้งานโปรแกรมก่อนนะครับแล้วค่อยอธิบายภายหลัง การติดตั้ง

[root@ourintranet ~]# useradd piti [root@ourintranet ~]# passwd piti Changing password for user piti. New UNIX password:  BAD PASSWORD: it is based on a dictionary word Retype new UNIX password:  passwd: all authentication tokens updated successfully. [root@ourintranet ~]# smbpasswd ­a piti New SMB password: Retype new SMB password: startsmbfilepwent_internal: file /etc/samba/smbpasswd did not exist.  File successfully created. Added user piti. [root@ourintranet ~]# service smb start Starting SMB services:                                     [  OK  ] Starting NMB services:                                     [  OK  ] [root@ourintranet ~]# 

135

ทดลองการแชร์ไฟล์กลับมาที่วินโดว์ มาทดลองดูวา่ สิ่งที่เราทำาไปบน server ใช้ได้หรือเปล่า \\192.169.1.1

รูปที่ xx แสดง ก็จะขึ้น Username password

รูปที่ xx แสดง

136

ก็จะเห็น Folder piti ซึ่งเป็นโฮมไดเรกทอรีของ user piti นัน่ เอง

รูปที่ xx แสดง เมื่อเข้ามาดูใน Folder ก็จะเห็นไฟล์ต่างที่อยู่บนลีนุกซ์

รูปที่ xx แสดง

137

กลับมาที่ Server มาทดลองแช์ไดเรคทอรีโดยการแก้ไฟล์คอนฟิกของ Samba ดังนี้ [root@ourintranet ~]# mkdir /share [root@ourintranet ~]# chown piti.piti /share [root@ourintranet ~]# vi /etc/samba/smb.conf [ourshare] comment = Share Folder path = /share valid users = piti public = no writable = yes [root@ourintranet ~]# service smb restart Shutting down SMB services:                                [  OK  ] Shutting down NMB services:                                [  OK  ] Starting SMB services:                                     [  OK  ] Starting NMB services:                                     [  OK  ] [root@ourintranet ~]# 

รูปที่ xx

138

รูปที่ xx กรณีตัวอย่างนำามาใช้งาน มีบริษัทหนึ่ง มี 4 แผนกดังนี้ 1. ฝ่ายประชาสัมพันธ์ (pr) มีพนักงาน 1 คน คือ somsri 2. ฝ่ายเวบไซต์ (web) มีพนักงาน 2 คน คือ somchai, suchart 3. ฝ่ายขาย (sale) มีพนักงาน 1 คน คือ somwang 4. ฝ่าย (support) มีพนีกงาน 1 คน saismorn ต้องการใช้ Samba ทำาไฟล์ Server โดยมีไดเรคทอรีที่แชร์ ตามชื่อแผนกคือ pr, web, sale และ support โดยที่มี ผูจ้ ัดการ (manager) สามารถเข้าไปใช้งานได้ทุกไดเรกทอรี และไฟล์ที่ผู้จัดการสร้างขึ้นในทุกๆ ไดเรกทอรีลูกน้องทุกฝ่ายสามารถนำาไปใช้งานได้ มาดุขั้นตอนการสร้างไดเรคทอรี

139

การจัดการ User [root@ourintranet ~]# groupaad manager [root@ourintranet ~]# groupaad pr [root@ourintranet ~]# groupaad web [root@ourintranet ~]# groupadd sale [root@ourintranet ~]# groupadd support [root@ourintranet ~]# useradd ­g manager manager [root@ourintranet ~]# useradd ­g pr somsri [root@ourintranet ~]# useradd ­g web somchai [root@ourintranet ~]# useradd ­g web suchart [root@ourintranet ~]# useradd ­g sale somwang [root@ourintranet ~]# useradd ­g support saisamorn [root@ourintranet ~]# usermod ­G pr,web,sale,support manager [root@ourintranet ~]# passwd manager [root@ourintranet ~]# passwd somsri [root@ourintranet ~]# passwd somchai [root@ourintranet ~]# passwd suchart [root@ourintranet ~]# passwd somwang [root@ourintranet ~]# passwd saisamorn [root@ourintranet ~]# smbpasswd ­a manager [root@ourintranet ~]# smbpasswd ­a somsri [root@ourintranet ~]# smbpasswd ­a somchai [root@ourintranet ~]# smbpasswd ­a suchart [root@ourintranet ~]# smbpasswd ­a somwang [root@ourintranet ~]# smbpasswd ­a saisamorn 

การจัดการไดเรกทอรี [root@ourintranet ~]# mkdir /depts [root@ourintranet ~]# mkdir ­p /depts/{pr,web,sale,support} [root@ourintranet ~]# groupadd pr [root@ourintranet ~]# groupadd web [root@ourintranet ~]# groupadd sale [root@ourintranet ~]# groupadd support [root@ourintranet ~]# chgrp pr /depts/pr [root@ourintranet ~]# chgrp web /depts/web [root@ourintranet ~]# chgrp sale /depts/sale [root@ourintranet ~]# chgrp support /depts/support [root@ourintranet ~]# chmod 770 /depts/pr [root@ourintranet ~]# chmod 770 /depts/web [root@ourintranet ~]# chmod 770 /depts/sale [root@ourintranet ~]# chmod 770 /depts/support [root@ourintranet ~]# chmod  g+s  /depts/*

140

ให้แก้ไฟล์ /etc/samba/smb.conf เพิ่มบรรทัดเหล่านี้เข้าไป [pr]    comment =  Share for PR     path = /depts/pr    valid users = manager somsri    public = no    writable = yes [web]    comment =  Share for  Web     path = /depts/web    valid users = manager somchai suchat    public = no    writable = yes [sale]    comment =  Share for Sale     path = /depts/sale    valid users = manager somwang    public = no    writable = yes [support]    comment =  Share for Support     path = /depts/support    valid users =  manager saisamorn    public = no    writable = yes

ไม่ให้ user ใช้งานโฮมไดเรกทอรี comment บรรทัดเหล่านี้  #[homes]   ; comment = Home Directories   ; browseable = no   ; writable = yes [root@ourintranet ~]# /etc/init.d/smb restart Shutting down SMB services:                                [  OK  ] Shutting down NMB services:                                [  OK  ] Starting SMB services:                                     [  OK  ] Starting NMB services:                                     [  OK  ] [root@ourintranet ~]# 

141

ทดลองใช้งานโดยใช้ user manager Login เข้ามา

รูปที่ xx

User manager จะสามารถเข้าใช้งานได้ทุก Folder

รูปที่ xx

142

รูปที่ xx ทดลองสร้างไฟล์ใหม่ใน folder pr และ folder อืน่ ๆ ก็สามารถทำาได้

143

คำาอธิบายเกี่ยวคำาไฟล์คอนฟิกของ Samba ไฟล์คอนฟิกของ Samba มี 2 ส่วนหลัก คือ ส่วน Global กับ ส่วนที่แชร์ ส่วน Global เป็นคอนฟิกรวมของระบบทั้งหมด ขึน้ ต้นด้วยบรรทัด [global] เมื่อจบส่วน global ก็จเป็นส่วนแชร์ คือการแชร์ไดเรคทอรี ซึ่งจะมีค่าปกติมาคือ [home] และ [printers] ถ้าเราต้องการแชร์ไดเรกทอรีอื่นเพิ่มเข้าไปได้ ก็เริ่มต้นด้วย [xxx] โดยที่ xxx คือชื่อที่ต้องการให้แสดง คอมเมนท์ บรรทัดที่ขึ้นต้นด้วย ; (semi-colon) และ # (hash) ถือว่าเป็นคอมเมนท์ คือจะไม่มีการอ่านค่าคอนฟิก ในบรรทัดนั้นๆ # ใช้สำาหรับคอมเมนท์ทั่วไปที่เป็นคำาอธิบาย ช่วยจำา ; ใช้สำาหรับคอมเมนท์ บรรทัดที่เป็นการแชร์ เช่น # A private directory, usable only by fred. Note that fred requires  write

# access to the directory. ;[fredsdir] ;   comment = Fred's Service ;   path = /usr/somewhere/private ;   valid users = fred ;   public = no ;   writable = yes ;   printable = no

แต่ในความเป็นจริงจะใช้อันไหนก็มีผลเหมือนกัน การอนุญาตให้เครื่องลูกข่ายเข้ามาใช้งาน การอนุญาตให้เครื่องลูกข่ายเข้ามาใช้งานไฟล์และเครื่องพิมพ์บน Samba นัน้ มี 4 แบบ สามารถทำาได้โดยการทำาผ่านออปชัน security security = share การเข้าใช้งานผู้ใช้งานสามารถเข้าใช้งานโดยไม่ต้องรู้ user มีแค่รหัสผ่านก็เข้าใช้งานได้ security = user การเข้าใช้งานผู้ใช้งานต้องใช้ username และ password ซึ่งค่าปกติของ samba จะเป็นค่านี้ security = server ทำางานเหมือน security = user แต่ในการเข้าใช้งานจะไปเชค username และ password จาก Samba server เครื่องอื่น เป็นการรักษาความปลอดภัยเพิ่มขึ้นไปอีก security = domain Samba สามารถเป็นสมาชิกของ Windows Domain ได้ ดังนัน้ เมื่อผู้ใช้ทำาการยืนยันตัวตนกับ primary domain controller (PDC) แล้ว ก็จะสามารถเข้าใช้งานแชร์ที่อยู่บน Samba server ได้ ถ้าหากมีการระบุออปชั่น Public = yes หรือ Guest ok = yes ใน /etc/samba/smbd.conf แล้ว และไม่ว่าจะระบุ security เป็นออปชันใด Samba ก็จะไม่ทำาการตรวจสอบรหัสผ่านที่ส่งมาจากไคลเอ็นต์ (client) แต่อย่างใด

144

รหัสผ่าน การที่ผู้ใช้จะสามารถเข้าใช้งานไดเรกทอรีหรือเครื่องพิมพ์ที่แชร์ไว้ได้นั้น ผูใ้ ช้จะต้องมี user อยู่ลีนุกซ์ก่อน และต้องเป็น user ที่ได้ set password แล้ว ออปชันที่เกี่ยวกับ password คือ encrypt passwords = yes smb passwd file = /etc/samba/smbpasswd ถ้า encrypt passwords = yes เวลา user login เข้ามาจะมีการตรวจสอบรหัสผ่านจาก /etc/samba/smbpasswd ในการเพิ่ม user เข้าไปใน /etc/samba/smbpasswd โดยใช้คำาสั่ง smbpasswd -a user เช่น smbpasswd somchai ถ้าต้องการเปลี่ยน password ให้กับ user ใช้คำาสั่ง smbpasswd user เช่น smbpasswd somchai ถ้าหากต้องการดูวิธีการใช้งานของ smbpasswd smbpasswd –help ส่วน encrypt passwords = no เป็นการเชค password จาก /etc/pasword ซึ่งจะไม่พูดถึงในรายละเอียดและไม่ควรใช้ ออปชันนี้ครับ Networking Options ออปชันที่เกี่ยวกับ Network เป็นการอนุญาตให้ลูกข่าย IP Address ต่างๆ เข้ามาใช้งาน hosts allow = 192.168.1. hosts deny = 192.168.1.226/255.255.255.255 hosts deny = ALL EXCEPT 192.168.1. 192.168.1. (หนึ่งเก้าสองจุดหนึ่งหกแปดจุดหนึ่งจุด) เป็นลักษณะ การเขียนของ Samba ซึ่งมีความหมายเดียวกับ 192.168.1. 0/255.255.255.0 หรือ 192.168.1.0/24 ซึ่งมีความหมายว่าอนุญาตให้ IP 192.168.1.1-192.168.1.254 อนุญาตให้เข้าใช้งานได้ อย่างไรก็ตาม Samba มีกฎในการนำาค่า configuration ของ host allow, hosts deny ไปใช้งานดังนี้ 1. ถ้าไม่มีการระบุ hosts allow หรือ hosts deny ตัว Samba จะถือว่าเป็นการอนุญาตให้ใช้งานได้อย่างอิสระ (เสมือน hosts allow = ALL) 2. ถ้ามีการระบุ hosts allow, hosts deny ใน [global] ค่าดังกล่าวจะมีผลกับทุกๆ แชร์ แม้ว่าจะมีการระบุ hosts allow, deny ในแต่ละแชร์ซึ่งการระบุในแต่ละแชร์ดังกล่าวจะถือว่าไม่มีผลแต่อย่างใด 3. ถ้ามีการระบุ hosts allow แต่ไม่ได้ระบุ hosts deny จะถือว่า ค่าที่นอกเหนือจากที่ระบุใน hosts allow จะมีสถานะเป็น deny โดยอัตโนมัติ 4. ในทำานองเดียวกัน ถ้ามีการระบุ hosts deny แต่ไม่ได้ระบุ hosts allow จะถือว่า ค่าที่นอกเหนือจากที่ระบุใน hosts deny จะมีสถานะเป็น allow โดยอัตโนมัติ 5. ถ้ามีค่า เช่น ip address หรือ subnet ถูกระบุในทั้ง hosts allow และใน hosts deny

145

จะถือว่าค่าดังกล่าวมีสถานะเป็น deny

File Permissions and Attributes •



ออปชัน create mask ใช้กำาหนดค่า default permission สูงสุด สำาหรับไฟล์ที่สร้างขึ้นมาใหม่ เช่น create mask = 0640 ออปชัน directory mask ใช้กำาหนดค่า default permission สูงสุด สำาหรับไดเรกทอรีที่สร้างขึ้นมาใหม่ เช่น directory mask = 750

การเข้าถึงไฟล์และไดเรกแชร์ การเข้าถึงไฟล์และไดเรกทอรีที่แชร์ นัน้ นอกจากออปชันบน Samba แล้ว ยังขึน้ กับ permission ของไฟล์และไดเรกทอรีด้วย บางครั้งถึงแม้ว่า option บน Samba บอกว่าอนุญาตให้เขียนได้ แต่ permission ของไฟล์ไม่อนุญาตให้เขียนก็เขียนไม่ได้ ผู้ดูแลระบบควรจำากัดการเข้าถึงแชร์ใดๆ ให้ใช้งานได้เฉพาะผู้ที่สมควรได้รับสิทธิ์เท่านั้น โดยมีออปชันที่เกี่ยวข้องดังนี้ valid users = somchai suchart @web ระบุให้เฉพาะผู้ใช้ที่มีชื่อในรายการนี้เท่านั้น จึงจะสามารถเข้าถึงดิสก์ที่แชร์ไว้ได้ (ใช้ @ สำาหรับทั้ง group) ** หากรายชื่อผู้ใช้ที่กำาหนดไว้ใน valid users ไปปรากฏซำ้ากับรายชื่อใน invalid users ก็จะถือว่าผู้ใช้รายนั้นถูกจัดในกลุ่ม invalid users invalid users = lertsak @guest แสดงรายชื่อผู้ใช้ที่ไม่มีสิทธิ์เข้าใช้งานแชร์ writable = yes writeable = yes write ok = yes read only = no ออปชันทั้งสี่แบบด้านบนนี้ให้ผลลัพธ์เหมือนกัน คืออนุญาตให้ผู้ใช้สามารถสร้างไฟล์หรือไดเร็กทอรีขึ้นมาใหม่ได้ read list = choawalit kitisak แสดงรายชื่อผู้ใช้ที่มีสิทธิ์ใช้งานแชร์แบบอ่านเท่านั้น ไม่สามารถทำาการแก้ไขใดๆ ได้ หากว่าผู้ใช้ใน read list มีชื่อใน list อืน่ เช่น write list, read only, writeable ก็จะถือว่าผู้ใช้นั้นมีสิทธิ์เป็น read only เท่านั้น write list = lersak, phuwadon, siriwan

146

เป็นการให้สิทธิ์ write แก่ผู้ใช้ที่มีชื่อในรายการนี้ แม้ว่าจะมีการระบุว่า read only = yes ก็ตาม public = no guest ok = no ออปชัน public และ guest ok สามารถใช้แทนกันได้ ซึ่งหากกำาหนดค่าเป็น yes ก็จะทำาให้สามารถเข้าใช้งานดิสก์ที่แชร์ไว้โดยไม่ต้องล็อกอิน hosts equiv = เป็นออปชันที่เป็นอันตรายอย่างยิ่ง ผู้ดูแลระบบควรตรวจสอบให้แน่ใจว่าไม่มีการระบุออปชันนี้ในไฟล์ /etc/samba/smb.conf เป็นอันขาด เพราะในออปชัน hosts equiv ดังกล่าวจะกำาหนดรายชื่อผู้ใช้และโฮสต์ที่สามารถเข้าใช้งานดิสก์ที่แชร์ไว้โด ยไม่ต้องใช้รหัสผ่าน (คล้ายกับไฟล์ hosts.equiv ของ Unix)

การใช้งาน smbclient smbclient เป็นโปแกรม client แบบคำาสั่งที่ใช้งานบนลีนุกซ์ รูปแบบการใช้งาน smbclient //ช่ ือเคร่ ืองหรือ IP Addres/ช่ ือท่ีแชร์ ­U username%password root@sothorn:~# smbclient //192.168.1.1/pr ­U manager%password Domain=[OURINTRANET] OS=[Unix] Server=[Samba 3.0.10­1.4E] smb: \> ls   .                                   D        0  Sat Oct 28 13:53:30 2006   ..                                  D        0  Thu Oct 26 15:43:34 2006   new_file_in_pr.txt                  A        0  Sat Oct 28 13:52:55 2006                 63002 blocks of size 131072. 39053 blocks available smb: \> ? ?              altname        archive        blocksize      cancel          case_sensitive cd             chmod          chown          del             dir            du             exit           get            getfacl         hardlink       help           history        lcd            link            lowercase      ls             mask           md             mget            mkdir          more           mput           newer          open            print          prompt         put            pwd            q               queue          quit           rd             recurse        reget           rename         reput          rm             rmdir          setmode         stat           symlink        tar            tarmode        translate       volume         vuid           logon          listconnect    showconnect     !               smb: \> 

147

Samba Linux Client บนลีนุกซ์แบบการฟิก สำาหรับ Ubuntu ให้ไปที่ เมนู ที่หลักๆ -->เซิร์ฟเวอร์ในเครือข่าย

รูปที่ XX ดับเบิ้ลคลิ๊กเครือข่ายวินโดว์

รูปที่ xx

148

ดับเบิ้ลคลิ๊กที่ mygroup ซึ่งมาจากไฟล์คอนฟิกของ Samba ในส่วน [global] นัน่ เอง workgroup = MYGROUP ซึ่งเป็นชื่อของ workgroup นัน่ เอง

รูปที่ xx ดับเบิ้ลคลิ๊กที่ mygroup ก็จะพบกับชื่อของ เครื่องที่เปิด Server Samba อยู่ในที่นี่คือ ourintranet ถ้าเรามีเครื่องวินโดว์ที่อยู่ใน workgroup เดียวกันก็จะเห็นมีชื่อเครื่องอยู่เช่นเดียวกัน

รูปที่ xx

149

หลังจากที่ดับเบิ้ลคลิ๊กที่ชื่อเครื่อง ourintranet เข้ามาแล้วเราก็จะเห็นไดเรกทอรีที่เราแชร์เอาไว้

รูปที่ xx ดัลเบิ้ลคลิ๊กที่ ไอคอน sale แล้ว login ด้วย user manager

รูปที่ xx ด้วยสิทธิของ mamager ก็สามารถเข้าไปเขียนไฟล์ได้

รูปที่ xx

150

View more...

Comments

Copyright © 2017 DATENPDF Inc.