Long LiveThe King
ข้าพเจ้าไม่ได้มีพรสวรรค์พิเศษอะไร ข้าพเจ้าเพียงแต่มีความกระหายใคร่รู้อยู่เสมอ ทุ่มเทให้กับสิ่งที่อยากรู้ พากเพียรอย่างทรหด และสำรวจวิจารณ์ความรู้ของตัวเองเป็นประจำ ปัจจัยเหล่านี้คือที่มาของแนวคิดต่างๆ ของข้าพเจ้า .... อัลเบิร์ต ไอน์สไตน์

วันพฤหัสบดีที่ 28 พฤศจิกายน พ.ศ. 2556

วิธีการค้นหา File จากคำบางคำ Ubuntu

เริ่ม
ผมต้องการค้นหาคำว่า blogger ใน /var/www

คำสั่ง

grep -R blogger /var/www



Read More

การสร้าง self-signed certificate บน Ubuntu server




เว็ปไซต์ยุคใหม่จึงหันมาใช้โปรโตคอล HTTPS ซึ่งเป็นโปรโตคอลที่ปรับปรุงขึ้นโดยรองรับการเข้ารหัส ทำให้มีความเชื่อมั่นสูงในการรับส่งข้อมูลระหว่าง บราวเซอร์ของผู้ใช้ และเซอร์เวอร์ ผ่านตัวกลางที่เราไม่ทราบว่าจะมีผู้ใดอาจดักจับข้อมูลของเราหรือไม่ เว็ปเซอร์เวอร์ปัจจุบันได้รองรับการทำงานในโปรโตคอลนี้อยู่แล้ว และการใช้งานก็เพียงแต่เซ็ตเพียงเล็กน้อยเท่านั้น มีประเด็นสำคัญอันหนึ่งก็คือ certificate ที่เราจะใช้ในการรับรองความถูกต้องที่มาของเว็ปไซต์ และใช้ในกระบวนการเข้ารหัสนั้น

   โดยปกติแล้วจะมีบริษัทที่รับดูแลในเรื่องนี้อยู่ และเราสามารถใช้บริการจากบริษัทเหล่านี้ได้ ซึ่งก็จะต้องเสียค่าบริการตามสมควร

   ในทางปฏิบัติ เราสามารถสร้าง certificate นี้ขึ้นมาเอง โดยเมื่อบราวเซอร์เข้าเรียกใช้เว็ปของเราในโปรโตคอล HTTPS ในครั้งแรก จะมีการเตือนให้ผู้ใช้ทราบว่า cerfiticate นี้มิได้รับรองโดยบริษัทที่ดูแลเรื่องนี้โดยตรง ดังนั้นผู้ใช้ต้องทำการติดตั้ง certificate นี้ด้วยตนเอง หรือเราอาจจะบอกข้อมูลเบื้องต้นที่มีอยู่ใน certificate นั้นให้ผู้ใช้ตรวจสอบเองได้ก่อนทำการติดตั้ง และเมื่อผู้ใช้ติดตั้ง certificate ลงไปแล้ว ก็จะสามารถใช้งานเว็ปไซต์เดิมในภายหลังได้โดยไม่มีการร้องเตือนเรื่อง certificate อีก

เริ่มสร้าง certificate
ก่อนอื่น เราจะทำการสร้าง certificate สำหรับเว็ปเซอร์เวอร์ คอมพิวเตอร์ที่เราจะใช้สร้าง certificate จะต้องมี OpenSSL ติดตั้งอยู่ก่อนแล้ว ในกรณีที่ ใช้บนลินุกซ์ ดิสตริบิวชันปัจจุบันมักจะติดตั้งมาให้แล้ว และเราสามารถใช้ได้ทันที โดยขั้นตอนการใช้งาน openssl เพื่อสร้าง self-signed certificate มีดังนี้

openssl genrsa -des3 -out ชื่อเซอร์เวอร์.key 1024

ในที่นี้เรากำหนดการเข้ารหัสแบบ Triple-DES  และคีย์มีขนาด 1024 บิต ใน PEM format  เราจะต้องกำหนดชื่อเซอร์เวอร์ เป็นชื่อเซอร์เวอร์ของเว็ปไซต์ของเรา ตัวอย่าง

