ส่วนที่ 5 : บทเรียน
Linux
HOW TO LINUX
Linux คือระบบปฏิบัติการ
ที่เป็นคู่แข่งของ Microsoft Windows และทั้งโลกกำลังจับตา
ประเทศจีน
ประกาศให้ Linux เป็นระบบปฏิบัติการแห่งชาติไปแล้ว |
|
ทีมงาน isinthai.com เป็นเพียงมือสมัครเล่น เกี่ยวกับ Linux ต้องการทำ
Server เป็นกรณีศึกษา โดยหวังว่า นักศึกษา กลุ่มทีมงานเอง และผู้สนใจ
ได้เข้ามาหาข้อมูล พบคำตอบที่ต้องการ รู้วิธีแก้ปัญหา และมีความชำนาญมากขึ้น
พร้อมสามารถให้คำปรึกษาผู้อื่น ต่อไปได้ พวกเราต้องการเห็นคนไทย ใช้บริการ
server ในไทย ในองค์กรของตน มากกว่าต้องไปพึ่ง server นอกประเทศ ทั้ง ๆ
ที่องค์กรต่าง ๆ มีศักยภาพ มีบุคลากร พอที่จะจัดหาอุปกรณ์ที่ดี มาให้คนไทยใช้
.. isinthai.com คือความพยายามหนึ่ง ที่จะทำให้ทุกองค์กรมี host
อย่างที่เรามี
|
How to linux (Case study จาก Redhat 6.2 ไปถึง Redhat 9.0)
บทที่ 1 : คำสั่งสำหรับผู้ใช้พื้นฐาน (Basic user command)
1.1 คำสั่ง ls : : : แสดงรายชื่อแฟ้มในห้องปัจจุบัน หรือห้องอื่น ๆ ที่ต้องการ
1.2 คำสั่ง chmod : : : เปลี่ยนสถานะของแฟ้มเช่น Read Write eXecute
1.3 คำสั่ง man : : : แสดงรายละเอียดของคำสั่ง (Manual)
1.4 คำสั่ง mkdir, rmdir, cd : : : คำสั่งเกี่ยวกับ Directory หรือ Folder เพื่อสร้าง หรือลบ
1.5 คำสั่ง pico : : : editor ยอดฮิตใน Linux ที่ต้องมากับ Pine เป็น Text mode ที่ใช้ง่ายที่สุด
1.6 คำสั่ง emacs : : : editor ยอดฮิตใน Linux ใช้ยากกว่า pico นิดหน่อย
1.7 คำสั่ง vi : : : editor ยอดฮิตใน Linux ที่ใช้ยากที่สุด
1.8 คำสั่ง id, finger, who, w : : : โปรแกรมตรวจสอบ username ของตนเอง
1.9 คำสั่ง cat : : : แสดงข้อมูลในแฟ้มเหมือนคำสั่ง type ในระบบ DOS
1.10 คำสั่ง ifconfig : : : ดู IP หรือเพิ่ม IP เข้าไปใน linux server
1.11 คำสั่ง netstat : : : แสดงสถานะของเครือข่าย
1.12 คำสั่ง service : : : แสดงสถานะโปรแกรมที่เปิดให้บริการ
1.13 คำสั่ง xinetd : : : แสดงบริการที่เปิดใต้โปรแกรม xinetd
1.14 คำสั่ง whereis : : : ค้นหาแฟ้มที่ต้องการว่าอยู่ที่ห้องใด
1.15 คำสั่ง cp, rm, mv : : : จัดการแฟ้มเช่น คัดลอก ลบ และย้าย
1.16 คำสั่ง ping : : : ตรวจสอบ ip และการเชื่อมต่อ internet
1.17 คำสั่ง env : : : แสดงค่า environment ปัจจุบัน
1.18 คำสั่ง lynx : : : Text browser ที่ใช้งานง่าย ใช้ดู source หรือ download ได้
1.19 คำสั่ง nslookup : : : แสดงข้อมูลเกี่ยวกับ name server จาก ip หรือ domain name
1.20 คำสั่ง tail : : : แสดงส่วนท้ายของแฟ้มที่มีขนาดใหญ่ ต้องข้ามกับ cat ที่ดูตั้งแต่เริ่มแฟ้ม
1.21 คำสั่ง telnet : : : ใช้ติดต่อเข้า server ต่าง ๆ ตาม port ที่ต้องการ
.
บทที่ 2 : คำสั่งสำหรับผู้ใช้ระดับกลาง (Intermediate user command) เพื่อต้องการตรวจสอบระบบ
2.1 คำสั่ง df : : : แสดง partition ของ linux พร้อมขนาดที่ใช้ไป
2.2 คำสั่ง du : : : แสดงพื้นที่ใช้งานในแต่ละ Directory
2.3 คำสั่ง ps : : : แสดง process ที่กำลังทำงานอยู่ทั้งของเครื่อง และตนเอง
2.4 คำสั่ง kill : : : ยกเลิก process ที่ทำงานอยู่
2.5 คำสั่ง find : : : ค้นหาแฟ้มที่ต้องการภายในทุก ๆ directory ได้
2.6 คำสั่ง gzip : : : คลายการบีบอัด หรือแตกแฟ้มประเภท .gz
2.7 คำสั่ง tar : : : คลายการบีบอัด หรือแตกแฟ้มประเภท .tar
2.8 คำสั่ง last : : : แสดงรายชื่อผู้ใช้งานระบบปัจจุบันไปถึงอดีต
2.9 คำสั่ง grep : : : เลือกข้อความที่ต้องการภายในแต่ละบรรทัด
2.10 คำสั่ง date, hwclock : : : ใช้กำหนด หรือแสดงเวลาปัจจุบัน
2.11 คำสั่ง top : : : แสดง process ที่ทำงานในปัจจุบัน พร้อม refresh ตลอดเวลา
2.12 คำสั่ง ntsysv และ setup : : : กำหนดบริการที่ต้องการเปิด หรือปิด เช่น httpd หรือ vsftp เป็นต้น
2.13 คำสั่ง route : : : ใช้กำหนด แสดง ตารางเส้นทาง
2.14 คำสั่ง shutdown, reboot : : : ใช้ปิดเครื่อง หรือ ปิดและเปิดเครื่องใหม่อย่างถูกวิธี
2.15 คำสั่ง runlevel : : : คู่กับแฟ้ม /etc/inittab
2.16 คำสั่ง fsck : : : ซ่อมแซมระบบแฟ้มใน linux
2.17 คำสั่ง chown, chgrp : : : เปลี่ยนเจ้าของ หรือเปลี่ยนกลุ่ม
2.18 คำสั่ง chkconfig : : : กำหนด หรือแสดง บริการที่สั่งประมวลผลใน level ต่าง ๆ ขณะเปิดเครื่อง
2.19 คำสั่ง mount, umount : : : สั่งเชื่อมต่ออุปกรณ์ หรือ partition เช่น Diskette หรือ Handy drive เป็นต้น
2.20 คำสั่ง mkbootdisk : : : สร้างแผ่น boot disk เพื่อใช้ boot ระบบ linux ขึ้นมาภายหลัง
2.21 คำสั่ง traceroute : : : แสดงเลข ip ของเครื่องที่ถูกเชื่อมต่อ ไปยังปลายทางที่ต้องการ
2.22 คำสั่ง rpm : : : ใช้ตรวจสอบ เพิ่ม หรือลบ package ของระบบ linux เกือบทั้งหมด
2.23 คำสั่ง su : : : ขอเปลี่ยนตนเองเป็น Super user เพื่อใช้สิทธิ์สูงสุดในการบริหารระบบ ที่ผู้ใช้ปกติทำไม่ได้
2.24 คำสั่ง useradd : : : เพิ่มผู้ใช้รายใหม่เข้าไปในระบบ
2.25 คำสั่ง userdel : : : ลบผู้ใช้รายเดิม ออกจากระบบ
2.26 คำสั่ง usermod : : : แก้ไขข้อมูลของผู้ใช้ได้
2.27 คำสั่ง crontab : : : ตั้งเวลาสั่งงานคอมพิวเตอร์
2.28 คำสั่ง lspci : : : ตรวจสอบอุปกรณ์ที่เชื่อมต่อภายในเครื่อง
2.29 คำสั่ง nmap : : : ตรวจสอบเครือข่ายแบบกวาดทั้งในเครื่อง และ class C
.
บทที่ 3 : บทเรียน PERL (Perl programming)
บทที่ 4 : บทเรียน PHP
บทที่ 5 : บทเรียน MYSQL
บทที่ 6 : แนะนำ Server ชั้นยอด
บทที่ 7 : การใช้ application
บทที่ 8 : หน้าที่ของแฟ้ม และระบบ directory ที่สำคัญ
บทที่ 9 : คำสั่งสำหรับ บริหารระบบ โดย Super user
1.1 คำสั่ง ls
: ใช้แสดงรายชื่อแฟ้มทั้งหมดใน home directory
ทุกท่านที่มี account ใน linux จะมี home directory ของตนเอง
เพื่อใช้เก็บแฟ้มต่าง ๆ ภายใต้ระบบ linux
เมื่อต้องการทราบว่ามีแฟ้มอะไรที่เก็บไว้บ้าง สามารถใช้คำสั่ง ls ได้
และสามารถกำหนด parameter ได้หลายตัว เช่น -al --sort เป็นต้น
ตัวอย่างคำสั่ง และการใช้งาน
ls -alt :: เพื่อแสดงรายชื่อแฟ้มทั้งหมด และจัดเรียงตามเวลา
ให้ลองลบอักษรออกทีละตัวจาก alt ดูนะครับ
ls
-alt | more :: เพื่อแสดงรายชื่อแฟ้มทั้งหมด แต่หยุดทีละหน้า
เมื่อมีจำนวนแฟ้มเกินที่จะแสดงได้ ใน 1 หน้า
ls -al --sort=time | more :: แสดงรายชื่อแฟ้มเรียงตามเวลา
แยกทีละหน้า โดยละเอียด
ls -R | more
:: แสดงรายชื่อในทุก directory ในห้องปัจจุบัน
ถ้าสังเกตนะครับ แฟ้มที่มี
. หน้าชื่อแฟ้ม จะหมายถึงแฟ้มที่ซ่อนไว้ ถ้าใช้คำสั่ง ls หรือ ls -l
จะไม่เห็นแฟ้มเหล่านี้
ถ้ามีอักษร D ที่ Column แรก ในตอนแสดงชื่อแฟ้ม
ด้วยคำสั่ง ls -al ก็จะหมายถึง directory ไม่ใช่แฟ้มธรรมดา
1.2 คำสั่ง chmod
: ใช้เปลี่ยนสิทธิ์ของแฟ้ม เจ้าของ(Owner), คนในกลุ่ม(Group),
คนอื่น(Other) สามารถทำอะไรได้บ้าง
เมื่อใช้คำสั่ง ls ท่านจะเห็นตัวอักษร RWXRWXRWX หรือทำนองนี้หน้าชื่อแฟ้ม ซึ่งเป็นการกำหนด
สิทธิ์ของแต่ละแฟ้ม ว่า อ่านได้ เขียนได้ และประมวลผลได้ โดยแยกเป็นส่วนของ เจ้าของ
กลุ่ม คนอื่น ซึ่งเป็นคำสั่งที่จำเป็นมากสำหรับ webmaster ในการดูแลระบบ
และท่านที่ต้องการเขียน CGI จะต้องรู้คำสั่งนี้ เพราะ เมื่อส่งแฟ้ม
CGI เข้าไปใน server และต้องการให้คนทั่วไปเข้ามาใช้บริการ
โปรแกรมของตนที่เขียนขึ้นด้วย Perl จะไม่สามารถใช้ได้ ถ้าไม่กำหนดให้คนอื่น
สามารถประมวลผลได้ (x) จึงจำเป็นต้องใช้คำสั่ง เช่น chmod 755
hello.pl หรือ chmod 775 fileforyou.pl หรือ chmod +x test.pl
เป็นต้น
ในแต่ละกลุ่มจะมีการกำหนดสิทธิได้ 3
แบบ ตัวอักษร R มาจาก Read หมายถึง อ่าน ตัวอักษร W มาจาก
Write หมายถึง เขียน ตัวอักษร X มาจาก Execute หมายถึง
ประมวลผล ตัวอย่างเช่น --- : ไม่มีสิทธิอะไรเลย (เลขที่ใช้คือ 0) --X : ประมวลผลได้อย่างเดียว (เลขที่ใช้คือ
1) R-- : อ่านได้อย่างเดียว
(เลขที่ใช้คือ 4) RW- : อ่าน
และเขียนได้ (เลขที่ใช้คือ 6) R-X
: อ่าน และประมวลผลได้ (เลขที่ใช้คือ 5) RWX : อ่าน เขียน และประมวลผลได้ (เลขที่ใช้คือ 7) |
ความหมายของ RWXRWXRWX จะเห็นว่ามีอักษร 9
ตัว 3 ตัวแรกหมายถึง เจ้าของ 3 ตัวที่สองหมายถึง
กลุ่ม 3 ตัวที่สามหมายถึง คนอื่น ตัวอย่างเช่น
RWX------ :
เจ้าของเท่านั้นที่มีสิทธิทุกอย่าง (เลขที่ใช้คือ 700) RWXRWX--- : เจ้าของ
และสามาชิกกลุ่มเดียวกันมีสิทธิทุกอย่าง (เลขที่ใช้คือ 770) RWXR-XR-X : เจ้าของทำได้หมด
ส่วนกลุ่มและคนอื่นอ่านและประมวลผลได้ (เลขที่ใช้คือ 755) R--R--R-- : ทุกคนอ่านได้อย่างเดียว
(เลขที่ใช้คือ 444) |
ตัวอย่างคำสั่ง และการใช้งาน
chmod 777 index.php :: ทำให้แฟ้มนี้ อ่าน เขียน และประมวลผล
โดยทั้ง 3 กลุ่ม
chmod 755 * -Rf ::
ทำให้ทุกแฟ้ม ทุก direcroty ในห้องปัจจุบัน เปลี่ยนตามที่กำหนด
1.3 คำสั่ง man
: เป็นคำสั่งที่สำคัญมาก เพราะจะช่วยให้อธิบายคำสั่งต่าง ๆ ให้ท่านได้ (Manual)
ผมเชื่อว่าทุกคนที่ใช้ unix หรือ linux ต้องเคยใช้คำสั่งนี้มาก่อน
เพราะจะเป็นคำสั่งที่ช่วยอธิบายหน้าที่ของคำสั่ง พร้อมกับแสดง parameter
ที่สามารถใช้ได้ทั้งหมดของคำสั่งนั้น และยังมีตัวอย่างการใช้
และคำสั่งที่เกี่ยวข้องอีก ทำให้ประหยัดเวลาในการค้นเอกสารได้อย่างมาก
บางท่านอาจศึกษา linux ด้วยการอ่านจาก man อย่างเดียวเลยก็มีนะครับ
โดยไม่ต้องไปหาซื้อหนังสือที่ไหนมาอ่านก็ทำได้
ตัวอย่างคำสั่ง และการใช้งาน
man man :: เพื่ออธิบายคำสั่ง man เอง
ว่าตัวคำสั่งนี้ใช้อย่างไร
man ls ::
เพื่ออธิบายคำสั่ง ls ว่าใช้อย่างไร
man
useradd :: เพื่ออธิบายคำสั่ง useradd ว่าใช้อย่างไร
1.4 คำสั่ง mkdir, rmdir, cd
: งานต่าง ๆ เกี่ยวกับ directory
ผู้ใช้คอมพิวเตอร์ที่ใช้ dos มาก่อนต้องคุ้นเคยกับ directory แน่นอน
สำหรับคำสั่งเกี่ยวกับ directory ในที่นี้มี 3 คำสั่ง
mkdir หมายถึง สร้าง directory (Make directory)
rm หมายถึง ลบ directory (Remove directory)
และคำสั่งนี้ยังใช้ลบแฟ้มตามปกติได้อีกด้วย
cd หมายถึงเปลี่ยน directory (Change directory)
ตัวอย่างคำสั่ง และการใช้งาน
mkdir hello :: สร้าง directory ชื่อ hello ในห้องปัจจุบัน
rmdir hello.htm :: จะลบแฟ้มชื่อ
hello.htm
cd / :: ย้าย directory
ไปยัง root หรือห้องนอกสุด
cd .. ::
ย้าย directory ออกไปข้างบน 1 ระดับ
cd
~/x :: เข้าไปยังห้อง x ของ home directory เช่น /home/thaiall/x ถ้า home
directory คือ /home/thaiall
1.5 โปรแกรม pico
: เป็น editor ที่ใช้สำหรับแก้ไขแฟ้มแบบ text คล้าย vi แต่มีประสิทธิภาพกว่ามาก
เพียงแต่พิมพ์คำว่า pico แล้ว enter ก็ใช้งานได้เลย การจะจัดเก็บ
หรืองานต่าง ๆ ที่มีบริการไว้มากมาย ท่านสามารถอ่านได้จากเมนูด้านล่าง
ซึ่งเครือ่งหมาย ^ หมายถึงการกดปุ่ม Ctrl ประกอบอักษรต่าง ๆ นั่นเอง
ผมคิดว่าท่านน่าจะพออ่านรู้เรื่อง หรือจะพิมพ์ว่า pico xx
ก็จะเป็นการสร้างแฟ้มชื่อ xx ให้ทันที แต่หากมีแล้ว ก็จะเปิดแฟ้ม xx
มาให้แก้ไขในโปรแกรม xx เมื่อท่านต้องการเลิกก็ทำได้โดยกดปุ่ม Ctrl-X
เป็นอันเรียบร้อย หากท่านใดเคยใช้ vi เมื่อลองใช้โปรแกรมนี้จะติดใจอย่างแน่นอน
เพราะใช้งานได้ง่ายกว่า หลายเท่านัก
หลายครั้ง ที่พิมพ์คำว่า pico แล้วไม่มีในเครื่อง ก็เพราะไม่ได้ลงโปรแกรม pine
เมื่อต้องการใช้ pico ก็ต้องติดตั้งโปรแกรม pine เข้าไปในเครื่อง จากแผ่น CD
ด้วยคำสั่ง rpm -i pine*
1.6 โปรแกรม emacs
: เป็น editor ที่ใช้สำหรับแก้ไขแฟ้มแบบ text คล้าย vi แต่มีประสิทธิภาพกว่ามาก
ทำงานได้คล้าย ๆ กับ pico แต่หลายคนบอกว่า ตัวนี้ทำงานได้ดีกว่า แต่ผมว่า pico
ใช้งานได้ง่ายกว่ากันเยอะเลย เพราะเห็นเมนูด้านล่าง แต่ของ emacs จะใช้ ctrl-h
ดูส่วนช่วยเหลือ และกด ctrl-x + ctrl-c จึงจะออกจากโปรแกรม
อาจเป็นเพราะผมใช้ไม่ชำนาญมังครับ ในเมื่อผมใช้ pico เป็น editor
ผมคงไม่จำเป็นต้องศึกษา emacs เพิ่มเติมแล้ว
ยกเว้นว่าสักวันอาจมีเหตุจำเป็นที่ความสามารถของ pico ให้ไม่ได้ แต่ emacs
ให้ได้ก็เป็นได้
Welcome to GNU Emacs, one component of a Linux-based GNU system.
Get help C-h (Hold down CTRL and press h)
Undo changes C-x u Exit Emacs C-x C-c
Get a tutorial C-h t Use Info to read docs C-h i
Ordering manuals C-h RET
Activate menubar F10 or ESC ` or M-`
(`C-' means use the CTRL key. `M-' means use the Meta (or Alt) key.
If you have no Meta key, you may instead type ESC followed by the character.)
1.7 โปรแกรม vi
: เป็น editor ที่ใช้สำหรับแก้ไขแฟ้มแบบ text
Text editor ที่ใช้งานได้ยาก แต่มีใน linux ทุกรุ่น ในบางเครื่องไม่มี pico
เพราะไม่ได้ติดตั้ง mail หรือ pine จึงจำเป็นต้องใช้โปรแกรม vi
สำหรับแก้ไขข้อมูลในแฟ้มต่าง ๆ ของ linux เช่นการใช้คำสั่ง man
ก็คือการใช้ความสามารถของ vi ในการนำข้อมูลมาแสดงผลนั่นเอง
ตัวอย่างคำสั่ง และการใช้งาน
esc กลับไปยังโหมดคำสั่ง
enter ย้ายไปยังต้นบรรทัดของบรรทัดถัดไป
i ใส่ข้อความก่อนเคอร์เซอร์
a ใส่ข้อความหลังเคอร์เซอร์
A ใส่ข้อความที่ท้ายบรรทัดปัจจุบัน
dd ลบบรรทัดปัจจุบันทั้งบรรทัด
x ลบอักษร 1 ตัวอักษร
cw เปลี่ยนข้อความ
:w บันทึกแฟ้ม
:q! ออกโดยไม่ เปลี่ยนแปลงใด ๆ
:wq บันทึกแฟ้ม และออกจากโปรแกรม vi
1.8 คำสั่ง id, finger, who, w
: ทุกคำสั่งข้างต้นใช้สำหรับตรวจสอบผู้ใช้ แต่จะให้รายละเอียดต่างกันไป
ตัวอย่างคำสั่ง และการใช้งาน
id uname :: ใช้ตรวจดูว่ามี account uname นี้ในระบบหรือไม่
ให้ผลสั้น
finger uname ::
ใช้ตรวจดูว่ามี account uname นี้ในระบบหรือไม่ ให้ผลละเอียด ทั้ง last login
หรือ email ฉบับล่าสุด
finger
@www.isinthai.com :: ใช้แสดงรายชื่อทุกคนในระบบที่กำลัง login อยู่ในระบบ
ใช้ได้กับทุกระบบที่ไม่ปิดบริการนี้
who |grep
thai :: ใช้แสดงรายชื่อทุกคนในระบบ แต่ใช้นอกระบบตนเองไม่ได้
และเลือกเฉพาะบรรทัดที่มีอักษร thai
w
:: ใช้แสดงรายชื่อทุกคนในระบบ แต่ใช้นอกระบบตนเองไม่ได้
1.9 คำสั่ง cat
: แสดงข้อมูลในแฟ้ม คล้ายคำสั่ง type ในระบบ DOS
ตัวอย่างคำสั่ง และการใช้งาน
cat /etc/passwd :: แสดงข้อมูลในแฟ้ม /etc/passwd
cat /etc/passwd | more :: แสดงข้อมูลในแฟ้ม
/etc/passwd ทีละหน้า
ตัวอย่างข้อมูลในแฟ้ม passwd
suwit:x:500:500:Suwit:/home/suwit:/bin/bash
prasert:x:501:501::/home/prasert:/bin/bash
bcom101:x:502:502::/home/bcom302:/bin/bash
1.10 คำสั่ง ifconfig
: แสดงข้อมูลเกี่ยวกับ Network interface และแสดง ip ต่าง ๆ
ที่มีการเพิ่มเข้าไปใน server ได้
1.11 คำสั่ง netstat
: แสดงสถานะของเครือข่ายว่ามีโปรแกรมใดเปิดให้บริการ
1.12 คำสั่ง service
: ดูสถานะของบริการต่าง ๆ ว่าถูกเปิดหรือ running อยู่หรือไม่
1.13 คำสั่ง xinetd
: ดูบริการภายใน xinetd ว่าอะไรเปิดอยู่บ้าง ทำให้เข้าไปเปิดที่ห้อง
/etc/xinetd.d แล้วเลือกเปิดบริการเฉพาะที่ต้องการ เช่นแก้แฟ้ม talk
เพื่อให้เปิดบริการ talk ใน server เป็นต้น
ดูผลบางส่วนจากการทำงานของคำสั่ง xinetd -dService configuration: ftp
id = ftp
flags = IPv4
socket_type = stream
Protocol (name,number) = (tcp,6)
Nice = 10
Groups = no
Bind = All addresses.
Server = /usr/sbin/vsftpd
Server argv = vsftpd
Only from: All sites
No access: No blocked sites
Logging to syslog. Facility = authpriv, level = info
Log_on_success flags = HOST PID
Log_on_failure flags = HOST
1.14 คำสั่ง whereis
: ค้นหาแฟ้มที่ต้องการว่าอยู่ที่ห้องใด แต่ค้นได้เฉพาะที่กำหนดไว้ใน PATH
เท่านั้น หากต้องการค้นทั้งเครื่องต้องใช้คำสั่ง find
ตัวอย่างคำสั่ง และการใช้งาน
whereis usermod :: แสดงห้องที่เก็บคำสั่ง usermod
ทำให้สามารถสั่ง run จากห้องที่เก็บคำสั่งโดยตรงได้
whereis ifconfig :: แสดงห้องที่เก็บคำสั่ง ifconfig
ทำให้ใช้คำสั่งเช่น /sbin/ifconfig ได้โดยตรง
1.15 คำสั่ง cp, rm, mv
: จัดการแฟ้มเช่น คัดลอก ลบ และย้าย
ตัวอย่างคำสั่ง และการใช้งาน
cp x y :: เดิมมีแฟ้มชื่อ x ต้องการแฟ้ม y ที่เหมือน x
ขึ้นมาใหม่ สามารถใช้คำสั่ง cp
rm y ::
ลบแฟ้ม y ออกจากเครื่อง ซึ่งอยู่ใน directory ปัจจุบัน
rm -r directoryname :: จะลบ directory ในเครื่อง sun
และแฟ้มทั้งหมดใน directory นั้น และการลบแฟ้ม จะมีการถาม confirm ทุกแฟ้มเสมอ
rm -rf directoryname :: จะลบ
directory ใช้ใน Redhat และแฟ้มทั้งหมดใน directory นั้น และการลบแฟ้ม จะมีการถาม
confirm ทุกแฟ้มเสมอ
rm -f * ::
ลบแฟ้มทั้งหมดโดยไม่ถาม yes
mv x /root
:: ย้ายแฟ้ม x จากห้องปัจจุบันไปไว้ในห้อง /root
1.16 คำสั่ง ping
: ตรวจสอบ ip ของเครื่องเป้าหมาย และการเชื่อมต่อ internet
ตัวอย่างคำสั่ง และการใช้งาน
ping www.thaiall.com :: ตัวสอบการมีอยู่ของ www.thaiall.com
และแสดงเลข IP ของเว็บนี้
ping 202.29.78.100
-c 5 :: แสดงผลการทดสอบเพียง 5 บรรทัด
ping 202.29.78.2 :: ผลดังข้างล่างนี้
แสดงว่าไม่พบเครื่องที่มีเลข ip ดังกล่าว
PING 202.29.78.2 (202.29.78.2) from 202.29.78.12 : 56(84) bytes of data.
From 202.29.78.12 icmp_seq=1 Destination Host Unreachable
From 202.29.78.12 icmp_seq=2 Destination Host Unreachable
From 202.29.78.12 icmp_seq=3 Destination Host Unreachable
1.17 คำสั่ง env
: แสดงค่า environment ปัจจุบัน
ตัวอย่างคำสั่ง และการใช้งาน
env
HISTSIZE=1000
SSH_CLIENT=202.29.78.100 1091 22
OLDPWD=/usr/sbin
QTDIR=/usr/lib/qt3-gcc3.2
SSH_TTY=/dev/pts/0
USER=burin
LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;.... :
PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
MAIL=/var/spool/mail/burin
PWD=/etc
INPUTRC=/etc/inputrc
LANG=en_US.UTF-8
HOME=/root
SHLVL=2
LOGNAME=burin
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/bin/env
1.18 คำสั่ง lynx
: Text browser ที่ใช้งานง่าย ใช้ดู source หรือ download ได้
ตัวอย่างคำสั่ง และการใช้งาน
lynx www.thaiall.com :: เพื่อเปิดเว็บ www.thaiall.com แบบ
text mode
lynx http://www.yonok.ac.th
:: เพื่อเปิดเว็บ www.yonok.ac.th แบบ text mode
lynx -dump http://www.yonok.ac.th :: เพื่อแสดงผลลัพธ์แบบไม่
interactive คือการ view ผลแล้วหยุดทันที
lynx
-dump -width=500 http://piology.org/.procmailrc.html|grep '^|'|cut -c3-
:: ตัวอย่างการนำไปใช้
1.19 คำสั่ง nslookup
: แสดงข้อมูลเกี่ยวกับ name server จาก ip หรือ domain name
คำสั่งนี้ ถูกประกาศว่าต่อไปอาจไม่พบใน Redhat รุ่นใหม่
ถ้าต้องการใช้คำสั่งแบบนี้สามารถใช้ dig หรือ host แทนได้ เช่น host
yn1.yonok.ac.th หรือ dig yn1.yonok.ac.th เมื่อเข้าไปใน nslookup
สามารถออกมาได้ด้วยการพิมพ์คำสั่ง exit หลังเครื่องหมาย >
ตัวอย่างคำสั่ง และการใช้งาน
nslookup 202.28.18.65
Non-authoritative answer:
65.18.28.202.in-addr.arpa name = mars.uni.net.th.
Authoritative answers can be found from:
18.28.202.in-addr.arpa nameserver = mars.uni.net.th.
18.28.202.in-addr.arpa nameserver = ns.netserv.chula.ac.th.
mars.uni.net.th internet address = 202.28.18.65
nslookup www.thaiall.com
Name: www.thaiall.com
Address: 66.150.1.141
1.20 คำสั่ง tail
: แสดงส่วนท้ายของแฟ้มที่มีขนาดใหญ่ ต้องข้ามกับ cat ที่ดูตั้งแต่เริ่มแฟ้ม
ตัวอย่างคำสั่ง และการใช้งาน
tail index.html :: ดูส่วนท้ายของแฟ้ม index.html ใน Current
directory
tail --lines=5
/var/log/messages :: ดูส่วนท้ายของแฟ้ม /var/log/messages แต่ต้องเป็น
root จึงจะดูได้
tail
/var/log/html/access.log :: ดูส่วนท้ายเพียง 10 บรรทัด ซึ่งเป็นค่า
default ที่ไม่ได้กำหนดจำนวนบรรทัด
tail
--lines=100 /var/log/html/access_log > access_bak :: เป็นการ backup
ในขั้นแรก ก่อนใช้ mv ย้ายไปทับแฟ้มเดิม
1.21 คำสั่ง telnet
: ใช้ติดต่อเข้า server ต่าง ๆ ตาม port ที่ต้องการ แต่ปัจจุบัน server ต่าง ๆ
ปิดบริการ telnet แต่เปิด SSH แทน
ตัวอย่างคำสั่ง และการใช้งาน
telnet 202.202.202.202 :: ขอติดต่อเข้าเครื่อง 202.202.202.202
การไม่กำหนด port คือเข้า port 23
telnet
www.school.net.th 21 :: ขอติดต่อผ่าน port 21 ซึ่งเป็น FTP port
telnet mail.loxinfo.co.th 25 :: ตรวจ
smtp ว่าตอบสนองกลับมา หรือไม่
telnet
class.yonok.ac.th 110 :: ทดสอบ pop service ของ windows server 2003
Microsoft Windows POP3 Service Version 1.0 ready.
USER aa@class.yonok.ac.th
+OK
PASS xxxxxxx
+OK User successfully logged on
2.1 คำสั่ง df
: แสดงการเนื้อที่ใช้งานทั้งหมดของ Harddisk ว่าเหลือเท่าใด
ช่วยให้ผู้ดูแลระบบรู้ว่าตอนนี้เนื้อที่ใน Harddisk เหลืออยู่เท่าใด
และอาจใช้ตรวจสอบได้ว่า มีใครแอบมา upload แฟ้มขนาดใหญ่ไว้หรือไม่
จะได้ตรวจสอบในรายละเอียดของแต่ละ user ต่อไป (ผมเองก็ใช้บ่อย เพราะถ้า server เล็ก
ๆ จะเต็มบ่อยครับ ต้องคอย clear เสมอ)
ตัวอย่างคำสั่ง และการใช้งาน
df :: เพื่อแสดงรายงานสรุปการใช้ในแต่ละส่วน
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda5 505605 82764 396737 18% /
/dev/hda1 101089 9180 86690 10% /boot
/dev/hda3 1423096 41956 1308848 4% /home
none 30740 0 30740 0% /dev/shm
/dev/hda2 3889924 1551872 2140456 43% /usr
/dev/hda6 1027768 952876 22684 98% /var
2.2 คำสั่ง du
: แสดงการเนื้อที่ใช้งาน ของแต่ละ directory โดยละเอียด
ช่วยให้ผู้ดูแลระบบรู้ว่า directory ใด ใช้เนื้อที่ใด หรือใช้ดูรวม ๆ ว่า
ผู้ใช้แต่ละคนใช้เนื้อที่เก็บข้อมูลกันเท่าใด เพราะผู้ใช้ปกติจะใช้กันไม่เยอะ
แต่ถ้าตรวจสอบแล้วเยอะผิดปกติ ก็จะเข้าไปดูว่า เยอะเพราะอะไร จะได้แก้ไขได้
ตัวอย่างคำสั่ง และการใช้งาน
du :: เพื่อแสดงรายชื่อ directory และเนื้อที่ที่ใช้ไป
du -all ::
เพื่อแสดงโดยละเอียดว่าแต่ละแฟ้มมีขนาดเท่าใด ใน directory ปัจจุบัน
du | sort -g :: แสดงการใช้พื้นที่ของแต่ละ
directory พร้อม sort จากน้อยไปมาก มีหน่วยเป็น Kb
du -b :: แสดงหน่วยเป็น byte ของแต่ละ directory
2.3 คำสั่ง ps
: แสดง Process หรือโปรแกรมที่ประมวลผลอยู่ในระบบขณะนั้น
ช่วยให้ผู้ดูแลระบบ ติดตามได้ว่ามีโปรแกรมอะไรที่ไม่ถูกต้อง run อยู่
หรือโปรแกรมอะไร ที่ผู้ศึกษาลองประมวลผลแล้วค้างอยู่ จะได้ทำการแก้ไง
มิฉนั้นระบบก็จะทำงานค้าง เพราะโปรแกรมที่ไม่ควรอยู่ในระบบ
กำลังประมวลผลโดยไม่จำเป็น โดยเฉพาะพวก bot จะทำให้ server ล่มง่ายมาก
ตัวอย่างคำสั่ง และการใช้งาน
ps :: แสดงชื่อ process ต่าง ๆ ที่ทำงานอยู่อย่างสั้น
ps -ef :: แสดงข้อมูลของ process โดยละเอียด
ps -ax :: แสดงข้อมูลของ process
พร้อมชื่อโปรแกรมได้ละเอียด
ps -aux ::
แสดงข้อมูลของ process พร้อมชื่อโปรแกรม และชื่อผู้สั่งได้ละเอียดมาก
2.4 คำสั่ง kill
: เมื่อทราบว่า process ใดที่มีปัญหา ก็จะเห็นเลขประจำ process คำสั่ง kill
จะสามารถ process ออกจากระบบได้
ช่วยยกเลิก process ที่ไม่ถูกต้องออกจากระบบ
ถ้าขณะนั้นผู้ใช้คนหนึ่งกำลังใช้งานอยู่ หาก process หลักของเขาถูก kill
จะทำให้ผู้ใช้ท่านนั้น หลุดออกจากระบบทันที (สำหรับคำสั่งนี้จะถูกใช้โดย super user
เท่านั้น ผู้ใช้ธรรมดาไม่มีสิทธิ์)
ตัวอย่างคำสั่ง และการใช้งาน
kill -9 เลขประจำprocess :: เลขประจำ process
ท่านจะได้จากการใช้ ps -ef อยู่แล้ว
kill -9
1255 :: ลบ process ที่ 1255 ออกจากระบบไป
2.5 คำสั่ง find
: เมื่อไฟล์ที่ต้องการว่าอยู่ใน directory ของเครื่องเราหรือไม่
ตัวอย่างคำสั่ง และการใช้งาน
find / -name hello.pl :: ใช้ค้นหาแฟ้ม hello.pl ในทุก
directory
find / -name hello* ::
ใช้ค้นหาแฟ้มที่ขึ้นต้นด้วยคำว่า hello
find
/bin -size 626188c :: ใช้ค้นหาแฟ้มที่มีขนาด 626188 ถ้าเป็น RH8 จะพบแฟ้ม
bash
2.6 คำสั่ง gzip
: ใช้สำหรับแตกแฟ้มที่ถูกบีบอัด แล้วนามสกุล gz หรือ z
ตัวอย่างคำสั่ง และการใช้งาน
gzip -d x.tar.gz :: ใช้แตกแฟ้มที่นามสกุล gz
man gzip :: ใช้ดูว่า gzip ใช้งานอะไรได้บ้าง
gzip -d radius-1.16.1.tar.Z ::
ได้แฟ้มนี้จาก ftp.livingston.com/pub/le/radius/
เป็นระบบรับโทรศัพท์เข้าเครือข่าย
gzip -dc
x.tar.Z|tar xvf - :: ประหยัดขั้นตอนในการใช้คำสั่ง 2 ครั้ง
เพราะคำสั่งชุดนี้จะใช้ทั้ง gzip และ tar กับ x.tar.z ได้ตามลำดับ
2.7 คำสั่ง tar
: ใช้สำหรับแตกแฟ้มที่ถูกบีบอัด แล้วนามสกุล tar
ตัวอย่างคำสั่ง และการใช้งาน
tar xvf x.tar :: ใช้สำหรับแตกแฟ้มที่นามสกุล tar
ปกติแล้วจะมีการสร้าง directory ของแฟ้มพร้อมโปรแกรมอีกเพียบ
tar xvfz squid-2.3-200103110000-src.tar.gz ::
จะคลาย gz พร้อมกับใช้คำสั่ง tar ได้พร้อม ๆ กัน ไม่ต้องใช้ gzip และมาใช้ tar
man tar :: ใช้ดูว่า tar
ใช้งานอะไรได้บ้าง
tar zcvf abc.tar.gz
/etc :: ใช้ copy /etc เก็บเป็นแฟ้ม abc.tar.gz แบบบีบอัด
tar zxvf abc.tar.gz :: ใช้คลายแฟ้ม abc.tar.gz
ซึ่งจะได้ directory /etc ออกมาทั้งหมด
2.8 คำสั่ง last
: ใช้แสดงรายชื่อผู้ login เข้ามาล่าสุด
ตัวอย่างคำสั่ง และการใช้งาน
last |grep reboot :: ใช้ดูระบบถูก reboot เมื่อใดบ้าง
last |more :: ใช้รายชื่อผู้ login
เข้ามาในระบบล่าสุดทีละหน้า
2.9 คำสั่ง grep
: ใช้สำหรับเลือกข้อมูลเฉพาะบรรทัดที่ต้องการ
ตัวอย่างคำสั่ง และการใช้งาน
more /etc/passwd|grep thaiall :: ใช้แสดงข้อมูลในแฟ้ม
/etc/passwd แต่เลือกเฉพาะบรรทัดที่มีคำว่า thaiall
rpm -qa|grep ftp :: ใช้ดูว่าระบบลงโปรแกรม ftp หรือยัง
เวอร์ชั่นใดบ้าง
last |grep reboot ::
ใช้ดูระบบถูก reboot เมื่อใดบ้าง
2.10 คำสั่ง date
: ใช้ดูวันที่ หรือเปลี่ยนวันที่ และเวลาได้ date [OPTION]
[MMDDhhmm[[CC]YY][.ss]]
ตัวอย่างคำสั่ง และการใช้งาน
date +%x :: ดูวันที่ปัจจุบัน เช่นการแสดงเลข 04/27/01 ออกมา
date +%d :: ดูวันที่ปัจจุบัน
เช่นการแสดงเลข 27 ออกมา
date 04271340
:: กำหนดวันที่ใหม่ให้เป็น วันที่ 27 เดือน 4 เวลา 13.40 น. (mmddhhmmccyy)
hwclock --systohc ::
เมื่อเปลี่ยนเวลาด้วย date หาก restart
เครื่องเวลาจะผิดเหมือนเดิมต้องใช้คำสั่งนี้ เพื่อเขียนเวลาลงไปใน hardware clock
จึงจะเปลี่ยนเวลา hardware ได้
2.11 คำสั่ง top
: ใช้แสดงสถานะการใช้ทรัพยากร ภายในเครื่อง
ตัวอย่างคำสั่ง และการใช้งาน
top :: แสดงการใช้ทรัพยากรของเครื่อง จากแต่ละ process
ทดสอบคำสั่งนี้ใน Redhat 8.0
ตัวอย่างผลของการใช้คำสั่ง
CPU states: 0.5% user, 1.3% system, 0.0% nice, 98.0% idle
Mem: 31328K av, 28872K used, 2456K free, 0K shrd, 1032K buff
Swap: 1718912K av, 2608K used, 1716304K free 16528K cached
PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
18306 root 14 0 852 852 672 R 0 1.5 2.7 0:00 top
18229 root 1 0 1684 1536 1240 S 0 0.3 4.9 0:00 sshd
1 root 0 0 160 116 92 S 0 0.0 0.3 0:08 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:01 kflushd
2.12 คำสั่ง ntsysv หรือ setup
: ใช้เปิด-ปิด บริการของเครื่องที่สะดวกรวดเร็ว
ตัวอย่างคำสั่ง และการใช้งาน
setup :: แสดงการตัวเลือกให้กำหนดบริการต่าง ๆ ปกติจะเลือก
system services
บริการที่เปิดใน server ของผมประกอบด้วย httpd, imap, ipop3, iptables,
named, network, sendmail, servers, services, vsftpd, xinetd เพื่อให้บริการ
web, mail, ftp และ dns
ntsysv ::
ใช้เปิด-ปิดบริการ ให้ผลเหมือน setup, services (แต่คำสั่งนี้ถูกยกเลิกใน RH
รุ่นใหม่)
2.13 คำสั่ง route
: ใช้เส้นทางการเชื่อมเครือข่าย
ตัวอย่างคำสั่ง และการใช้งาน
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
202.29.78.0 * 255.255.255.0 U 0 0 0 eth0
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 202.29.78.254 0.0.0.0 UG 0 0 0 eth0
2.14 คำสั่ง shutdown, reboot
: ใช้ปิดเครื่อง หรือ ปิดและเปิดเครื่องใหม่อย่างถูกวิธี
ตัวอย่างคำสั่ง และการใช้งาน
shutdown -h now หรือ halt :: สั่งปิดเครื่องทันที (แต่ใช้เวลาประมาณ 1
นาทีเพื่อปิดบริการต่าง ๆ)
reboot หรือ
shutdown -r now :: ปิด และเปิดเครื่องใหม่
หากติดตั้งโปรแกรมบางตัว และ clear ค่าต่าง ๆ หากไม่แน่ใจ
2.15 คำสั่ง runlevel
: คู่กับแฟ้ม /etc/inittab เพื่อบอกว่าปัจจุบันอยู่ใน level ใด
: ถ้าต้องการเปลี่ยน level ต้องใช้คำสั่ง chkconfig ให้ดูเพิ่มเติมจาก 2.18
ตัวอย่างคำสั่ง และการใช้งาน
#/sbin/runlevel :: แสดง level ปัจจุบัน
#cat /etc/inittab :: แสดงตาราง
กำหนดการสั่งเครื่อง ว่าใช้ level ใด
2.16 คำสั่ง fsck
: ซ่อมแซมระบบแฟ้มใน linux
ตัวอย่างคำสั่ง และการใช้งาน
#fsck / :: ใช้ซ่อม harddisk ในห้อง / เมื่อการ harddisk
เกิดปัญหาเกี่ยวกับการปิดเปิด
#fsck
/dev/hdc :: ใช้ซ่อม harddisk ที่ชื่อ /dev/hdc ถ้าต่อ harddisk
ไว้หลายตัว
2.17 คำสั่ง chown, chgrp
: เปลี่ยนเจ้าของ หรือเปลี่ยนกลุ่ม
ตามหัวข้อ 1.2 เรื่องคำสั่ง chmod ทำให้ทราบว่า แฟ้มแต่ละแฟ้มมี 3 ส่วน
คือเจ้าของ กลุ่ม และทั่วไป เมื่อต้องการเปลี่ยนความเป็นเจ้าของ หรือกลุ่ม
ก็สามารถทำได้ ซึ่งเป็นหลักการง่าย ๆ ไม่ยุ่งยาก
ตัวอย่างคำสั่ง และการใช้งาน
#chown burin:users x :: เปลี่ยนเจ้าของของแฟ้ม x ให้เป็น burin
และอยู่ในกลุ่มของ users
#chgrp users
y :: เปลี่ยนกลุ่มของแฟ้ม x ให้เป็น users
2.18 คำสั่ง chkconfig
: กำหนด หรือแสดง บริการที่สั่งประมวลผลใน level ต่าง ๆ ขณะเปิดเครื่อง
คำว่า level คือระดับในการเปิดเครื่อง ดูได้จากแฟ้ม /etc/inittab
โดยโปรแกรมต่าง ๆ ที่สั่งให้ประมวลผล สามารถเลือกให้ทำงานใน level ใดได้
หากสั่งให้ประมวลผลปิด level เมื่อมีการ start linux ใน level หนึ่ง
โปรแกรมที่คิดว่าสั่งให้ทำงานขณะเปิดเครื่อง ก็จะไม่ทำงาน
# /etc/inittab
# 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:5:initdefault:
id:3:initdefault:
ตัวอย่างคำสั่ง และการใช้งาน
#/sbin/chkconfig --add mysql :: สั่งให้เพิ่ม mysql
เข้าไปในระบบ system services
#/sbin/chkconfig --list :: แสดงรายการโปรแกรมทั้งหมด
ที่สั่งให้ทำงานใน level ต่าง ๆ
#/sbin/chkconfig --level 3 sendmail on :: สั่งโปรแกรม
sendmail ทำงานใน level 3 (Text mode)
#/sbin/chkconfig --level 5 sendmail on :: สั่งโปรแกรม
sendmail ทำงานใน level 5 (X Windows)
2.19 คำสั่ง mount, umount
: สั่งเชื่อมต่ออุปกรณ์ หรือ partition เช่น Diskette หรือ Handy drive เป็นต้น
การใช้ mount เป็นสิ่งที่ผู้ดูแลระบบต้องเข้าใจหลักการให้ได้
เพราะเป็นช่องทางในการติดต่อกับอุปกรณ์ต่าง ๆ ล่าสุด ผมต่อ harddisk
เข้าไปในเครื่อง server เพิ่มอีก 1 ตัว ซึ่งระบบมอง harddisk ตัวที่เพิ่มเข้าไปเป็น
hdc ด้วยคำสั่ง fdisk -l เมื่อต้องการ partition ที่ 1 ของ hdc มาเป็นห้อง /x
ก็เพียงแต่ใช้คำสั่งสร้างห้องคือ #mkdir /x สำหรับครั้งแรก แล้วใช้คำสั่ง #mount
/dev/hdc1 /x ก็จะใช้ห้อง /x ซึ่งอยู่ใน harddisk อีกตัวหนึ่งได้ทันที
คำสั่งที่เกี่ยวข้องกับคำสั่ง mount
#cat /etc/fstab : ดู file system table เพื่อบอกว่ามีอะไร mount
ไว้แล้วบ้าง
#cat /etc/mtab : ดูรายละเอียดการ mount
ในอีกรูปแบบหนึ่ง
#cat /proc/mounts : บอกว่ามีอะไร mount
ไว้แล้วบ้าง
#cat /proc/partitions : บอกชื่อ และขนาดของแต่ละ
partitions
#cat /proc/filesystems : บอกประเภทของ filesystems
ที่มีการสนับสนุน
#/sbin/fdisk -l : แสดง partition จาก harddisk
ทุกตัวที่เชื่อมต่อในเครื่องนั้น
1. วิธีใช้แผ่น floppy disk ใน linux
#mkdir /floppy
#mkfs -t ext3 /dev/fd0 1440
#mount -t ext3
/dev/fd0 /floppy
- or -
#mkdir /floppy
#mkfs -t msdos /dev/fd0
1440
#mount -t msdos /dev/fd0 /floppy
ต่อไปในห้อง /floppy
ก็คือแผ่น disk ใน drive A ส่วน /dev/fd1 ก็คือ drive B
แต่ต้องเริ่มทำใหม่นะครับ
2. วิธีใช้ Handy drive เช่น apacer (ต้อง umount ก่อนดึง apacer
ออกก่อนเสมอ)
#mkdir /mnt/apacer (Just first time)
#mount /dev/sda1 /mnt/apacer
...
#cd /
#umount /dev/sda1
- and -
#pico /etc/fstab
Add: /dev/sda1 /mnt/apacer auto noauto,user 0 0
3. วิธีเรียกใช้แฟ้มใน partition อื่น เช่น WindowsXP
cd / :: ย้ายตัวเองไปยัง root
directory
mkdir hd :: สร้างห้องชื่อ
hd ซึ่งเป็นห้องเปล่าไม่มีอะไร
fdisk
-l :: ดูว่ามี partition อะไรในเครื่องบ้าง ที่ต้องการ mount เข้ากับ /hd
mount /dev/hdb2 /hd :: ทำให้เรียกใช้
/dev/hdb2 จาก /hd ได้ เช่น cd /hd/etc ถ้าใน hdb2 มีห้องชื่อ etc
umount /hd :: ยกเลิกการ mount /hd
4. วิธีใช้ CDROM
mount :: แสดงรายการอุปกรณ์ หรือห้องต่าง ๆ ที่ถูก mount
ไว้แล้ว
mount -t ext3 ::
แสดงให้เห็นว่า partition แบบ ext3 มีอะไรถูก mount ไว้บ้าง
mount -t vfat :: แสดงให้เห็นว่า partition แบบ
vfat มีอะไรถูก mount ไว้บ้าง
mount
/dev/cdrom :: ใช้ติดต่อ CD ROM เมื่อเข้าไปใช้เช่น #cd /mnt/cdrom และใช้
#ls
umount /dev/cdrom :: เพื่อเลิกใช้
CD ROM หรือต้องการดึงแผ่นออก แต่ท่านต้องออกมาก่อนด้วยคำสั่ง #cd / เป็นต้น
eject :: ถ้าไม่ umount ด้านล่าง
ก็สั่ง eject เพื่อดีด CD-ROM ออกได้เลยครับ และไม่ต้องสั่ง umount
หรือออกจากห้องก่อนนะ
ตัวอย่างผลการใช้คำสั่ง mount ใน server
ตัวหนึ่ง
/dev/hda5 on / type ext3 (rw)
none on /proc type proc (rw)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda3 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda2 on /usr type ext3 (rw)
/dev/hda6 on /var type ext3 (rw)
2.20 คำสั่ง mkbootdisk
: สร้างแผ่น boot disk เพื่อใช้ boot ระบบ linux ขึ้นมาภายหลัง
และมีการทำงานแบบ stand alone
คำสั่งนี้ผมเคยใช้ตอนคัดลอก harddisk ที่เป็น linux 2 ตัว
แต่ตัวลูกเมื่อนำไปเสียบเข้าเครื่องใหม่ พบว่า boot ด้วยตนเองไม่ได้ จึงต้องหาแผ่น
boot จนเข้าไปใน harddisk ได้ จากนั้นก็สั่ง #lilo เพื่อให้การ boot
ครั้งต่อไปสามารถทำงานตาม /etc/lilo.conf ได้ตามปกติ ส่วนตัวเลข 2.4.18-14
เป็นเลขรุ่นของ kernel ใน Redhat 8.0 สังเกตเลขนี้ได้ตอน boot เครื่อง
ตัวอย่างคำสั่ง และการใช้งาน
mkbootdisk --device /dev/fd0 2.4.18-14 :: สร้างแผ่น disk
เพื่อใช้ boot เข้า linux ในกรณีที่ระบบ boot ของเครื่องมีปัญหา
2.21 คำสั่ง traceroute
: แสดงเลข ip ของเครื่องที่ถูกเชื่อมต่อทั้งหมด ไปยังปลายทางที่ต้องการ
ตัวอย่างข้างล่างนี้แสดงให้เห็นว่า เมื่อในวิทยาลัยโยนกเปิดเว็บ www.thai.net
จะต้องติดต่อผ่านเครื่องบริการ 8 ตัว ดังตัวอย่างล่างนี้ ถ้าเปิดเว็บไซต์ต่างประเทศ
ก็จะมีจำนวนเครื่องในการติดต่อมากขึ้นไปด้วย เครื่องบริการในที่นี้
มักเป็นอุปกรณ์ที่เรียกว่า router และ router ทุกตัวจะมี ip
และความสามารถเฉพาะตัวที่ต่างกันไป โดยหน้าที่หลักของ router
ก็คือการกำหนดเส้นทางในการติดต่อนั่นเอง
ตัวอย่างคำสั่ง และการใช้งาน
/usr/sbin/traceroute www.thai.net
traceroute to www.thai.net (203.150.13.2), 30 hops max, 38 byte packets
1 door.yonok.ac.th (202.29.78.254) 2.046 ms 1.962 ms 2.532 ms
2 202.28.29.41 (202.28.29.41) 3.703 ms 3.294 ms 3.760 ms
3 UniNet-BKK2-ATM1-0-0.700.uni.net.th (202.28.28.129) 14.185 ms 13.226 ms 14.614 ms
4 202.28.28.18 (202.28.28.18) 13.705 ms 13.227 ms 14.130 ms
5 202.47.255.2 (202.47.255.2) 13.222 ms 13.890 ms 13.210 ms
6 202.129.63.182 (202.129.63.182) 16.649 ms 14.960 ms 15.659 ms
7 juliet-vlan-2.bkk.inet-th.net (203.150.14.22) 14.817 ms 15.573 ms 15.610 ms
8 www.thai.net (203.150.13.2) 15.628 ms 14.775 ms 14.222 ms
2.22 คำสั่ง rpm
: ใช้ตรวจสอบ เพิ่ม หรือลบ package ของระบบ linux เกือบทั้งหมด
ในกรณีที่ท่านมีโปรแกรมตัวใหม่มา สามารถที่จะลบโปรแกรมเพิ่มโดยใช้คำสั่ง rpm
ได้ หรือต้องการตรวจสอบว่า มี package บางตัว install อยู่หรือไม่
หรือจะยกเลิกโปรแกรมบางตัวออกจากระบบก็ทำได้ หรือจะแสดงรายชื่อ package
ทั้งหมดในระบบก็ทำได้อีก รวมทั้งการตรวจ version ของ package แต่ละตัว
จากประสบการณ์ ไม่แน่ใจว่าเกิดจากอะไร เมื่อลง Redhat 7.2 แล้ว
แต่ระบบไม่บริการ pop3 จึงได้ทำการ mount /dev/cdrom จากนั้นก็ทำการ install
package pop เพิ่มเข้าไป ที่รู้เพราะลองใช้คำสั่ง telnet localhost 110 แล้ว
error จึงต้องทำการเพิ่ม package pop เข้าไปใหม่ โดยใช้คำสั่ง rpm -i
imap-4.7-5.i386.rpm ที่รู้เพราะได้ใช้ cd เข้าไปในห้อง /mnt/cdrom/RedHat/RPMS
จึงพบแฟ้มมากมายที่สามารถ install เพิ่มได้
ตัวอย่างคำสั่ง และการใช้งาน
rpm -i imap-4.7-5.i386.rpm :: ใช้ install package pop
เข้าไปใน linux ใหม่ เพราะไม่มี และให้ดูเพิ่มเติมจาก 8.99
เกี่ยวกับการติดตั้งโปรแกรมจาก CD-ROM
rpm
-qa|grep imap :: ใช้ดูว่ามี package อะไรบ้างที่ขึ้นต้นด้วย imap
rpm -qa :: ใช้ดูรายชื่อ package
ทุกตัวที่ install ไว้แล้ว
rpm -q
telnet :: ใช้ตรวจว่ามี package ชื่อ telnet อยู่หรือไม่
rpm -qpl imap-4.7-5.i386.rpm :: แสดงชื่อแฟ้มใน
package แต่ต้องเข้าไปที่ /mnt/cdrom/RedHat/RPMS ก่อนนะครับ
rpm -qf /usr/sbin/vi :: จะแสดง
vim-minimal-5.6-11 ซึ่งเป็นรุ่นของ vi นั้น
rpm -qf /usr/sbin/httpd :: จะได้ apache-1.3.12-2
ซึ่งเป็นรุ่นที่ติดตั้งมาใน linux 6.2
rpm -e
apache-1.3.12-2 :: ลบ หรือ erase โปรแกรม apache-1.3.12-2 ออกจากเครื่อง
rpm -Fvh
openssl-0.9.5a-2.6.x.i386.rpm :: Upgrade โปรแกรม
แต่ต้องลงโปรแกรมก่อนมิเช่นนั้น ไม่สำเร็จนะครับ
2.23 คำสั่ง SU
: ขอเปลี่ยนตนเองเป็น Super user หรือ root
เพื่อใช้สิทธิ์สูงสุดในการบริหารระบบ ที่ผู้ใช้ปกติทำไม่ได้
การจะใช้ su ได้จะต้องเป็นผู้ใช้ตามปกติ เมื่อพิมพ์ su
แล้วระบบจะถามรหัสผ่านของ user root หากพิมพ์รหัสผ่านถูกต้อง
ท่านก็จะสามารถกระทำการใด ๆ ก็ได้ ในฐานะ root เพราะ root หรือ super user
คือผู้ที่มีอำนาจสูงสุดในระบบ เช่น เพิ่มผู้ใช้ท่านใหม่ ลบผู้ใช้คนเดิม เป็นต้น
(เพียงแต่พิมพ์คำว่า su ท่านก็สามารถเปลี่ยนสิทธิ์ได้แล้ว ถ้าท่านมีรหัสผ่านของ
su) เดิมผมใช้แค่คำว่า su ต่อมาคุณประเสริฐ แนะนำว่าต้องใช้ su - จึงจะสมบูรณ์ พอทดสอบก็พบว่า $PATH ที่ได้แตกต่างกันจริง
ตัวอย่างคำสั่ง และการใช้งาน
#su - :: เปลี่ยนตนเองเป็น super user เพื่อกระทำการใด ๆ
ก็ได้กับตัวระบบ
#su prasert ::
ไม่ว่าขณะที่ login เป็น user ใด เมื่อต้องการเปลี่ยนเป็น user prasert ก็ไม่ต้อง
logout แล้ว login ใหม่ ใช้คำสั่งนี้ได้เลย
2.24 คำสั่ง useradd
: เพิ่มผู้ใช้รายใหม่เข้าไปในระบบ
ตัวอย่างคำสั่ง และการใช้งาน
#useradd theman :: เพิ่มผู้ใช้รายใหม่เข้าไปในระบบชื่อ theman
ในกลุ่ม theman และมี home directory เป็น /home/theman
#useradd -g users -d /home/theman -c "user name here" theman
:: เพิ่มผู้ใช้รายใหม่เข้าไปในระบบชื่อ theman
2.25 คำสั่ง userdel
: ลบผู้ใช้รายเดิม ออกจากระบบ
ตัวอย่างคำสั่ง และการใช้งาน
#userdel -r theman :: ลบ theman และ home directory ของ theman
ออกหมด
2.26 คำสั่ง usermod
: แก้ไขข้อมูลของผู้ใช้ได้
ตัวอย่างคำสั่ง และการใช้งาน
#usermod -s /rbin/menu theman :: กำหนดให้ shell สำหรับ user
ที่ชื่อ theman ใหม่ เพื่อจำกัดสิทธิ์ในการเข้าใช้ shell
#usermod -d /home/theman theman :: กำหนดให้ theman มี
homedirectory อยู่ที่ /home/theman
#usermod
-c "Mr.Suwit Somsupabrungyod" theman :: กำหนดให้ comment หรือชื่อ เป็น
Mr.Suwit Somsupabrungyod ซึ่ง comment จะไปแสดงผลให้เห็นชัดเจนตอนที่ใช้ pine
เมื่อพิมพ์คำว่า theman ในช่อง to ขณะที่กำลัง compose จะแสดง comment หน้า email
ให้ทันที
2.27 คำสั่ง crontab
: ตั้งเวลาสั่งงานคอมพิวเตอร์
ตัวอย่างคำสั่ง และการใช้งาน
#crontab -l ::
แสดงกำหนดการของการสั่งให้คอมพิวเตอร์ทำงานอย่างอัตโนมัติ ตามเวลาที่กำหนด
#cat /etc/crontab :: แสดงตาราง
crontab ในเครื่อง
2.28 คำสั่ง lspci
: ตรวจสอบอุปกรณ์ที่เชื่อมต่อภายในเครื่อง
ตัวอย่างคำสั่ง และการใช้งาน
#lspci
00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 03)
00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 03)
00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 02)
00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)
00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB (rev 01)
00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 02)
00:0f.0 PCI bridge: Digital Equipment Corporation DECchip 21152 (rev 03)
00:11.0 Ethernet controller: 3Com Corporation 3c905B 100BaseTX [Cyclone] (rev 24)
01:00.0 VGA compatible controller: ATI Technologies Inc 3D Rage Pro AGP 1X/2X (rev 5c)
2.29 คำสั่ง nmap
: ตรวจสอบเครือข่ายแบบกวาดทั้งในเครื่อง และ class C
ตัวอย่างคำสั่ง และการใช้งาน
#nmap -sP 202.29.78.*
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Host (202.29.78.0) seems to be a subnet broadcast address (returned 1 extra pings).
Note -- the actual IP also responded.
Host www.isinthai.com (202.29.78.1) appears to be up.
Host course.yonok.ac.th (202.29.78.5) appears to be up.
Host yonok.ac.th (202.29.78.12) appears to be up.
Host w2kdhcp.yonok.ac.th (202.29.78.17) appears to be up.
Host (202.29.78.31) appears to be up.
Host (202.29.78.32) appears to be up.
Host (202.29.78.33) appears to be up.
#nmap -sT www.yonok.ac.th (on TCP)
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on yonok.ac.th (202.29.78.12):
(The 1590 ports scanned but not shown below are in state: closed)
Port State Service
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
80/tcp open http
109/tcp open pop-2
110/tcp open pop-3
#nmap www.yonok.ac.th -sU (on UDP)
Starting nmap V. 3.00 ( www.insecure.org/nmap/ )
Interesting ports on yn1.yonok.ac.th (202.29.78.12):
(The 1465 ports scanned but not shown below are in state: closed)
Port State Service
53/udp open domain
111/udp open sunrpc
867/udp open unknown
3.1 เริ่มต้นกับ perl
: เมื่อเขียน perl สักโปรแกรมหนึ่ง แล้วใช้ ftp upload เข้าไปใน home directory
ของท่าน ก็ถือว่าผ่านจุดแรกแล้ว
ตัวอย่างโปรแกรม perl ที่ใช้ในการทดสอบ 3 บรรทัด
#!/usr/bin/perl
print"Content-type:text/html\n\n";
print"<body bgcolor=#ffffdd>";
print"<h1>This is test.</h1><br>By tester</body>";
วิธีการทำให้ perl ใช้งานได้
- Host name ที่ท่านจะใช้อ้างอิงในการ upload คือ www.isinthai.com
- ก่อน upload ต้องให้แน่ใจว่า โปรแกรมของท่าน มีนามสกุลเป็น .pl
- ก่อน upload ต้องให้แน่ใจว่ากำหนด mode การส่งแบบ ascii ไม่ใช่
bin เพราะถ้าเป็น binary จะใช้งานไม่ได้
- หลัง upload แล้วให้ใช้ ftp version ใหม่หน่อย ทำการ chmod เป็น 755 เช่น
chmod 755 f.pl เป็นต้น
- ตอนเรียกใช้ให้เรียกทาง url ดังนี้
http://www.isinthai.com/uname/f.pl
- ถ้าเรียกใช้แบบ http://www.isinthai.com/uname/f.pl จะแสดง source
code ออกมาตรง ๆ ไม่ผ่านการประมวลผล
- ควรทราบว่า Home directory อยู่ที่ /home/uname
3.2 Perl สำหรับสร้างแฟ้ม
: โปรแกรมเล็ก ๆที่ใช้ในการสร้างแฟ้ม ตัวอย่างนี้มี 6 ระเบียน 5 เขตข้อมูล
Html ที่ใช้เรียก perl มาทำงาน <form action=http://www.isinthai.com/thaiall/perlcrt.pl method=post>
<input type=submit value=Create_dataperl.txt> perlcrt.pl
</form>
หรือ จะเรียกตรง ๆ ผ่าน URL ก็ได้เช่น
http://www.isinthai.com/thaiall/perlcrt.pl
#!/usr/bin/perl
print"Content-type:text/html\n\n";
$filename = "/home/burin/public_html/dataperl.txt";
open(myfile,">$filename");
$dat = "3101001:Tom:Jojo:16000:A:\n";
print myfile $dat;
$dat = "3101002:Naja:Rujj:5600:R:\n";
print myfile $dat;
$dat = "3101003:Packman:Somsu:7000:L:\n";
print myfile $dat;
$dat = "3101004:Nichole:Jaiboon:15000:A:\n";
print myfile $dat;
$dat = "3101005:Suwi:Hancharn:10600:A:\n";
print myfile $dat;
$dat = "3101006:Nirund:Jiva:9700:A:\n";
print myfile $dat;
close(myfile);
print "<body bgcolor=#ddffff>Create 6 Records and 5 Fields : Finish";
3.3 Perl
สำหรับแสดงข้อมูลจากแฟ้ม
: โปรแกรมเล็ก ๆ ที่อ่านข้อมูลจากแฟ้มมาแสดง
Html ที่ใช้เรียก perl มาทำงาน <form action=http://www.isinthai.com/thaiall/perllst.pl method=post>
<input type=submit value=List_dataperl.txt> perllst.pl
</form>
หรือ จะเรียกตรง ๆ ผ่าน URL ก็ได้เช่น
http://www.isinthai.com/thaiall/perllst.pl
#!/usr/bin/perl
print"Content-type:text/html\n\n";
$filename = "/home/burin/public_html/dataperl.txt";
print "<body bgcolor=#ddffff><pre>";
open(myfile,"<$filename");
@getrec = <myfile>;
close(myfile);
$i = 1;
foreach $rec (@getrec) {
@r = split(/:/,$rec);
print $i,$r[0]," - ",$r[1],$r[2],$r[3],$r[4],$r[5],"\n";
$i++;
}
3.4 Perl
สำหรับเพิ่มระเบียนใหม่
: โปรแกรมเล็ก ๆ เพิ่มระเบียนใหม่อย่างง่าย ๆ ทีละระเบียน
Html
ที่ใช้เรียก perl มาทำงาน <form action=http://www.isinthai.com/thaiall/perladd.pl method=post>Add new<br>
s-id : <input type=text name=sid><br>
s-name : <input type=text name=sn><br>
s-surname : <input type=text name=ss><br>
s-salary : <input type=text name=ssal><br>
status: <input type=text name=stat><br>
<input type=submit value=Add_dataperl.txt>
</form>
#!/usr/bin/perl
&parse_form;
print"Content-type:text/html\n\n";
$filename = "/home/burin/public_html/dataperl.txt";
open(myfile,">>$filename");
$dat = "$config{'sid'}:$config{'sn'}:$config{'ss'}:$config{'ssal'}:$config{'stat'}:\n";
print myfile $dat;
close(myfile);
print "Add new : Finish";
exit;
sub parse_form {
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
@pairs = split(/&/, $ENV{'QUERY_STRING'});
} elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
}
foreach $pair (@pairs) {
local($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$config{$name} = $value;
}
}
3.5 Perl สำหรับลบระเบียน
: โปรแกรมเล็ก ๆ ที่ใช้ลบระเบียนตาม key field ที่ป้อนเข้าไป
Html ที่ใช้เรียก perl มาทำงาน <form action=http://www.isinthai.com/thaiall/perldel.pl method=post>Delete record on
s-id : <input type=text name=sid> <input type=submit value=Del_dataperl.txt>
</form>
#!/usr/bin/perl
&parse_form;
print"Content-type:text/html\n\n";
$filename = "/home/burin/public_html/dataperl.txt";
print "<body bgcolor=#ddffff><pre>";
open(myfile,"<$filename");
@getrec = <myfile>;
close(myfile);
$i = 1;
open(myfile,">$filename");
foreach $rec (@getrec) {
@r = split(/:/,$rec);
if ($r[0] ne $config{'sid'}) {
print myfile $rec;
}
}
close(myfile);
print "Delete : Finish";
exit;
sub parse_form {
if ($ENV{'REQUEST_METHOD'} eq 'GET') {
@pairs = split(/&/, $ENV{'QUERY_STRING'});
} elsif ($ENV{'REQUEST_METHOD'} eq 'POST') {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
}
foreach $pair (@pairs) {
local($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$config{$name} = $value;
}
}
3.6 Perl เรียกตัวเองมาแสดงผล
: โปรแกรมนี้เป็น ภาษา perl ซึ่งทดสอบให้ ประมวลผลได้ใน linux เครื่อง
isinthai.com นี้
โปรแกรมนี้ชื่อ testf.pl ถูกเก็บไว้ในห้อง /home/burin/public_html และ link
ไปยังห้อง /var/www/html/burin ซึ่งต้องกำหนดให้ chmod 700 เพื่อให้สั่งประมวลผล
shell script ตัวนี้ได้ การเรียก Perl script ตัวนี้ ให้ทำตามข้างล่างนี้ >>
http://www.isinthai.com/thaiall/testf.pl
ตัวอย่างโปรแกรมที่ใช้ทดสอบ
#!/usr/bin/perl
$filename = "/home/burin/public_html/testf.pl";
print"Content-type:text/html\n\n";
print"<body bgcolor=#ffffdd><pre>";
open(myfile,"$filename");
@getrec = <myfile>
close(myfile);
$i = 1;
foreach $r (@getrec) {
$r =~ s/</</g;
$r =~ s/>/>/g;
$r =~ s/"/"/g;
print $i,". ",$r,"<br>";
$i++;
}
print"<hr>";
3.7 การเปิด perl ให้เฉพาะ
account
: กำหนดว่าห้องใดสามารถใช้ภาษา perl หรือ cgi ได้
เพื่อความปลอดภัย server ส่วนใหญ่จะไม่เปิดบริการ cgi หรือ perl ให้กับทุกคน
หากต้องการเปิดบริการให้ใคร ก็จะกำหนดให้เฉพาะคนนั้น
หลักการนี้ผมนำไปใช้กับการกำหนดในส่วนของ virtual host ทำให้ใช้งานได้ยืดหยุน
และปลอดภัย มากกว่าการเปิดให้บริการทุกคน
การกำหนดว่าห้องใด หรือ host name ใด สามารถใช้บริการ perl หรือ cgi
ได้สามารถกำหนดในแฟ้ม /etc/httpd/conf/httpd.conf มีหลายจุดในแฟ้มนี้ที่สามารเปิด
หรือปิดบริการได้ โดยใช้คำว่า options ExecCGI หรือ options all
กำหนดบริการ ดูรายละเอียดเพิ่มเติมได้จากหัวข้อ 9.11 และ 9.62
4.1 PHP พิมพ์ข้อความอย่างง่าย
: แสดงการใช้ PHP พิมพ์ 1 ถึง 5 ซึ่งโครงสร้างภาษาคล้าย Perl และ C
ข้อควรทราบ
- ไม่ต้อง chmod แฟ้ม php ก็ประมวลผลได้
- ไม่ต้องอยู่ใน cgi-bin โปรแกรม php ก็ทำงานได้
ตัวอย่างโปรแกรมที่ใช้ทดสอบ
<?
for ($i=1;$i<=5;$i++){
echo "$i<br>";
}
?>
4.2 อ่านข้อมูลจาก Mysql
มาแสดงผล
: การใช้ความสามารถของ Mysql ในการเลือกข้อมูลมาให้ PHP
ตัวอย่างโปรแกรม listall.php
<?
echo "First line of the printing on screen.";
$link = mysql_connect("localhost","thaiall","some_pass");
if ($link) {
echo "Connect OK<hr>";
mysql_select_db("test",$link);
$query = "select * from testf";
$process = mysql_query($query,$link);
$i = 1;
while ($obj = mysql_fetch_object($process)) {
echo $i.$obj->fld1." - ";
echo $obj->fld2." - ";
echo $obj->fld3."<br>";
$i++;
}
mysql_close($link);
} else {
echo "Connect error";
}
?>
4.3 เพิ่มระเบียนใหม่เข้า
Mysql
: รับข้อมูลทีละรายการส่งเข้า Mysql
ตัวอย่างโปรแกรม addone.php
<?
$link = mysql_connect("localhost","thaiall","some_pass");
if ($link) {
echo "Connect OK<hr>";
mysql_select_db("test",$link);
$query = "insert into testf values('abc','def',5)";
$result = mysql_db_query("test",$query);
if (!result) {
echo "ผิดพลาด";
} else {
echo "เพิ่มเรียบร้อย";
}
mysql_close($link);
} else {
echo "Connect error";
}
?>
4.4 เพิ่มระเบียนใหม่เข้า Mysql
หลายระเบียนผ่าน form
: รับข้อมูลได้หลายรายการพร้อม ๆ กันส่งเข้า Mysql
ตัวอย่างโปรแกรมที่ใช้ป้อนข้อมูล เตรียมส่งเข้า mysql (addmany.htm)
ข้อมูลที่ส่งเข้าจะใช้เครื่องหมาย , แยกระหว่างเขตข้อมูล และ 1 บรรทัดก็คือ 1 ระเบียน ทำให้ผู้ใช้สามารถนำข้อมูลจาก Excel มา export CSV และใช้ที่นี่ได้
<form action=addmany.php>
<textarea name=manyrecord rows=6 cols=40></textarea>
<input type=submit></form>
ตัวอย่างโปรแกรมที่ใช้ส่งข้อมูลเข้า Mysql (addmany.php ถูกสั่งจาก addmany.htm)
<?
$getline = preg_split("/[\s\n]+/",$manyrecord);
for ($j=0;$j<count($getline);$j++) {
$l = $j + 1;
$getfield = preg_split("/[\s,]+/",$getline[$j]);
print "$l $getfield[0] - $getfield[1] - $getfield[2]<br>";
}
$link = mysql_connect("localhost","thaiall","some_pass");
if ($link) {
echo "Connect OK<hr>";
mysql_select_db("test",$link);
for ($j=0;$j<count($getline);$j++) {
$l = $j + 1;
$getfield = preg_split("/[\s,]+/",$getline[$j]);
print "$l $getfield[0] - $getfield[1] - $getfield[2]";
$query = "insert into testf values('$getfield[0]','$getfield[1]',$getfield[2])";
$result = mysql_db_query("test",$query);
if (!$result) {
echo "ผิดพลาด";
} else {
echo "เพิ่มเรียบร้อย";
}
echo "<br>";
}
mysql_close($link);
} else {
echo "Connect error";
}
?>
4.21 บริการส่ง mail ด้วย php
: เพื่อให้ web server ที่เปิดบริการ SMTP (/usr/sbin/sendmail) ถูกเรียกใช้โดย
php สำหรับส่ง mail
บริการนี้เปิดให้ทดสอบว่าส่งถึงท่านไหม แต่อาจใช้ไม่ได้ทุกเครือข่าย เพราะกำหนด
RELAY ให้เฉพาะบางเครือข่ายเท่านั้น แต่ถ้า copy source code ไปใช้ก็น่าจะใช้ได้เลย
โดยโปรแกรมตัวอย่างได้มีการตรวจสอบอะไรนิดหน่อย
ซึ่งอาจนำไปประยุกต์ใช้งานสำหรับริการต่าง ๆ ได้ง่ายขึ้น เช่น contact us หรือ
e-commerce เป็นต้น โปรแกรมนี้ได้ทดสอบแล้วที่
http://www.isinthai.com/~php/mail.htm และ http://lampang.thcity.com/mail.htm
ข้อควรทราบ : โปรแกรมนี้ไม่ได้ตรวจสอบอะไรมากมาย โดยแบ่งโปรแกรมออกเป็น
2 ส่วน เพื่อให้ง่ายสำหรับผมในการอธิบาย ว่า ส่วนที่ 1
ใช้รับค่าจากผู้ใช้ ส่วนที่ 2 ใช้ส่ง e-mail โดยตรง แต่การจะส่ง mail ได้
เครื่องที่ท่านนำโปรแกรมทั้ง 2 นี้ไปวางต้องมีคุณสมบัติ 2 ประการ 1. ต้องเป็น web server ที่บริการ php 2. ต้องให้บริการ smtp โดยเปิด
relay ให้กับผู้ใช้เข้ามาใช้ได้
Source code : mail.htm
<body>
<form action=mail.php method=get>
<input name=refer type=hidden value="http://www.isinthai.com/~php/mail.htm">
From : <input name=from value="saleman@oho.com" 0><br>
To : <input name=to value="burin@yonok.ac.th" 0><br>
Subject : <input name=subject value="test sendmail by isinthai.com" size=50><br>
<textarea name=message rows=5 cols=80>
Test form isinthai.com/~php/mail.htm
</textarea><br>
<input type=submit value=send>
</form>
</body>
Source code : mail.php : สำหรับรับข้อมูลเพื่อส่ง mail ออกไป (ทำหน้าที่ส่ง e-mail โดยตรง)
<body>
<font color=blue>Send mail : </font><font color=darkgreen>
<?
$lf = chr(13). chr(10);
$msg = $_GET['message'] . $lf ."IP address: " . $_SERVER["REMOTE_ADDR"];
$msg = $msg . $lf ."Service by: http://www.isinthai.com/~php/mail.htm";
// mail ("burin@yonok.ac.th","your order","want 100 car today","From: saleman@oho.com");
if ($_GET['to'] <> "burin@yonok.ac.th" || $_GET['from'] <> "saleman@oho.com") {
mail($_GET['to'],":: ".$_GET['subject'],$msg,"From : ".$_GET['from']);
echo "ok";
} else {
echo "invalid";
}
?>
</font><br><a href=<? echo $_GET['refer']; ?>><? echo $_GET['refer']; ?></a>
</body>
อีก code หนึ่ง /var/www/html/isinthai/sndform.php
ที่ใช้งานอยู่จริง
<?
$mto = $_POST["mto"];
$msubj = $_POST["msubj"];
$mfrom = $_POST["mfrom"];
$message = $_POST["message"];
$redirect = $_POST["redirect"];
if (empty($redirect)) { $redirect = "http://www.isinthai.com/isinthai/sndform.php"; }
if (empty($mto) || empty($msubj) || empty($mfrom) || empty($message)) {
echo "<body bgcolor=#ffffdd><font >";
echo "<form action=sndform.php method=post>";
echo ".... To : <select name=mto >";
echo "<option value=nirund@yonok.ac.th selected>ดร.นิรันดร์ จิวะสันติการ";
echo "<option value=atichart@yonok.ac.th>อติชาต หาญชาญชัย";
echo "<option value=burin@yonok.ac.th>ผู้ดูแลเครือข่าย, HW, SW, ฐานข้อมูล";
echo "</select><br>.. From : <input name=mfrom 0> EX. yourname@hotmail.com<br>";
echo "Subject : <input name=msubj size=50> EX. Why the name is YONOK?<br>";
echo "Messages: <textarea name=message rows=10 cols=80>";
echo "</textarea> <input type=submit value=Send_mail><br>";
echo "<input name=redirect type=hidden value=http://www.isinthai.com/isinthai/sndform.php>";
echo "</form>";
$message = "hi\nthis is test\nthis is line.";
$mto = "burin@yonok.ac.th";
$msubj = "the subject";
$mfrom = "burin@thaiall.com";
} else {
$message=$message."\n\nService from http://".$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"];
$message=$message."\nScript developer by webmaster@yonok.ac.th";
$message=$message."\nIP address : ".$_SERVER["REMOTE_ADDR"];
$msubj = "Subject_".$msubj;
$txtfrom = "From: ".$mfrom."\nX-Mailer: PHP/" . phpversion();
mail($mto, $msubj, $message, $txtfrom );
echo "<html><head><meta http-equiv=Refresh CONTENT='50; URL=$redirect'>";
echo "</head><body><font >";
echo "Your message sending [ <b>completely</b> ]<hr color=darkgreen><pre>";
echo "From : $mfrom \n";
echo "To : $mto \n";
echo "Subject : $msubj \n";
echo "Message : $message</pre>";
}
?>
4.22 ดูข้อมูลในแฟ้มต่าง ๆ
ด้วยโปรแกรม php
: โปรแกรมนี้ช่วยให้ดูแฟ้มต่าง ๆ ในระบบโดยไม่ต้องเข้า Linux
ไม่ควรใช้ถ้าผู้ให้บริการไม่ยอมให้ใช้ ลองถามเขาก่อนใช้นะครับ
ตัวอย่างโปรแกรม lastmsg.php
<form action=http://www.isinthai.com/lock/lastmsg.php method=get>
File: <input name=file value=messages>
Line: <input name=l value=20>
Password: <input name=p type=password value=suwit>
<input type=submit value=tail>
</form><font ><pre>
<?
if ($_GET['p'] == "prasert") {
$x = "tail --lines=" . $_GET['l'] . " ". $_GET['file'];
echo `$x`;
}
?>
4.23 ใช้ php อ่านข้อมูลจาก
/var/log/maillog
: เพื่อรายงานสถิติการใช้ e-mail ของบุคลากร
วันหนึ่งผมอ่านข้อมูลการเข้าใช้ e-mail จาก
/var/www/html/mail/database/username_yn1.yonok.ac.th/inbox โดยเช็คจากเวลา update
filectime() แต่พบว่าข้อมูลที่ได้คือ ไม่รวมไปถึง user ที่ใช้ outlook อ่าน e-mail
ผ่าน pop3 จึงต้องไปอ่านข้อมูลการเข้าใช้ e-mail จากแฟ้ม /var/log/maillog
ทำให้รายงายได้ละเอียดขึ้น สามารถดูผลของโปรแกรมนี้ที่
http://www.isinthai.com/mail/database/index.php
อันที่จริง โปรแกรมนี้จะอยู่ที่ไหนก็ได้ แต่ผมเก็บไว้ที่นี่
เพราะห้องนี้ยังไม่เก็บอะไรเกี่ยงกับ mail ที่สำคัญ แต่สิ่งที่ต้องทำคือการ chmod
644 maillog แต่เดิมคุณสมบัติของแฟ้มเป็น 600 จะใช้ php ของ apache ไปอ่านมาไม่ได้
ตัวอย่างโปรแกรม /var/www/html/mail/database/index.php
<html><head><title>Username of /var/log/maillog</title></head>
<body bgcolor=gray topmargin=0 leftmargin=0><font face="fixedsys" ><?
$datefull = date("F d, Y");
if(date("j") < 10) {$d = date("M")." ".date("j");}else{$d = date("M j");}
echo "Today : <font color=yellow>".$datefull."</font><br>";
echo "Last login: <a href=index.php?act=total>total</a> ";
if ($_GET['act'] <> "view" && $_GET['act'] <> "total") {
echo ", <a href=index.php?act=view>today</a> ";
} else {
echo "<ol><font color=white>";
$ar = file("/var/log/maillog");
if ($_GET['act'] == "total") { $max = 0; } else { $max = count($ar) - 500; }
$j = 0;
for ($i=count($ar);$i>=$max;$i--) {
if (strpos($ar[$i],"Login user=") && _
(strpos($ar[$i],"$d") > -1 || $_GET['act'] == "total")) {
$user = stristr($ar[$i],"user=");
$uofar = substr($user,5,strpos($user," ")-5);
$found = "no";
for($k=0;$k<$j;$k++) {
if (strpos($ur[$k],"$uofar") > -1) { $found = "yes"; }
}
if ($found == "no") {
if (strpos($ar[$i],"host=yonok.ac.th") == false) {
$p="pop";
} else {
$p=" ";
}
$ur[$j] = $uofar." <font color=black>".substr($ar[$i],7,8)."</font> ".$p;
$ut[$j] = $uofar." <font color=black>".substr($ar[$i],0,6)."</font> ".$p;
$j = $j + 1;
}
}
}
for ($i=0;$i<$j;$i++) {
if ($_GET['act'] == "total") {
echo "<li>".$ut[$i];
} else {
echo "<li>".$ur[$i];
}
}
}
?>
</ol></body></html>
4.81 Upload ด้วย php
: รับชื่อแฟ้มแล้วส่งเข้าไปในห้องที่ต้องการ
โดยตรวจรหัสผ่านที่เก็บไว้ในห้องนั้น
upload.htm ส่วนนี้เป็น html สำหรับส่งค่าให้ upload.php
<body>
<form enctype="multipart/form-data" method=post action=upload.php>
<input type=hidden name="MAX_FILE_SIZE" value=200000>
User <input type=text name=guser><br>
Password <input type=password name=gpassword><br>
Select file <input type=file name=upload><br>
<input type=submit value=Upload>
</form>
<form enctype="multipart/form-data" method=post action=listfile.php>
User <input type=text name=guser><br>
Password <input type=password name=gpassword><br>
<input type=submit value=List>
</form>
</body>
upload.php ทำหน้าที่ส่งแฟ้มจากเครื่องท่านเข้าไปเก็บใน server
โปรแกรมนี้เขียนได้เพราะอ่านวิธี upload จากหนังสือ PHP ของสุพิน วรรณา เล่มสีส้ม มีรูปหน้าคนครึ่งหน้า หน้า 494
แต่ได้ปรับปรุงนิดหน่อย เพื่อให้ใช้งานใน isinthai.com ขณะที่ปิด telnet หรือ ftp (เดือนพฤษภาคม 2544)
<?
include("updateinclude.php");
setupinit();
if ($upload <> "none" and $upload_size < 200000) {
echo "User: $guser<br>";
echo "Local File: $upload<br>";
echo "Name: $upload_name<br>";
echo "Size: $upload_size<br>";
echo "Type: $upload_type<br>";
copy($upload,"$fpath/$upload_name");
chmod("$fpath/$upload_name",0700);
unlink($upload);
} else {
echo "Please select file";
}
?>
uploadinclude.php ใช้ในทุกโปรแกรม เพื่อตรวจสิทธิที่จะเข้า update
ใช้ตรวจ guser และ gpassword กับแฟ้ม password.pl เพื่อตรวจว่าเป็นผู้ใช้ที่ถูกต้องหรือไม่
ในการเขียนแบบนี้ทำให้ ระบบข้อมูลถูก hack ได้ง่ายมาก แต่ต้องใช้ php เข้าไป hack
<?
function setupinit() {
global $guser,$gpassword,$fpath;
$fpath="/home/burin/public_html/$guser";
if ($guser) {
$f = fopen("$fpath/password.pl","r");
if (!feof($f)) {
$d = fgets($f,14);
fclose($f);
}
if (strlen($d) <> 13){
$d = crypt(substr($d,0,strlen($d)),$guser);
if ($d == crypt($gpassword,$guser)) {
$f = fopen("$fpath/password.pl","w");
if ($f) {
fputs($f,$d);
fclose($f);
}
}
echo "Crypt password.pl : OK $d".crypt($gpassword,$guser)."<hr>";
}
}
if ($d == crypt($gpassword,$guser)) {
echo "Welcome.. <b>$guser</b> : OK<hr>";
} else {
echo "Password invalid of $guser";
exit;
}
}
?>
listfile.php ดูรายชื่อแฟ้ม
โดยใช้ include file สำหรับตรวจ guser และ gpassword ที่เหมาะสมกับแฟ้ม password.pl
<?
include("updateinclude.php");
setupinit();
$dir_handle = opendir($fpath);
echo "<pre><font size=4 face=fixed>";
while($list = readdir($dir_handle)) {
if (substr($list,0,1) <> "." and $list <> "mail" and $list <> "bash_profile" and
$list <> "pico.save" and $list <> "password.pl") {
echo $list." - ".filesize("$fpath/$list")." Byte<br>";
}
}
closedir($dir_handle);
?>
5.1 การติดตั้ง Mysql
: Mysql คือส่งบริการฐานข้อมูล เพื่อให้ใช้ภาษาต่าง ๆ เข้ามาดึงข้อมูลไปได้เช่น
PHP, VB เป็นต้น
โปรแกรมจาก www.mysql.com mysql-3.22.32.tar.gz ขนาด 4,295,387
เว็บที่เกี่ยวข้อง www.apache.org, www.php3.net, www.mysql.com
ตรวจสอบ process mysql run อยู่หรือไม่ด้วยคำสั่ง ps aux|grep mysql
วิธี set password ของ root /usr/local/bin/mysqladmin -u root password
helloisinthai คำว่า helloisinthai เป็นคำที่ท่านเปลี่ยนได้
ครั้งต่อไปที่จะเข้า mysql ในฐานะ root ก็จะต้องกรอก password
start Mysql ด้วยคำสั่ง
cd /usr/local/bin
./safe_mysqld &
ทดสอบ run Mysql
./mysql
mysql>status
mysql>exit
ขั้นตอนการติดตั้ง
su
cd /usr/local
tar xfvz /home/burin/mysql-3.22.32.tar.gz
ln -sf mysql-3.22.32 mysql
adduser mysql
chown -R mysql:root mysql-3.22.32 mysql
su mysql
เป็น su ก็ทำได้ พอเป็น mysql มีปัญหา ว่าไม่สามารถใช้ gcc ที่ถูก lock ตาม 9.52
cd mysql
./configure --with-charset=tis620
make
su
make install
./scripts/mysql_install_db
cd /usr/local
chown -R mysql:root var
cd /etc/rc.d/init.d
cp /usr/local/mysql/support-files/mysql.server mysql
chmod +x mysql
/sbin/chkconfig --del mysql
/sbin/chkconfig --add mysql
5.2 วิธีใช้งาน Mysql
เบื้องต้น
: เพื่อให้เห็นการทำงานอย่างง่าย ๆ ของ Mysql ก่อนนำไปใช้ในภาษาอื่น
ตัวอย่างข้างล่างนี้จะแสดงการสร้างตาราง แสดงข้อมูล เพิ่ม ลบ และแก้ไข
ตัวอย่างการใช้งาน Mysql
[thaiall@www thaiall]$ mysql -u username
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 5 to server version: 3.22.32
Type 'help' for help.
mysql> status
mysql> show databases;
mysql> use test
mysql> show tables;
mysql> create table testf (
-> fld1 char(20),
-> fld2 char(20),
-> fld3 integer(3),
-> fld4 date );
mysql> select * from testf;
mysql> insert into testf (fld1, fld2, fld3)
-> values ('tom','dang',5 );
mysql> insert into testf (fld1, fld2, fld3) value ('siri','maru',19);
mysql> select * from testf;
+------+------+------+
| fld1 | fld2 | fld3 |
+------+------+------+
| tom | dang | 5 |
| siri | maru | 19 |
+------+------+------+
2 rows in set (0.00 sec)
mysql> exit
5.90 การเพิ่มผู้ใช้ใน Mysql
: การเพิ่มผู้ใช้ จะทำให้ Databases ที่สร้างขึ้นมีความเป็นส่วนตัว
ในอันที่จริง ถ้าท่านเป็นเจ้าของระบบ และมี user เดียว
หรือกำหนดสิทธิให้ทุกคนสามารถเข้าใช้ mysql ได้หมด ก็ไม่จำเป็นต้อง สร้าง user ใน
mysql เพราะท่านสามารถสร้าง table ใน test database และใช้งานได้เลย แต่ถ้าสร้าง
user ขึ้นมา ทุกคนที่จะใช้ database จะต้องมี user และ password ที่ถูกต้อง
แต่ถ้าสร้างใน test ใคร ๆ ที่เข้าระบบได้ก็จะเข้าส่วนของ mysql ได้ ..
ก็พิจารณาตามกรณีไป สำหรับใน server นี้จะให้ทุกคนเข้าใช้ mysql ได้เต็มที่ ..
และขอให้เป็นไปตามความเหมาะสม
หากไม่กำหนด user ก็สามารถใช้งานได้บางประการ แต่อาจไม่ทั้งหมด เมื่อกำหนด user
ได้แล้ว ก็สามารถใช้งานตามขอบเขตของ database ที่กำหนดได้
แต่เรื่องที่สำคัญอีกประการหนึ่งก็คือ การกำหนดรหัสผ่านให้กับ root มิเช่นนั้น
อาจมีคนเข้าไปกำหนด ซึ่งไม่เป็นการดีแน่ ซึ่งคำสั่งสำหรับกำหนดรหัสผ่านของ root ของ
mysql คือ /usr/bin/mysqladmin -u root password
helloisinthai ควรทำเมื่อติดตั้ง Mysql เสร็จสิ้นตามขั้นตอน 5.1
ข้อมูลเกี่ยวกับการเพิ่มผู้ใช้
http://www.mysql.com/doc/A/d/Adding_users.html
MySQL root user, and the root user must have the insert privilege for the
mysql database and the reload administrative privilege. Also, if you have
changed the root user password, you must specify it for the mysql commands
below.
You can add new users by issuing GRANT statements:
shell> mysql --user=root -phelloisinthai
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@localhost
IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO monty@"%"
IDENTIFIED BY 'some_pass' WITH GRANT OPTION;
mysql> GRANT RELOAD,PROCESS ON *.* TO admin@localhost;
mysql> GRANT USAGE ON *.* TO dummy@localhost;
These GRANT statements set up three new users:
monty
A full superuser who can connect to the server from anywhere, but who must
use a password 'some_pass' to do so. Note that we must issue GRANT statements
for both monty@localhost and monty@"%". If we don't add the entry with
localhost, the anonymous user entry for localhost that is created by
mysql_install_db will take precedence when we connect from the local host,
because it has a more specific Host field value and thus comes earlier in the
user table sort order.
admin
A user who can connect from localhost without a password and who is granted
the reload and process administrative privileges. This allows the user to
execute the mysqladmin reload, mysqladmin refresh, and mysqladmin flush-*
commands, as well as mysqladmin processlist . No database-related privileges are
granted. (They can be granted later by issuing additional GRANT statements.)
dummy
A user who can connect without a password, but only from the local host. The
global privileges are all set to 'N' -- the USAGE privilege type allows you to
create a user with no privileges. It is assumed that you will grant
database-specific privileges later.
6.1
slowaris.labs.pulltheplug.com
: Server ที่แข็ง และมี user:guest password:guest ให้เข้าไปลอง telnet ได้
ระบบนี้เป็น Solaris 5.8 ของ Sun ลองเข้าไปแล้วใช้อะไรได้หลายอย่าง ผมว่า ว่าง
ๆ hacker ลองเข้าไปดูก็ได้นะครับ เป็น server ที่แนะนำโดย Mr.RobiUz Miora
(robiuz@yahoo.com)
จดหมายด้านล่างนี้เขาแนะนำผมหลายอย่างเช่น ให้ใช้
OpenBSD ดีกว่า .. อ่านแล้วก็ได้ข้อคิดหลายอย่าง
Date: Wed, 13 Jun 2001 06:10:30 -0700 (PDT)
From: Mr RobiUz Miora
[robiuz@yahoo.com]
Dear Webmaster.
As I see www.isinthai.com.. I know you install SSH in your server and
restrict user behavior.In my opinion, you miss in 2 point....First as in my
previous e-mail, restrict shell isn't good idea.You want to make "Open host"
not "Restrict host", Right. But now I see your host like a seller
machine,choose the drink and get it. Not doing anything much more. If you
don't want any user or hacker I suggest you to disable and Close it.And second
, SSH is good for every host but it's duty is ENCRYPT , AUTHENTICATION and
AUTHORIZATION... it's not protect your system directly.
If you go to hacking website that provice Exploit Code you'll see very
very hole in REDHAT , Slackware and others software. I know it's difficult to
patch all.... So..LET'S TRY TO CHANGE OS TO SAFER ONE... As I know OpenBSD has
less bug than REDHAT or Slackware...You can Change to..
It's my opinion.Decider is YOU....
FYI.
RobiUz
คุณ robiuz mail มาอีกครั้ง และแนะนำว่าสามารถเปลี่ยน
shell ของตนเองด้วยคำสั่ง chsh ผมลองแล้วก็เป็นตามนั้นจริง แต่การใช้คำสั่งนี้
ก็ต้องออกไปที่ shell ปกติ ซึ่งผมก็ยังหาจุดออกไปไม่เจอ เพราะปัจจุบันจำกัด
account ด้วย Restrict shell
Date: Thu, 26 Jul 2001 01:26:07 -0700
(PDT)
From: Mr RobiUz Miora
To:
webmaster@isinthai.com
Subject: change shell
Dear webmaster,
All users can change his/her shell by chsh command so demo user change his
shell himself.Don't worry he doesn't gain root.
regard,
RobiUz
คนแบบนี้สิครับ ที่โลกต้องการ
6.2 academic.cmri.ac.th
: Server ที่แข็งมากอีกตัว เป็นของคนไทย ได้รับการแนะนำจาก apples@chek.com
ที่นี่เขียนบทความการลง Server ไว้น่าอ่าน และละเอียดดีครับ และคุณ
apples@chek.com ยังให้คำแนะนำผมมากมาย เช่นเรื่องของ restricted shell
ที่หาอ่านที่ไหนก็ไม่รู้เรื่อง มาได้ code และวิธีของท่านนี่หละครับ
จึงสำเร็จเรื่อง restrict ได้ด้วยดี
ผมรู้จักคุณ apples@chek.com เพราะเขาเป็นผู้คอยให้คำแนะนำ และช่วยเหลือ
ผู้คนใน wwwboard ของหลายที่ เช่น linux.thai.net เป็นต้น
http://academic.cmri.ac.th/downloads.php/howto/
http://academic.cmri.ac.th/downloads.php/howto/Apache%20Module.txt
ภาพนี้จากจอที่ telnet login ของ academic.cmri.ac.th (ผมเองก็ไม่มี account)
Welcome to Academic Services Machine
,
, ;:._.-`''.
;.;'.;` _ `.
',;` ( \ ,`-.
`:.`, (_/ ;\ `-.
';: / `. `-._
`;.;' `-,/ . `-.
';;' _ `^` `.
';; ,'-' `--._ ;
': `;; ,; `. ':`,,.__,,_ /
`;`:;`;:` ,; '. ;, ';';':';;`
.,; ' '-._ `':.;
.:; ` '._ `';;,
;:` ` :'`' ',__.)
`;:;:.,...;'`'
';. '`'::'`'' .'`'
,' `';;:,..::;`'`'
, .;` `'::''`
,`;`.
academic login:
6.71 จดหมายแจ้งปรับปรุงระบบ ของ
se-ed.net
: มีรายละเอียดหลายอย่างเขียนได้ดีมาก น่าอ่านเป็นกรณีศึกษา
Date: 2 สิงหาคม 2544
From: webmaster@se-ed.com (Sanyapong Kridakarn)
เรียนสมาชิกทุกท่าน
หลังจากที่ทางซีเอ็ดให้บริการฟรีอีเมล์ และฟรีโฮมเพจมา 1 ปี ขณะนี้ก็ถึงเวลาที่ทางทีมงานขอแจ้งให้ทราบว่า จะมีการปรับปรุงเปลี่ยนแปลง
เซิร์ฟเวอร์เพื่อให้สามารถให้บริการทุกท่านได้มากขึ้น และเพิ่มเติมความสามารถให้รองรับการใช้งานของทุกท่านได้มากกว่าเดิมในทุกๆ ด้าน
ทุกท่านคงพอจะทราบว่า ช่วงสองเดือนที่ผ่านมา เซิร์ฟเวอร์เกิดปัญหาหลายครั้ง โดยเกิดขึ้นจากหลายสาเหตุ เช่น
- พื้นที่ฮาร์ดดิสก์ 60 GB ของเซิร์ฟเวอร์เหลืออยู่ประมาณ 2 GB เท่านั้น
- การถูกถล่มด้วยเมล์จำนวนมาก (mail bomb) จากสมาชิก SE-ED.net ของเราท่านหนึ่ง
- ข้อจำกัดของ Linux ที่โฟลเดอร์หนึ่งจะมีไฟล์และโฟลเดอร์ได้เพียงประมาณ 32,000 โฟลเดอร์เท่านั้น ทำให้ไม่สามารถรองรับสมาชิกเพิ่มเติมได้
- ข้อจำกัดเว็บเซิร์ฟเวอร์ Apache ที่รองรับผู้ใช้พร้อมกันได้เพียง 256 ราย และทำให้เซิร์ฟเวอร์ทำงานช้ามากสำหรับผู้ใช้รายที่ 257 ขึ้นไป เมื่อคอมไพล์โปรแกรม
Apache ใหม่เพื่อให้รองรับผู้ใช้ได้มากขึ้นจนกระทั่งเกิด Error โดยไม่คาดหมาย ทำให้ไม่สามารถอ่านเมล์ผ่านเว็บและเปิดเว็บเพจของสมาชิกได้ประมาณ 2 วัน
- การระบาดของไวรัส Sircam
- ล่าสุด ระบบไฟล์บนฮาร์ดดิสก์ของลินุกซ์เกิดขัดข้อง จนเซิร์ฟเวอร์หยุดทำงาน ต้องไปแก้ไขเครื่องถึงอินเทอร์เน็ตประเทศไทย ระบบทุกอย่างหยุดทำงาน~ 24 ชั่วโมง
ต้องขออภัยทุกท่านที่เกิดปัญหาและข้อติดขัดเหล่านี้ ทีมงานจะทุ่มเทอย่างเต็มที่เพื่อให้เกิดเหตุการณ์เหล่านี้น้อยที่สุด และในกรณีที่เกิดเหตุสุดวิสัย
ก็จะรีบแก้ไขให้บริการทุกอย่างกลับมาเป็นปกติอีกครั้งในเวลารวดเร็วที่สุดเท่าที่จะทำได้
ขณะนี้ทางทีมงานกำลังอัปเกรดเครื่องใหม่ และเปลี่ยนแปลงระบบปฏิบัติการที่ใช้ดังนี้
ตารางเปรียบเทียบเซิร์ฟเวอร์ใหม่และเก่า
| New Server | Current Server |
| CPU | Dual Pentium III 933 MHz | Pentium III 650 MHz |
| Motherboard | Intel Server Board STL2 | Intel Server Board L440GX |
| Memory | 1 GB | 512 MB |
| Harddisk | 300 GB | 60 GB |
| OS | Windows 2000 Advanced Server | Redhat Linux 6.2 |
| Web server | Apache 1.3.20 for Windows | Apache 1.3.20 |
นอกจากนี้จะยังมีระบบไฟร์วอลล์เพื่อป้องกันระบบให้ปลอดภัยจากการโจมตีและการแฮกได้มากขึ้น
เนื่องจากเราต้องเปลี่ยนระบบปฏิบัติการ ทำให้ต้องเปลี่ยนระบบรับส่งอีเมล์ใหม่ทั้งหมด
* ท่านที่ใช้ Outlook หรือ Eudora ไม่ต้องปรับเปลี่ยนใดๆ ทั้งสิ้น เนื่องจากเมล์เดิมจะได้รับการจัดเก็บไว้ในเครื่องของสมาชิกอยู่แล้ว
* ท่านที่ใช้การอ่านเมล์ผ่านเว็บเบราเซอร์ จะไม่สามารถอ่านเมล์เดิมได้ เพราะระบบใหม่จะเสมือนการสร้างตู้จดหมายขึ้นมาใหม่ทั้งหมด
(ทีมงานจะจัดระบบให้สามารถตรวจสอบเมล์ในระบบเดิมได้ โดยจะเก็บเมล์เหล่านี้อีกระยะหนึ่ง เพื่อให้ท่านสามารถ Forward เมล์เหล่านั้นไป
เก็บไว้ในระบบใหม่ได้) สำหรับวันเวลาที่จะดำเนินการเปลี่ยนแปลงระบบจริงๆ นั้น จะแจ้งให้ทุกท่านทราบในโอกาสต่อไป (คาดว่าจะอยู่ในช่วงสัปดาห์นี้)
ในช่วงที่ดำเนินการเปลี่ยนระบบจริงนั้น อาจเกิดข้อขัดข้องอยู่บ้าง ทีมงานจึงขออภัยล่วงหน้าถ้าเกิดกรณีดังกล่าวขึ้น และหวังว่าทั้งหมดนี้
เพื่อให้บริการที่ดีที่สุดสำหรับสมาชิกทุกท่าน
6.72 thcity.com (เปลี่ยน Linux เป็น
Windows)
: Free hosting ที่ถือได้ว่าเร็วที่สุดแห่งหนึ่งของเมืองไทย ผมเองก็ใช้บริการ
เพราะประทับใจในความเร็ว และ datatransfer ปีละ 900 บาท
ข้อมูลจากเว็บหน้าแรกของ thcity.com เมื่อ 1 ตุลาคม 2545
ศูนย์ พิษณุโลก.com เราได้เปิด Free Hosting ขึ้นมาครั้งแรกในปี 2542
ความตั้งใจคือหวังแค่เพียงว่า ให้นักเรียนนักศึกษา
ในจังหวัดพิษณุโลกเราได้มีที่ฝึกฝนฝีมือในการทำโฮมเพจเพื่อพัฒนาบุคลากรภายในจังหวัด
ให้เที่ยบเท่ากับเมืองใหญ่ๆ จากที่เราเป็นเพียงศูนย์เล็กๆ การดูแล Server
และข้อมูลจึงยังไม่ดีเท่าที่ควร จึงทำ ให้ข้อมูล ศูนย์หายไปบ้าง ปิดไปบ้าง แต่
วันหนึ่งเราจะโตเที่ยบเท่ากับ Hosting ทั่วๆ ไป (ความหวังสูงสุด)
หลังจากได้เปิด Thcity ขึ้นมาเป็น Free Hosting แล้ว
ก็มีสมาชิกทั่วประเทศเข้ามาขอกันเป็นจำนวนมาก User ของเราเคยมากถึง 20,000 กว่า
ในต้นปี 2544 แต่ ข้อมูลได้ศูนย์หายหมดเนื่องจาก เปิดเครื่องขึ้นมา ติดที่ Scan
Disk เราปล่อยให้ Scan ไป 3 วัน ก็ได้แค่ 21 %เราจึงจัดสินใจทำใหม่
แต่การทำใหม่ในครั้งนั้น ไม่สมบูรณ์ เหมือน ครั้งแรก เนื่องจาก
ทีมงานเรามีงานมากกว่าเดิม จึงมิได้ให้ความสำคัญกับ Free Hosting เท่าที่ควร
จนมาถึง กลางปี 2545 ที่ผ่านมา เริ่มทำขึ้นมาใหม่เป็น Server Linux
เราตั้งความหวังไว้ว่าจะทำ ให้ดีเหมือนเดิม เปิดได้เพียง 6 เดือน
เท่านั้นก็ต้องปิดไปเนื่องจาก ทีมงานเราไปเก่ง Linux เท่าที่ควร ทำให้ Security
ไม่ดีพอ
เปิดใหม่ครั้งนี้ ด้วยความสามารถของ NTFS และ IIS 5 ทำให้ทีมงานพิษณุโลก.com
เรามั่นใจเท่าที่ควร ที่เราจะบริการ Free Hosting ให้ดีกว่าครั้งที่ผ่านมา
ขอประกาศเปิด Free Hosting ครั้งใหม่ ณ วันที่ 1 ตุลาคม 2545 อย่างเป็นทางการ
ถึงแม้ว่าระบบจะยังไม่สมบูรณ์ เท่าที่ควร แต่เราจะพัฒนาจน เต็มความสามารถ
เลยทีเดียว (ข้อมูลเก่าท่านยังอยู่ครบ แต่อยู่ใน Linux อยู่ จะเปิดให้เข้ามา Load
กลับคืนไป เร็วๆ นี้ )
7.1 วิธีใช้โปรแกรม FTP
ส่งแฟ้มเข้าเครื่อง isinthai.com
: file transfer protocal สำหรับนำแฟ้มใน Pc ส่งเข้าเครื่อง server
isinthai.com ซึ่ง server ตั้งอยู่ที่วิทยาลัยโยนก เมื่อส่งเข้าแล้ว
จะทำให้คนทั่วโลกสามารถเปิดข้อมูลที่ท่านส่งเข้ามาได้ แต่ถ้าไม่ส่ง
ท่านจะเป็นผู้เดียวที่เห็นข้อมูลของท่าน และวิธีที่ผมใช้เป็นวิธีพื้นฐานที่ windows
ทุกเครื่องทำได้ แต่ถ้าเป็นมืออาชีพ เขาจะไปใช้ ws_ftp หรือ cute_ftp เพราะทำงานแบบ
graphic ซึ่งผมไม่แนะนำสำหรับมือสมัครเล่น เพราะจะต้องไป download โปรแกรมมายุ่งยาก
วิธีที่ผมจะเสนอ ปกติใช้ได้กับทุกเครื่อง ท่านสามารถพิมพ์ตามนี้ได้เลย
การใช้คำสั่ง ftp -i www.hypermart.net จะทำให้ใช้ mput หรือ mget
โดยไม่ขึ้น prompt ถามแต่ละแฟ้ม ทำให้ upload หรือ download รวดเดียวได้แฟ้มทั้งหมด
รูปแบบคำสั่งของ FTP ใน DOS
FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-w:windowsize] [-A] [host]
-v Suppresses display of remote server responses.
-n Suppresses auto-login upon initial connection.
-i Turns off interactive prompting during multiple file transfers.
-d Enables debugging.
-g Disables filename globbing (see GLOB command).
-s:filename Specifies a text file containing FTP commands
-a Use any local interface when binding data connection.
-A login as anonymous.
-w:buffersize Overrides the default transfer buffer size of 4096.
host Specifies the host name or IP address of the remote host to connect to.
สิ่งที่ต้องเตรียมการก่อนปฏิบัติ
- มี host name ที่อนุญาต และไปสมัครไว้แล้ว ทราบชื่อ host ที่ยอมให้ upload
เช่น www.isinthai.com
- มี username ในตัวอย่างนี้ใช้ demo
- มี password ในตัวอย่างนี้ใช้ istest
- มีแฟ้มข้อมูลที่เป็น text เช่น index.html, friend.htm
- มีแฟ้มข้อมูลที่ไม่เป็น text เช่น face.jpg, hello.gif, wow.doc
- มีข้อมูลทั้งหมดเตรียมไว้ในแผ่น diskette เช่น drive A
- ถ้างง ไปอ่านเพิ่มที่ http://www.thaiall.com/learn/useftp.htm
เปิด msdos และ cd c:\windows (ถ้ามีแฟ้มใน server ต้องการ copy
ออกมาก็ให้ใช้ get)
C:\WINDOWS>ftp.exe
ftp> open www.isinthai.com
Connected to www.isinthai.com.
220 www.isinthai.com FTP server (Version wu-2.6.0(1) Fri Jun 23 09:17:44 EDT 2000
0) ready.
User (www.isinthai.com:(none)): demo
331 Password required for demo.
Password:
230 User demo logged in.
ftp> lcd c:\isinthai
Local directory now C:\isinthai
ftp> ascii
200 Type set to A.
ftp> hash
Hash mark printing On (2048 bytes/hash mark).
ftp> put index.html
200 PORT command successful.
150 Opening ASCII mode data connection for index.html.
########################################
226 Transfer complete.
162886 bytes sent in 0.39 seconds (417.66 Kbytes/sec)
ftp> lcd a:\
ftp> ascii
ftp> put index.html
ftp> put friend.htm
ftp> bin
ftp> put face.jpg
ftp> put hello.gif
ftp> put wow.doc
ftp> bye
221-You have transferred 1601416xx bytes in 6 files.
221-Total traffic for this session was 160563xx bytes in 6 transfers.
|
7.2 การติดตั้งโปรแกรม .rpm ใน Redhat
เพิ่มเติม
: เมื่อมีโปรแกรมใหม่ ๆ ที่ต้องการติดตั้งเพิ่ม และเป็นโปรแกรมสกุล rpm
ตัวอย่างการติดตั้ง rblcheck
download จาก
http://prdownloads.sourceforge.net/rblcheck/rblcheck-1.5-1.i386.rpm?download
ซึ่งมี mirror site หลายแห่งให้เลือก
เมื่อได้โปรแกรมนี้มา ก็ติดตั้ง และทดสอบใช้
แต่โปรแกรมนี้เป็นเพียงโปรแกรมใช้ตรวจสอบ ip อย่างง่าย ๆ ว่า ip นั้นอยู่ใน list
ของ server ที่เราต้องการตรวจสอบ หรือไม่ ถ้ายอมรับ server ตัวนั้น และเพิ่มชื่อ
server ในแฟ้ม /etc/mail/sendmail.mc เพื่อทุกครั้งที่มีคนส่ง e-mail เข้ามา ตัว
server ของเราจะตรวจสอบ หากไม่เป็น blacklist ก็จะส่งให้กับสมาชิกในระบบได้
1. download โปรแกรม เช่น #lynx
http://umn.dl.sourceforge.net/sourceforge/rblcheck/rblcheck-1.5-1.i386.rpm
2. ติดตั้ง #rpm -i rblcheck-1.5-1.i386.rpm
3.
จะมีโปรแกรมไปเก็บใน /usr/bin โปรแกรมที่เราได้คือ rblcheck
4.
ตัวอย่างการใช้
#rblcheck -s orbs.dorkslayers.com 127.0.0.1 (จะพบว่าไม่มีปัญหา)
#rblcheck -s orbs.dorkslayers.com 127.0.0.2 (จะพบว่ามีปัญหา
และอยู่ใน black list)
#rblcheck -s dev.null.dk 127.0.0.2
(จะพบว่ามีปัญหา และอยู่ใน black list)
#rblcheck -s bl.spamcop.net
127.0.0.2 (จะพบว่ามีปัญหา และอยู่ใน black list)
#rblcheck -s
relays.osirusoft.com 127.0.0.2 (จะพบว่ามีปัญหา และอยู่ใน black list)
#rblcheck -s relays.visi.com 127.0.0.2 (จะพบว่ามีปัญหา และอยู่ใน
black list)
#rblcheck -s list.dsbl.org 127.0.0.2 (จะพบว่ามีปัญหา
และอยู่ใน black list)
#rblcheck -s relays.ordb.org 127.0.0.2
(จะพบว่ามีปัญหา และอยู่ใน black list)
5.
การใช้โปรแกรมนี้ต้องทดสอบทีละบรรทัด จึงสร้าง shell script
เพื่อช่วยให้พิมพ์ครั้งเดียวแต่ ตรวจสอบจาก list ได้ ด้วยการเขียน script ด้วย
pico ชื่อ rblcheckx ตัวอย่างคำสั่งสร้างคือ #pico /usr/bin/rblcheckx
6. สิ่งที่เขียนใน /usr/bin/rblcheckx
rblcheck -s orbs.dorkslayers.com $1
rblcheck -s dev.null.dk $1
rblcheck -s bl.spamcop.net $1
rblcheck -s relays.osirusoft.com $1
rblcheck -s relays.visi.com $1
rblcheck -s list.dsbl.org $1
rblcheck -s relays.ordb.org $1
7. ให้ใช้ chmod 755
rblcheckx จึงจะทำให้แฟ้มนี้สามารถทำงานได้
8. ทดสอบด้วย #rblcheckx
202.28.18.65 และแสดงผลดังข้างล่าง ว่า ip นี้ไม่อยู่ใน black list
202.28.18.65 not RBL filtered by orbs.dorkslayers.com
202.28.18.65 not RBL filtered by dev.null.dk
202.28.18.65 not RBL filtered by bl.spamcop.net
202.28.18.65 not RBL filtered by relays.osirusoft.com
202.28.18.65 not RBL filtered by relays.visi.com
202.28.18.65 not RBL filtered by list.dsbl.org
202.28.18.65 not RBL filtered by relays.ordb.org
พบในเอกสาร
http://www.redhat.com/support/resources/faqs/RH-sendmail-FAQ/book1.html หัวข้อ
3.13 ว่าบางเว็บที่ถูก blocked โดย RBL หากต้องการยกเลิกการ blocked เฉพาะบางเว็บ
ให้เพิ่มบรรทัดที่เขียนว่า yourwebsitename OK เพิ่มเข้าไปในแฟ้ม
/etc/mail/access แล้วปรับ config ใหม่ตามหัวข้อ 9.78
บริการตรวจสอบว่า server ถูก blacklist หรือไม่
1.
http://openrbl.org
2. http://www.moensted.dk/spam/
3.
http://www.spamhaus.org/sbl/index.lasso (Spam black listing)
4.
http://member.se-ed.net/modules.php?op=modload&name=News&file=article&sid=9&mode=thread&order=0&thold=0
(มีรายละเอียด blacklist)
8.1 การกำหนดค่าในแฟ้มต่าง ๆ
: เนื่องจาก linux ทำงานแบบ text mode ถึงจะมี graphic ช่วย
แต่พื้นฐานก็ยังเป็น text mode
ท่านสามารถใช้โปรแกรม vi หรือ pico ในการแก้ไขตามที่ต้องการได้
ซึ่งในแต่ละแฟ้มจะมีการกำหนดไม่เหมือนกัน และรูปแบบแต่ละแฟ้มก็ต่างกันด้วย
สำหรับทีมงานของเราไม่ใช้ผู้ชำนาญ ในหัวข้อนี้จึงนำข้อมูลที่ทดสอบ แล้วใช้งานได้
แต่อาจผิดในทาง Theory ซึ่งอาจก่อผลที่ผิดพลาดในอีกมุมมองหนึ่ง ที่ใด
ทราบว่าเรากำหนดอะไรผิดไป ขอได้ชี้แนะด้วย
8.1.1 :: /etc/login.defs
- ใช้กำหนดว่าเครื่องจะมี account สูงสุดได้เท่าใด
- เพราะเลขที่กำหนดประจำตัวผู้ใช้ เริ่มต้นที่ 500
UID_MIN 500
UID_MAX 60000
8.1.2 :: /etc/security/limits.conf
# ใช้จำกัดสิทธิของผู้ใช้
# คำสั่งจริงมี 2 บรรทัดล่างสุด
# ส่วนที่มี # เป็นคำอธิบายทั้งสิ้น
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - an user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit
# - maxlogins - max number of logins for this user
#
#<domain> <type> <item> <value>
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
#
# ผู้ใช้ในกลุ่ม users มีเนื้อที่ใน home directory ได้เพียง 1 Mb
@users hard rss 1000
* soft core 0
8.1.3 :: /etc/lilo.conf
# คู่แข่งของ /etc/grub.conf
# เมื่อแก้แฟ้มนี้แล้ว ให้สั่งประมวลผล /sbin/lilo
# เพื่อให้การ update แฟ้มข้างล่างนี้เป็นผล สำหรับการ boot ครั้งใหม่
# และครั้งต่อไปที่บูตเครื่องจะ default ไปที่ linux
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=50
default=linux
image=/boot/vmlinuz-2.2.14-5.0
label=linux
read-only
root=/dev/hda5
other=/dev/hda1
label=window
8.1.5 :: /etc/crontab
- ตารางเวลาการสั่งประมวลผลโปรแกรม
- หากต้องการสั่งงานต้องสร้างแฟ้มในห้อง /etc/cron.daily
- แฟ้มที่สร้างให้ใส่คำสั่งได้เลยเช่น /home/radius/runacct
- อย่าลืมกำหนด 755 ให้แฟ้มนั้นเช่น chmod 755 runradius
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
# minute (0-59),
# hour (0-23),
# day of the month (1-31),
# month of the year (1-12),
# day of the week (0-6 with 0=Sunday)
8.1.6 :: /etc/default/useradd
- ในบางเครื่องอาจกำหนดเป็นดังข้างล่างนี้จะสะดวก
- และสิทธิของห้องเป็น 700 จึงต้องใช้ script _crt กำหนดสิทธิ์เป็น 705
- อีกครั้งหนึ่ง จึงจะทำให้เปิดห้องผ่าน www ได้ปลอดภัย
# useradd defaults file
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
#SHELL=/bin/bash
SHELL=/rbin/menu
SKEL=/etc/skel
8.1.7 :: /etc/inittab
- ทำให้ Boot ไม่เข้า xwindows โดยแก้บรรทัดหนึ่ง
- ที่อยู่ในแฟ้ม inittab เท่านั้นเอง
# 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:5:initdefault:
id:3:initdefault:
8.2 แฟ้มต่าง ๆ ที่ควรรู้จัก
: แฟ้มต่าง ๆ ในระบบมีมากมาย ขอนำมา list ให้เฉพาะที่ทีมงานรู้จัก
ท่านสามารถเรียนรู้ได้มากกว่านี้อีกมาก .. ขอเอาใจช่วยครับ
Group 1: ควร config ได้
/etc/rc.d/rc.local
:: คล้าย autoexec.bat สำหรับผม จะเพิ่มคำสั่ง ifconfig เพิ่ม ip (9.10)
/etc/named.conf :: กำหนดเงื่อนไขเพิ่มเติมเรื่อง named
/etc/rndc.conf :: กำหนดเงื่อนไขเพิ่มเติมเรื่อง NS control utility
/etc/resolv.conf :: กำหนดว่า nameserver ตัวใดที่จะตีความ ip หรือ domain name ให้
/etc/httpd/conf/httpd.conf :: กำหนดค่าเกี่ยวกับการบริการ http เช่นกัน
/etc/sysconfig/network-scripts/ifcfg-eth0 :: กำหนดค่าประกอบ card LAN
/etc/security/limits.conf :: กำหนดข้อจำกัดให้กับผู้ใช้ ถ้าไม่แก้ ก็ไม่จำกัด
/etc/php.ini :: กำหนดเกี่ยวกับภาษา PHP เช่น เดิม post_max_size = 8M พอไหมครับ
/var/run/named :: ใน RH9 ผมต้องเปลี่ยนสิทธิ์ห้องนี้เป็น 777 จึงจะ start named สำเร็จ
/etc/procmailrc :: กำหนดเงื่อนไขการกรอง e-mail เป็นด่านแรก
Group 2 : ควรรู้จักไว้
/etc/crontab :: กำหนดโปรแกรมให้ประมวลผลตามช่วงเวลา แฟ้มนี้เก็บ config หลักของ crontab
/etc/inittab :: กำหนดการเริ่มต้น ที่จะเข้าสู่ text mode หรือ graphic mode เป็นต้น
/etc/rc.d/init.d :: ภายในห้องนี้เก็บ shell script ที่ใช้สั่ง ให้มีการทำงานเมื่อเปิดเครื่องไว้มาก
/etc/named.custom :: ระบุว่า directory ที่เก็บแฟ้มเกี่ยวกับ named เก็บไว้ที่ใด
/etc/login.defs :: กำหนดจำนวนเลข uid สูงสุด หรือค่าเริ่มต้นของผู้ใช้อีกหลายเรื่อง
/etc/default/useradd :: กำหนดค่าเกี่ยวกับสมาชิกใหม่เมื่อใช้คำสั่ง useradd
/etc/syslog.conf :: เก็บข้อกำหนดของบริการ syslog เพื่อใช้ตรวจร่องรอยของบริการต่าง ๆ แต่ใน ntsysv ต้องเปิดบริการ syslog ไว้
/etc/services :: แสดงเลข socket ทั้งหมดที่เปิดให้บริการ เลขใดมี # หมายถึงปิดบริการ
/etc/protocols :: แสดงเลข protocol ทั้งหมดที่เปิดให้บริการได้
/etc/login.defs :: กำหนดหมายเลขสูงสุด และต่ำสุด สำหรับการ assign acccount ใหม่ให้กับ user
/etc/skel/.bash_profile :: แฟ้มนี้ถูกคัดลอกไปให้ผู้ใช้ เพื่อเป็นค่าเริ่มต้นในการทำงาน
/etc/sysconfig/hwconf :: เก็บรายละเอียด และข้อกำหนดเกี่ยวกับ hardware มักถูก update โดย kudzu
/var/log :: เก็บ log ต่าง ๆ
Group 3 : ไม่พบในเครื่องที่ผมลง
/etc/inetd.conf :: ใช้กำหนดการเปิดปิดบริการเช่น finger หรือ telnet เป็นต้น
/etc/httpd/conf/srm.conf :: กำหนดค่าเกี่ยวกับการบริการ http เช่นกัน
/etc/httpd/conf/access.conf :: กำหนดค่าเกี่ยวกับการบริการ http เช่นกัน
/usr/X11R6/bin/startx :: สั่ง start x windows จาก text mode
8.98 การติดตั้ง Linux Redhat
: การติดตั้ง Linux Redhat 2 วิธี คือติดตั้งทั้ง Windows และ Linux
หรือติดตั้ง Linux อย่างเดียว เป็นกรณีศึกษาจาก Redhat Linux 7.1
เรียบเรียงโดย :: สุวิทย์ สมสุภาพรุ่งยศ(suwit@yonok.ac.th) ประเสริฐ
ประสารยา(prasert@cat.net.th) พงศ์สนิท เดชะบุญ(namagnitman@hotmail.com) สุพจน์
ทูลมาก(supot.toon@chaiyo.com)
การติดตั้ง Redhat Linux
สามารถติดตั้งได้ 2 กรณี
1. กรณีที่ต้องการติดตั้งทั้ง Windows และ Linux ในเครื่องเดียวกัน
2.
กรณีที่ต้องการติดตั้ง Linux อย่างเดียว
1. ข้อควรทราบก่อนการติดตั้ง
Redhat Linux ในกรณีที่ต้องการใช้ระบบปฏิบัติการ 2 ระบบในเครื่องเดียว
- ในตัวอย่างต่อไปนี้จะเป็น Harddisk ที่ค่าความจุ อยู่ที่ 40 GB ผมแบ่งเป็น
4 Partition สำหรับใช้ใน Windows จำนวน 2 Partition ( คือ C:,D:) กำหนด FAT 32
และสำหรับติดตั้ง Linux จำนวน 2 Partition (ตอนที่ยังไม่ติดตั้ง Linux
อาจจะมองเห็นเป็น Drive E:,F:)
- วิธีการแบ่ง Partition ผมใช้วิธี Fdisk จาก Dos (จะใช้วิธีการแบ่ง
Partition วิธีไหนก็ได้ตามสะดวก ชนิดของ Partition กำหนดให้เป็น FAT 32
ก่อนก็ได้ แล้วค่อยไปเปลี่ยนชนิดที่จะใช้สำหรับ Linux ในตอนที่เราติดตั้ง)
- หลังจากที่ทำการแบ่ง Partition ได้ตามความต้องการแล้วทำการ Format Drive
C:,D: ตามลำดับ ส่วน Drive E:,F: สำหรับติดตั้ง Linux ยังไม่ต้อง Format
เมื่อทำการ Format เสร็จแล้วก็ให้ทำการติดตั้ง Windows
ตามวิธีการติดตั้งจนแล้วเสร็จ
- กรณีที่ได้ทำการติดตั้ง Windows ไปแล้ว
ก่อนอื่นต้องทำการตรวจสอบว่าเมื่อทำการติดตั้ง Windows
ไปแล้วนั้นใช้งานได้ปกติดีไม่มีปัญหาในด้านต่างๆ เช่น การใช้งานในระบบเครือข่าย
ค่าสีต่างๆ ของจอภาพ หลังจากนั้นดูว่าใน Harddisk ได้ทำการแบ่ง Partition
เป็นกี่ Drive (กรณีที่ไม่ได้แบ่ง Partition ไว้รองรับการติดตั้ง Linux
"อาจจะใช้โปรแกรม PartitionMagic จัดการกับการแบ่ง Partition " !!! Windows
ต้องการแค่ Partition หรือที่เรียกว่า Drive เพียง Drive เดียว(คือ C: )
แต่ถ้าต้องการเป็น drive สำรองเราอาจแบ่งเพิ่มอีก 1 Partition (คือ D:) ส่วน"
Linux" ต้องการ 2 Partition คือ Drive ที่เป็น Linux native และ Linux swap)
อันนี้ขึ้นอยู่กับความต้องการของผู้ใช้เอง และความจุของ Harddisk
ว่ามีมากน้อยเพียงใด !!!ทางที่ดี ควรแบ่ง Partition ก่อนการติดตั้ง Windows
เพราะว่ามันง่ายกว่าการที่จะมาแบ่ง Partition หลังจากที่เราทำการติดตั้ง
Windows แล้ว
- หน่วยความจำ (RAM)ควรจะมีขนาด สูงกว่า 16 MB ขึ้นไป
2.
การสร้างแผ่น Boot สำหรับติดตั้ง Redhat Linux
- ใส่แผ่นซีดีรอมโปรแกรมติดตั้งในไดรฟ์ขณะใช้ระบบปฏิบัติการ DOS
แล้วเปลี่ยนไดรฟ์ไปยังไดรฟ์ซีดีรอม เช่น C:\> d:
- เรียกใช้โปรแกรม Rawrite สำหรับสร้างแผ่นติดตั้งใน Floppy disk พิมพ์ดังนี้
D:\>dosuntils\rawrite
- โปรแกรมจะให้ป้อนชื่อแฟ้มที่ต้องการเขียนลงแผ่น ให้ป้อนดังนี้
D:\Images\boot.img
- ใส่แผ่นฟลอบบี้ที่ฟอร์แมตแล้วใส่ในไดรฟ์ A: แล้วกด ENTER
- ถ้าเครื่องที่จะทำการติดตั้ง Redhat Linux
สามารถทำการบูตจากแผ่นซีดีรอมได้ยิ่งง่ายเลย เพราะปกติผม ติดตั้ง Redhat 7.3
หรือ Redhat 6.0 ก็ตาม
ผมจะใช้วิธีการบูตจากแผ่นซีดีรอมซึ่งสะดวกกว่าการบูตโดยการใช้แผ่นฟลอปบี้ดิสก์
(เรื่องการสั่งให้ BOOT จาก CD-ROM เป็น Option ของ CMOS )
3.
การติดตั้ง Redhat Linux (การติดตั้งแบบ None Graphic
สำหรับเครื่องที่มีความเร็วต่ำกว่า 400 MHz)
เมื่อทำการสร้างแผ่นบูตและทำการบูตแล้ว หรือจะให้บูตจากแผ่นซีดีรอม
จะเข้าสู่การกระบวนการติดตั้ง ให้ดำเนินต่อไปดังนี้
- เมื่อโปรแกรมติดตั้งทำงาน
จะแสดงหน้าจอให้เลือกภาษาที่จะใช้ในการติดตั้งให้เลือก English
- เลือกภาษาสำหรับคีย์บอร์ด ให้เลือก US
- กรอบแสดงการยินดีต้อนรับ ให้ยืนยันการติดตั้งเลือก OK
- เลือกชนิดของการติดตั้งให้เลือก Custom System
ซึ่งคุณสามารถกำหนดได้เองว่าจะมี Partitionใดบ้างรวมถึงการเลือกโปรแกรม
- ต่อไปเป็นขั้นตอนของการแบ่งPartition สำหรับเครื่องที่ได้ทำการแบ่ง
Partition มาดีแล้วแต่ยังไม่ได้กำหนดชนิดของ Partition ก็ให้เลือก fdisk
แล้วเลือก Edit เพื่อเข้าไปกำหนดชนิดของPartition
ถึงตรงนี้จะเป็นคำสั่งที่ใช้ในการทำงาน ดังตัวอย่าง
a :: ถ้าเราพิมพ์ m จะเป็น Menu ให้เราเลือกทำงาน
b :: ผมจะเลือก p
เพราะผมรู้ว่า p คือการแสดงรายละเอียดPartitionต่าง ๆที่มีอยู่ จะเห็นว่า
dev/hda1 คือ Partition ที่ 1 ที่เราแบ่งไว้สำหรับติดตั้ง Windows
ค่าของ System=FAT32
dev/hda2 คือ Partition ที่เป็น Extended
ภายในก็จะมี Partition Logic ดังนี้
dev/hda5 คือ Partition ที่ 2 ที่เราแบ่งไว้สำหรับติดตั้ง Windows
ค่าของ System=FAT32
dev/hda6 คือ Partition ที่ 3
ที่เราแบ่งไว้สำหรับติดตั้ง Linux ค่าของ System=FAT32
dev/hda7 คือ
Partition ที่ 4 ที่เราแบ่งไว้สำหรับติดตั้ง Linux ค่าของ System=FAT32
ส่วนที่เราต้องเข้าไปแก้ไขก็คือ hda6,hda7 จะเป็นการเปลี่ยนชนิดของ
system ให้เป็น linux system
c ::
ถ้าไม่รู้ว่าคำสั่งที่ใช้ในการทำงานให้ กด m เพื่อดูรายละเอียด
d ::
ผมจะเลือก t เพื่อเปลี่ยนชนิดของ System จากนั้นเป็นการเลือก Partition
number เราจะเปลี่ยน hda6 จาก FAT32 ให้เป็น Linux native ผมเลือก 6 แล้วกด
Enter
e :: เลือก Hex code ถ้าไม่รู้ให้กด l เพื่อดูรายละเอียด ผมกด 83
เพื่อทำการเปลี่ยน System
f :: ลองกด p เพื่อดูรายละเอียดของ System
เปลี่ยนหรือยัง จะเห็นว่า System เปลี่ยนจาก FAT 32 เป็น Linux
g ::
ทำการเปลี่ยน System ของ hda7 ให้เป็น linux swap โดยกด t เลือก Hex code
เป็น 82
h :: ทำการ Save โดยการ กด W
- หน้าจอขึ้น Disk setup จะมี Menu ให้เลือก Done
- เลือก Mount Point เพื่อกำหนด Root directory สำหรับการติดตั้ง ให้เลือก
hda 6 แล้วกด Enter ในช่องหลัง Mount Point ให้พิมพ์ " / " แล้วเลือก ok
- เมื่อทำการเลือกแล้วจะกลับมาที่หน้า Current Disk Partition อีกรอบหนึ่ง
เพื่อให้เรายืนยันการกำหนด Mount point อีกครั้งหนึ่ง เลือก Ok
- ขั้นตอนต่อไปเป็นการ Format partition ที่กำหนดให้ Mount เป็น Root
partition หรือ Root filesystem จะมี Option หนึ่งที่น่าสนใจคือ Check for bad
blocks during format นั่นคือการตรวจหา Bad Block ด้วย โดยการ Tab มาที่หน้า
Option และกด Space bar แล้วเลือก Ok เพื่อดำเนินการต่อไป
- เลือก LILO Configuration ที่ hda1 แล้ว OK ยืนยันอีกรอบหนึ่ง
- กำหนดชื่อ HostName เช่น suwit.yonok.ac.th หรือ thaiall.yonok.ac.th
เป็นต้น
- กำหนด Firewall configuration ใน Security level เป็น Medium
ต่อไปสามารถกำหนดใหม่ได้
- ใน Option customize เป็นการเลือกใช้ Firewall กับตัวให้บริการ
- เลือกชนิดของ Mouse
- เลือกภาษาในการ Install
- เลือก Time Zone ที่ Asia/Bangkok
- กำหนด Root password (อย่างน้อย 6 ตัวอักษร)
- Add User สำหรับผู้ใช้บริการ
- หน้า Authentication Configuration ให้เลื่อน Tab ไปที่ OK เลยแล้วกด Enter
- เลือก Packet ตามต้องการ (ถ้ามีเนื้อที่ Harddisk มากพอให้เลือกหมดเลย)
- เลือก Video Card
- เข้าสู่กระบวนการเริ่ม Install โดยการ Format
- การตั้งค่า Configuration ต่างดูในรายละเอียดต่อไป ใน
http://www.isinthai.com
4. การติดตั้ง Redhat Linux (การติดตั้งแบบ
Graphic เหมาะกับเครื่องที่มีความเร็วสูงกว่า 400 MHz ขึ้นไป)
เมื่อทำการสร้างแผ่นบูตและทำการบูตแล้ว หรือจะให้บูตจากแผ่นซีดีรอม
จะเข้าสู่การกระบวนการติดตั้ง ให้ดำเนินการดังนี้
- เมื่อโปรแกรมติดตั้งทำงานจะแสดงหน้าจอให้เลือกภาษาที่จะใช้ในการติดตั้งให้เลือก
English
- เลือกภาษา Mouse และเลือกภาษาสำหรับคีย์บอร์ด ให้เลือก US
- กรอบแสดงการยินดีต้อนรับ ให้ยืนยันการติดตั้งเลือก Next
- เลือกชนิดของการติดตั้งให้เลือก Custom System
ซึ่งคุณสามารถกำหนดได้เองว่าจะมี Partitionใดบ้างรวมถึงการเลือกโปรแกรม
- ต่อไปเป็นขั้นตอนของการแบ่ง Partition สำหรับเครื่องที่ได้ทำการแบ่ง
Partition มาดีแล้วแต่ยังไม่ได้กำหนดชนิดของ Partition ก็ให้เลือก Manually
partition with fdisk (export only) แล้วเลือก hda เพื่อเข้าไปกำหนดชนิดของ
Partition จะเป็นคำสั่งที่ใช้ในการทำงานดังตัวอย่าง
a :: ถ้าเราพิมพ์ m จะเป็น Menu ให้เราเลือกทำงาน
b :: ผมจะเลือก
p เพราะผมรู้ว่า p คือการแสดงรายละเอียดPartitionต่าง ๆที่มีอยู่ จะเห็นว่า
dev/hda1 คือ Partition ที่ 1 ที่เราแบ่งไว้สำหรับติดตั้ง Windows
ค่าของ System=FAT32
dev/hda2 คือ Partition ที่เป็น Extended
ภายในก็จะมี Partition Logic ดังนี้
dev/hda5 คือ Partition ที่ 2 ที่เราแบ่งไว้สำหรับติดตั้ง Windows
ค่าของ System=FAT32
dev/hda6 คือ Partition ที่ 3
ที่เราแบ่งไว้สำหรับติดตั้ง Linux ค่าของ System=FAT32
dev/hda7 คือ
Partition ที่ 4 ที่เราแบ่งไว้สำหรับติดตั้ง Linux ค่าของ System=FAT32
ส่วนที่เราต้องเข้าไปแก้ไขก็คือ hda6,hda7 จะเป็นการเปลี่ยนชนิดของ
system ให้เป็น linux system มีวิธีการดังนี้คือ
c ::
ถ้าไม่รู้ว่าคำสั่งที่ใช้ในการทำงานให้ กด m เพื่อดูรายละเอียด
d ::
ผมจะเลือก t เพื่อเปลี่ยนชนิดของ System จากนั้นเป็นการเลือก Partition
number เราจะเปลี่ยน hda6 จาก FAT32 ให้เป็น Linux native ผมเลือก 6 แล้วกด
Enter
e :: เลือก Hex code ถ้าไม่รู้ให้กด l เพื่อดูรายละเอียด ผมกด 83
เพื่อทำการเปลี่ยน System
f :: ลองกด p เพื่อดูรายละเอียดของ System
เปลี่ยนหรือยัง จะเห็นว่า System เปลี่ยนจาก FAT 32 เป็น Linux
g ::
ทำการเปลี่ยน System ของ hda7 ให้เป็น linux Swap โดยการ t เลือก Hex code
เป็น 82
h :: ทำการ Save โดยการ กด W
- หน้าจอขึ้น Using fdisk อีกรอบ ให้เลือก Next
- เลือก Mount point เพื่อกำหนด Root directory สำหรับการติดตั้ง
ให้ดับเบิ๊ลคลิกเลือก hda 6 แล้วในช่องหลัง Mount point ให้เลือก " / "
แล้วเลือก OK
- เมื่อทำการเลือกแล้วจะกลับมาที่หน้า Partition อีกรอบหนึ่ง
เพื่อให้เรายืนยันการกำหนด Mount point อีกครั้งหนึ่ง เลือก Next
- ขั้นตอนต่อไปเป็นการ Format partition ที่กำหนดให้ Mount เป็น Root
partition หรือ Root filesystem ตรงนี้จะมี Option หนึ่งที่น่าสนใจคือ Check
for bad blocks during format นั่นคือการตรวจหา Bad Block ด้วย
โดยการคลิกที่หน้า Option แล้วเลือก Next เพื่อดำเนินการต่อไป
- เลือก LILO Configuration ให้เลือก Install LILO boot record on dev/had
Master Boot record เลือก Default Boot Image ไปที่ Dos
- กำหนด IP Address ตั้งชื่อ HostName เช่น suwit.yonok.ac.th หรือ
mis.yonok.ac.th
- กำหนด Firewall Configuration ใน Security Level เป็น Medium ใน Option
Customize เป็นการเลือกใช้ Firewall กับตัวให้บริการ
- เลือกภาษาในการ Install
- เลือก Time Zone ที่ Asia/Bangkok
- กำหนด Root Password (อย่างน้อย 6 ตัวอักษร)
- Add User สำหรับผู้ใช้บริการ
- หน้า Authentication Configuration ให้ Next
- เลือก Packet ตามต้องการ (ถ้ามีเนื้อที่ Harddisk มากพอให้เลือกหมดเลย)
- เลือก Video Card /Monitor/color pepht/Screen Resolution/Default
Desktop/Login Type
- เข้าสู่กระบวนการเริ่ม Install โดยการ Format
- การตั้งค่า Configuration ต่าง ๆ ดูรายละเอียดต่อไปใน
http://www.isinthai.com
8.99 การติดตั้ง Linux Redhat
เมื่อแผ่น 2 ใช้ไม่ได้
: นี่คือวิธีหนีปัญหา เพราะจะแก้ปัญหาก็คือหาแผ่น CD ที่ใช้ได้มาให้ได้
วันหนึ่ง ผมตั้งใจลง Redhat 8.0 ทับไปใน 7.2 โดยไม่สนใจข้อมูลในส่วน Redhat
เดิม ส่วนข้อมูล Windows ทั้งหมดต้องการใช้งานอยู่ ก็ลงไปตามปกติ เลือก Package
ต่าง ๆ แบบสมบูรณ์ใช้เนื้อที่ประมาณ 1500 Mb เริ่มติดตั้งจากการ boot Redhat 8.0
เมื่อติดตั้งจนจบแผ่นที่ 1 เสร็จ ก็ถามหาแผ่นที่ 2
ปรากฏว่าเครื่องไม่รับแผ่นที่ 2
วิธีแก้ตอนนั้นมีทางเดียวคือปิดเครื่องด้วยการกดปุ่ม power ...
หลังจากเปิดใหม่พบว่าเครื่องบูตไม่ได้ตามปกติ แล้วเครื่องผมก็ไม่มีช่องใส่ Drive
A ด้วย ขณะนั้นก็ไม่มี CD Windows ที่เป็น Bootable ด้วย ..
เสร็จล่ะสิงานนี้
ถ้าท่านพบเหตุการแบบผม ก็แก้ไขด้วยการ ลง Redhat 8.0 เข้าไปใหม่
แต่ลงแบบไม่ต้องเลือก Package อะไรเข้าไปเลย ระบบจะติดตั้งได้ตามปกติ
โดยใช้เนื้อที่ใน Harddisk ประมาณไม่ถึง 500 Mb เพียงเท่านี้ก็เข้าสู่ Text mode
ของ linux ได้ตามปกติ
คำสั่งที่ท่านอาจต้องการทราบเมื่อต้องทำงานใน Text mode กับ CDROM
mount /dev/cdrom (ใช้หลังจากใส่แผ่น CD เข้าไปในเครื่องแล้ว)
cd /mnt/cdrom (ใช้เข้าไปใน CD และใช้คำสั่งอื่น ๆ ได้ เช่น ls
เป็นต้น)
cd /mnt/cdrom/RedHat/RPMS (เป็นห้องที่เก็บโปรแกรมต่าง ๆ
ใน CD-ROM)
rpm -i xxx.2.2.1.rpm (ใช้สำหรับติดตั้ง package หรือ
โปรแกรมที่ต้องการ)
ปกติท่านจะดึง CD ออกจากเครื่องไม่ได้ถ้าไม่ใช้คำสั่ง
umount
cd / (เพื่อย้ายตัวเองออกจาก cd จึงจะใช้คำสั่ง umount ได้
มิเช่นนั้นจะบอกว่า busy อยู่)
umount /dev/cdrom
(ใช้เมื่อต้องการดึงแผ่น CD ออก แต่ท่านต้องใช้คำสั่ง)
ข้อควรทราบเพิ่มเติม (/mnt/cdrom/RedHat/RPMS)
ติดตั้ง httpd
ก่อนจึงจะติดตั้ง php ได้
ติดตั้ง pine จะทำให้ใช้คำสั่ง pico ได้ (CD#3)
ติดตั้ง lynx(CD#3) ต้องติดตั้ง indexhtml และ perl-cgi(CD#2)
9.1 กำหนด IP address และ host
name
: เพื่อกำหนด ip ให้กับ eth0 (Ethernet card เบอร์แรกคือเบอร์ 0)
ขั้นตอนการแก้ไข IP และ Host name
/etc/hosts
127.0.0.1 localhost.localdomain localhost
202.29.78.1 www.isinthai.com isinthai.com www
/etc/sysconfig/network
NETWORKING = yes
HOSTNAME = yn1
GATEWAY = 202.29.78.254
/etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
BOOTPROTO=static
BROADCAST=202.29.78.255
IPADDR=202.29.78.12
NETMASK=255.255.255.0
NETWORK=202.29.78.0
ONBOOT=yes
/etc/resolv.conf
สามารถใช้คำสั่ง setup แล้วเลือก Network Configuration
เป็นอีกวิธีหนึ่ง เพื่อเข้าแก้ IP Address ซึ่งจะแก้ไขแฟ้มต่าง ๆ ให้อัตโนมัติ
จากนั้นก็สั่ง #/etc/init.d/network restart
9.5 โปรแกรมเพิ่มผู้ใช้
/usr/bin/_crt
: โปรแกรมนี้เป็น shell script สำหรับเพิ่มผู้ใช้อย่างง่าย สร้างด้วย pico
และกำหนดให้ประมวลผลด้วย chmod
โปรแกรมนี้ชื่อ _crt ถูกเก็บไว้ในห้อง /usr/bin โดยกำหนดให้ chmod 700
เพื่อให้สั่งประมวลผล shell script ตัวนี้ได้ และการจะใช้โปรแกรมนี้ได้จะต้องกำหนด
PATH ไว้ที่ห้อง /usr/bin และ /usr/sbin จึงต้องกำหนด PATH เพิ่มเติม
จากเดิม PATH=$PATH:$HOME/bin
(ถ้า admin ไม่แก้ไขให้ก่อนนะครับ)
เป็นใหม่ PATH=$PATH:$HOME/bin:/sbin:/usr/bin:/usr/sbin
ตรวจสอบตัวแปร PATH ด้วยคำสั่ง echo $PATH
ปัญหานี้จะไม่เกิดขึ้น ถ้ากำหนดไว้ในแฟ้ม .bash_profile ในห้อง
/etc/skel เพราะเป็นห้องที่เก็บค่าเริ่มต้น
Version 1: ตัวอย่างโปรแกรมที่ใช้งานอยู่
#!/bin/bash
echo Username
read un
echo Realname
read cm
finger $un
echo ===============================
read sure
RESULT="Error - Try other username again .. "
EXIST=0
id $un >/dev/null 2>/dev/null && EXIST=1
if [ $EXIST = 0 ]; then
useradd -g users -d /home/httpd/cgi-bin/$un -c "$cm" $un
chown $un:users /home/httpd/cgi-bin/$un
chmod 705 /home/httpd/cgi-bin/$un
usermod -d /home/httpd/cgi-bin/$un $un
ln -s /home/httpd/cgi-bin/$un /home/httpd/html/$un
passwd $un
RESULT="Complete"
fi
echo "Add new user : $RESULT"
Version 2: โปรแกรมข้างล่างนี้ใช้กับเครื่องที่ใช้งาน ssi ได้
#!/bin/bash
clear
echo _CRT version 2.June42001
echo User name
read un
echo Real Name
read cm
finger $un
echo ===============================
echo Are you ok?
RESULT="Error - Try other username again .. "
EXIST=0
id $un >/dev/null 2>/dev/null && EXIST=1
if [ $EXIST = 0 ]; then
read sure
useradd -g users -d /home/httpd/html/$un -c "$cm" $un
chmod 705 /home/httpd/html/$un
passwd $un
RESULT="Complete"
fi
echo "Add new user : $RESULT"
Version 3: โปรแกรมข้างล่างนี้ใช้กับ isinthai.com ในช่วงปิด telnet เพื่อให้ upload ผ่านเว็บ
เหตุที่ใช้แฟ้มชื่อ password.pl เพราะป้องกันการแอบเปิดดูรหัสผ่าน แล้วแฟ้มนี้ใช้สำหรับบริการ upload (ซึ่งไม่ได้เข้ารหัสไว้)
#!/bin/bash
echo Username
read un
echo Real name
read cm
echo Password
read password
finger $un
echo ===============================
echo Are you ok?
RESULT="Error - Try other username again .. "
EXIST=0
id $un >/dev/null 2>/dev/null && EXIST=1
if [ $EXIST = 0 ]; then
read sure
useradd -g users -d /home/httpd/html/$un -c "$cm" $un
chmod 777 /home/httpd/html/$un
echo $password>/home/httpd/html/$un/password.pl
chown nobody:nobody /home/httpd/html/$un/password.pl
chmod 700 /home/httpd/html/$un/password.pl
passwd $un
RESULT="Complete"
fi
echo "Add new user : $RESULT"
เจอปัญหาใช้ useradd ไม่ได้เพราะ lock
มีเรื่องแปลกเกิดขึ้นครับ
ทำให้ไม่สามารถเพิ่ม user ได้
useradd: error locking shadow group file
หรืออะไรทำนองนี้
ไม่แน่ใจว่าเกิดขึ้นเพราะเหตุใด แต่แก้ไขด้วยการลบแฟ้มที่ ls
-al *.lock
หรือที่มีนามสกุลเป็น .lock ในห้อง /etc เช่น passwd.lock
group.lock เป็นต้น
และทุกแฟ้มก็มีค่าเป็น 741 เหมือนกันหมด
สันนิฐฐานว่าเป็นเลข ps ที่ทำการ lock ไว้
9.6 โปรแกรมลบผู้ใช้
/usr/bin/_del
: โปรแกรมนี้เป็น shell script สำหรับลบผู้ใช้อย่างง่าย สร้างด้วย pico
และกำหนดให้ประมวลผลด้วย chmod
รายละเอียดอ้างอิงจากการเพิ่มผู้ใช้ได้เลย
โปรแกรมนี้ชื่อ _del ถูกเก็บไว้ในห้อง /usr/bin โดยกำหนดให้ chmod 700
เพื่อให้สั่งประมวลผล shell script ตัวนี้ได้
ตัวอย่างโปรแกรมที่ใช้งานอยู่
echo Username
read un
finger $un
echo =============================================
echo If already exist, you can delete this account.
echo If you are not sure, Please Ctrl-C
read sure
echo Ask you again and last time? Ctrl-C if you are not sure.
read sure
userdel -r $un
rm -r /home/httpd/html/$un
echo complete
9.9 แก้ไข aliases ของ user
account
: ช่วยกระจาย e-mail ของผู้ใช้ 1 คนไปหลายคน เช่น มีคนส่ง mail ถึง webmaster
จะกระจายไปให้สมาชิกได้หลาย ๆ คน
สร้าง account ชื่อ webmaster แล้วแก้ไข /etc/aliases ด้วย pico
สำหรับส่ง mail forward ไปยังบุคคลที่เป็น webmaste