openssl genrsa -des3 -out nikhorn.blogger.com.key 1024

ถ้ามี server หลายตัวโดเมนเดียวกันก็ใส่ * ไว้หลัง -out ตัวอย่าง

openssl genrsa -des3 -out* nikhorn.blogger.com.key 1024



  โปรแกรม openssl จะแสดงข้อความมาในลักษณะดังนี้

Generating RSA private key, 1024 bit long modulus
............++++++
......................................++++++
e is 65537 (0x10001)
Enter pass phrase for ชื่อเซอร์เวอร์.key : ตรงนี้เราใส่รหัสผ่านลงไปอะไรก็ได้ครับ
Verifying Enter pass phrase for ชื่อเซอร์เวอร์.key : ใส่ยืนยันอีกครั้งหนึ่ง

จากนั้นก็ปลดพาสเวิร์ดออกจาก key ของเราเอง เนื่องจากในที่นี้ เราเป็นคนที่สร้างคีย์เอง เราก็ถือโอกาสปลดพาสเวิร์ดออกเสียเลย

openssl rsa -in ชื่อเซอร์เวอร์.key -out ชื่อเซอร์เวอร์.key

โปรแกรมจะทำการแสดงข้อความเพื่อให้เรายืนยันรหัสดังนี้

Enter pass phrase for ชื่อเซอร์เวอร์.key: ใส่รหัสผ่านลงไปครับ
writing RSA key

 


จากนั้นเราจึงสร้างไฟล์ CSR (Certificate Signing Request) ที่เราจะแทรกรายละเอียดต่างๆ เกี่ยวกับเว็ปไซต์ของเราลงไป เพื่อในเวลาที่ผู้ใช้เปิดเว็ปของเรา จะสามารถตรวจสอบรายละเอียดเบื้องต้นเกี่ยวกับเว็ปไซต์ของเราได้

openssl req -new -key ชื่อเซอร์เวอร์.key -out ชื่อเซอร์เวอร์.csr

โปรแกรมจะทำการสร้าง CSR ไฟล์ให้โดยมีการแสดงข้อความและถามข้อมูลเพิ่มเติม เราก็พิมพ์ข้อมูลต่อท้ายเครื่องหมาย : แล้วกด Enter ดังต่อไปนี้ครับ

You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [GB]:ใส่รหัสประเทศลงไป ประเทศไทยคือ TH (ใส่ตัวอักษรใหญ่ครับ)
State or Province Name (full name) [Berkshire]:ใส่จังหวัด
Locality Name (eg, city) [Newbury]:ใส่ชื่อเมืองหรืออำเภอ
Organization Name (eg, company) [My Company Ltd]:ใส่ชื่อองค์กรของเว็ปไซต์ 
Organizational Unit Name (eg, section) []:ใส่ชื่อหน่วยงาน
Common Name (eg, your name or your server's hostname) []:ใส่ชื่อเซอร์เวอร์เลยครับ อย่างเช่น nikhorn.blogspot.com
Email Address []:ใส่อีเมลแอดเดรสสำหรับให้ติดต่อสอบถาม

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: ในกรณีที่เราต้องการให้ผู้ใช้กรอกพาสเวิร์ด เราจะต้องใส่ที่นี่่ด้วยครับ  ปกติเราจะปล่อยว่างไว้ (กด ENTER ต่อไปเลยครับ)
An optional company name []: หากต้องการใส่รายละเอียดเพิ่มเติมเกี่ยวกับบริษัทอีกเล็กน้อย ก็ใส่ได้ ปกติผมจะปล่อยว่างไว้



สร้าง Self-signed certificate เพื่อไว้ให้บราวเซอร์มาอ่านไป เราใช้คำสั่งดังนี้

openssl x509 -req -days จำนวนวันก่อนหมดอายุนับจากวันที่สร้าง -in ชื่อเซอร์เวอร์.csr -signkey ชื่อเซอร์เวอร์.key -out ชื่อเซอร์เวอร์.crt

ตัวอย่าง

openssl x509 -req -days 365 -in nikhorn.blogspot.com.csr -signkey nikhorn.blogspot.com.key -out nikhorn.blogspot.com.crt

โปรแกรมจะทำการสร้างไฟล์ CRT ให้เรา เป็นอันเรียบร้อย
จากนั้นให้ทำการ coppy ไฟล์ทั้งสองไปเก็บไว้ในแฟ้ม ssl ด้วยคำสั่ง

cp nikhorn.blogspot.com.key /etc/apache2/ssl  
cp nikhorn.blogspot.com.crt /etc/apache2/ssl

จากนั้น เราจะทำการเซ็ตเว็ปเซอร์เวอร์ให้ทำการอ่าน certificate ที่เราสร้างขึ้นนี้ สำหรับเว็ปเซอร์เวอร์ Apache บนลินุกซ์นั้น ไฟล์ที่เราต้องแก้ไขคือ default-ssl พิมพ์คำสั่ง

 nano /etc/apache2/sites-available/default

ให้มองหาพารามิเตอร์สองตัวต่อไปนี้คือ SSLCertificateFile และ SSLCertificateKeyFile และแก้เป็นดังนี้

SSLCertificateFile ไดเรกตอรีและชื่อไฟล์.crt
SSLCertificateKeyFile ไดเรกตอรีและชื่อไฟล์.key 

ตัวอย่าง

SSLEngine On 
SSLCertificateFile /etc/apache2/ssl/nikhorn.blogspot.com.crt
SSLCertificateKeyFile /etc/apache2/ssl/nikhorn.blogspot.com.key

 จากนั้นลองรีสตาร์ด Apache ใหม่เสียเลยนะครับ ถ้า Apache สามารถเริ่มทำงานได้โดยไม่ร้องไม่บ่น แสดงว่า ใช้ได้แล้วครับ

บทความนี้ได้ทำการแก้ไขดัดแปลงข้อมูลบางส่วนจาก  http://thanwa.cpe.mut.ac.th/howto/certificate/

ข้อมูลอ้างอิง
http://thanwa.cpe.mut.ac.th/howto/certificate/
http://www.fourleaftechnology.com/index.php/HowTo/how-to-generate-a-self-signed-ssl-certificate-in-ubuntu.html
Read More

วันพุธที่ 27 พฤศจิกายน พ.ศ. 2556

การ ตั้งเวลา reboot ด้วย crontab บน CentOS + Ubuntu

รูปแบบสั้นๆสำหรับ Centos

วิธีที่ 1 วิธีที่ 2
nano /etc/crontab
crontab -e

พิมพ์ 0 3 * * * /sbin/reboot

/etc/rc.d/init.d/crond restart
/sbin/chkconfig crond on
nano /etc/crontab
crontab -e
พิมพ์ 0 3 * * * /sbin/shutdown -r now

/etc/rc.d/init.d/crond restart
/sbin/chkconfig crond on


รูปแบบสั้นๆสำหรับ Ubuntu

วิธีที่ 1 วิธีที่ 2
crontab -e
กด เลือก 2 ถ้าใช้ nano
พิมพ์ 0 3 * * * /sbin/reboot.sh
crontab -e
กด เลือก 2 ถ้าใช้ nano
พิมพ์ 0 3 * * * /sbin/reboot


หมายเหตุ :  0 3 * * * /sbin/reboot  (เราจะให้ Server Reboot ทุกวันตอนตี 3)

ที่มา http://bunyiam.com/?name=knowledge&file=readknowledge&id=2526


รายละเอียดเพื่อทำความเข้าใจ

คำสั่ง crontab เป็นคำสั่งในการทำ schedule ในการสั่งโปรแกรม หรือ script ต่างๆ ทำงานตามเวลาที่กำหนด บนระบบ UNIX/LINUX

ซึ่งอำนวยความสะดวกได้มากเลยที่เดียว งานบางอย่างที่จำเป็นต้องทำซ้ำๆในเวลาเดียวกัน ไม่ว่าจะทุกวัน ทุกสัปดาห์ หรือ ทุกเดือน
การใช้งาน crontab
------------------------
คำสั่งและ option ของ crontab มีดังนี้
Code:
crontab filename การนำเอาคำสั่ง crontab เข้ามาจาก ไฟล์อื่น
crontab -e แก้ไข crontab ปัจจุบัน
crontab -l ดูคำสั่ง crontab ทั้งหมดที่มีอยู่
crontab -r ลบคำสั่ง crontab ที่มีทั้งหมด
crontab -u user เป็นคำสั่งของผู้ดูแลระบบเท่านั้น(administrators) เพื่อใช้ดู แก้ไข ลบ crontab ของ user แต่ล่ะคน
เมื่อเรียกคำสั่งตามข้างบนแล้ว crontab จะเข้าสู่ระบบการ กำหนด หรือ แก้ไข ซึ่งการ กำหนด หรือแก้ไขนี้ จะเหมือนกับการใช้งาน vi ครับ
การกำหนดให้ crontab ทำงาน
-------------------------------------
format ของคำสั่ง crontab มีทั้งหมด 6 fields เป็นดังบรรทัดข้างล่าง
Code:
minute(s) hour(s) day(s) month(s) weekday(s) command(s)
fields 1-5 เป็นการกำหนดเวลา และ field ที่ 6 เป็นการกำหนดคำสั่ง ดังความหมายของแต่ละ fields ดังต่อไปนี้
Code:
........................................................................................................................................
Field มีค่า รายละเอียด
........................................................................................................................................
minute 0-59 เวลาเป็นนาที จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
hour 0-23 เวลาเป็นชั่วโมง จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
day 1-31 เวลาเป็นวัน จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
month 1-12 เวลาเป็นเดือน จะสั่งให้คำสั่งที่กำหนดทำงานทันทีเมื่อถึง
weekday 0-6 วันของแต่ละสัปดาห์ มีค่าดังนี้ (อาทิตย์ = 0, จันทร์ = 1, อังคาร = 2, พุธ = 3, พฤหัส = 4, ศุกร์ = 5 และ เสาร์ = 6)
command คำสั่ง เราสามารถกำหนดคำสั่งได้มากมาย รวมทั้ง script ต่างๆ ตามที่เราต้องการ
........................................................................................................................................
ตัวอย่างการกำหนด crontab
---------------------------------
การ เพิ่ม crontab โดยเรียกใช้คำสั่ง crontab -e เมื่อเข้าสู่โปรแกรมแล้ว กด i เพื่อเพิ่ม คำสั่งดังตัวอย่างด้านล่างนี้เข้าไป แล้วทำการบันทึกแล้วออกมาโดยกด Esc แล้วกด :wq!
Code:
0 12 * * * /etc/python.py
จากคำสั่งด้านบนจะเป็นการสั่งให้รัน script python.py ตอน 12:00 น. ของทุกๆวัน
Code:
0 12 * * 1 /root/wifilogs.py
จากคำสั่งด้านบน จะทำการ Run script getlogs.pl ที่ path /home/tuxzilla ทุกวันจันทร์ ทุกๆเดือน ตอนเที่ยง
Code:
0 0 * * 1,2 / root/wifilogs.py
คำ สั่งนี้เหมือนคำสั่งด้านบนครับ แต่จะเพิ่มการทำงานในวันอังคารด้วย ซึ่งเราสามารถใช้ "," คั่นไปเรื่อยๆได้ เพื่อที่จะกำหนดเพิ่มให้แต่ล่ะ fields หรือใช้ "*"
เพื่อการกำหนดเป็นทั้งหมด(หมายความว่า หากที่ field ชั่วโมง เป็น * ก็หมายความว่าต้องทำงานทุกชั่วโมง)
ถึง จะมีหลาย user ในเครื่องเดียวกันแต่ยังไง crontab ก้ยังเป็นของใครของมันไม่กวนกันครับ และไม่สามารถดูของกันและกันได้ นอกจากเป็น ผู้ดูแลระบบครับ ถึงตรงนี้แล้วก็คงไม่มีอะไรยากเกินกว่าแล้ว หากแต่ความสะดวกเท่านั้นที่จะมาแทนที หรือใครจะเอามาเป็นนาฬิกา อย่างผมก็ไม่ว่าครับ

ที่มา http://sabaylinux.blogspot.com/2009/07/crontab.html

Read More

© Ubuntu, AllRightsReserved.

ขับเคลื่อนโดย Blogger Designed by Nikhorn Thongchuay