<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SpaLinux.com - สปาลีนุกซ์ &#187; Linux Shell</title>
	<atom:link href="http://spalinux.com/category/linux-shell/feed" rel="self" type="application/rss+xml" />
	<link>http://spalinux.com</link>
	<description>เพื่อชีวิตที่ผ่อนคลายของคนใช้ลีนุกซ์</description>
	<lastBuildDate>Sat, 12 May 2012 10:38:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>ถ่ายโอนไฟล์ระหว่าง Windows กับลีนุกซ์ ด้วย pscp</title>
		<link>http://spalinux.com/2012/04/transfer-file-between-windows-and-linux-by-pscp</link>
		<comments>http://spalinux.com/2012/04/transfer-file-between-windows-and-linux-by-pscp#comments</comments>
		<pubDate>Sat, 21 Apr 2012 18:53:23 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Authentication]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[copy]]></category>
		<category><![CDATA[file]]></category>
		<category><![CDATA[pscp]]></category>
		<category><![CDATA[scp]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2142</guid>
		<description><![CDATA[ในหลายๆ ครั้ง เรามีไฟล์อยู่บน Windows ต้องการถ่ายโอนไปยังลีนุกซ์ หรือในทำนองกลับกัน ต้องการดาวน์โหลดไฟล์จากลีนุกซ์กลับมาไว้บน Windows บทนี้จะแนะนำการใช้โปรแกรม pscp รันบน Windows เพื่อใช้ถ่ายโอนไฟล์ (transfer) กับเครื่องที่รันลีนุกซ์ ผ่านทาง Secure Shell ได้ ดาวน์โหลดโปรแกรม pscp โปรแกรม pscp เป็นส่วนหนึ่งของชุดโปรแกรม PuTTY แต่สามารถใช้งานได้โดยลำพัง ไม่จำเป็นต้องติดตั้งโปรแกรมทั้งชุด เพียงแค่ดาวน์โหลดไฟล์ pscp.exe ในหน้า PuTTY Download Page ภายใต้หัวข้อ For Windows on Intel x86 คลิ้กดาวน์โหลดไฟล์ pscp.exe เซฟลงบน Desktop ของ Windows &#160; สร้างไฟล์ทดสอบบน Windows ชื่อไฟล์ &#8220;win-data.txt&#8221; เซฟไว้บน Desktop &#160; คลิ้กปุ่ม start [...]]]></description>
			<content:encoded><![CDATA[<p>ในหลายๆ ครั้ง เรามีไฟล์อยู่บน Windows ต้องการถ่ายโอนไปยังลีนุกซ์ หรือในทำนองกลับกัน ต้องการดาวน์โหลดไฟล์จากลีนุกซ์กลับมาไว้บน Windows</p>
<p>บทนี้จะแนะนำการใช้โปรแกรม pscp รันบน Windows เพื่อใช้ถ่ายโอนไฟล์ (transfer) กับเครื่องที่รันลีนุกซ์ ผ่านทาง Secure Shell ได้</p>
<p><span id="more-2142"></span></p>
<h4>ดาวน์โหลดโปรแกรม pscp</h4>
<p>โปรแกรม pscp เป็นส่วนหนึ่งของชุดโปรแกรม PuTTY แต่สามารถใช้งานได้โดยลำพัง ไม่จำเป็นต้องติดตั้งโปรแกรมทั้งชุด เพียงแค่ดาวน์โหลดไฟล์ pscp.exe</p>
<p>ในหน้า PuTTY Download Page ภายใต้หัวข้อ For Windows on Intel x86 คลิ้กดาวน์โหลดไฟล์ pscp.exe เซฟลงบน Desktop ของ Windows</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps01-download-pscp.png"><img class="alignnone size-full wp-image-2144" title="ps01-download-pscp" src="http://spalinux.com/wp-content/uploads/2012/04/ps01-download-pscp.png" alt="" width="757" height="234" /></a></p>
<p>&nbsp;</p>
<p>สร้างไฟล์ทดสอบบน Windows ชื่อไฟล์ &#8220;win-data.txt&#8221; เซฟไว้บน Desktop</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps02-pscp-on-Desktop.png"><img class="alignnone size-full wp-image-2145" title="ps02-pscp-on-Desktop" src="http://spalinux.com/wp-content/uploads/2012/04/ps02-pscp-on-Desktop.png" alt="" width="83" height="309" /></a></p>
<p>&nbsp;</p>
<p>คลิ้กปุ่ม start เลือก Run</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps03-click-start-Run.png"><img class="alignnone size-full wp-image-2146" title="ps03-click-start-Run" src="http://spalinux.com/wp-content/uploads/2012/04/ps03-click-start-Run.png" alt="" width="253" height="133" /></a></p>
<p>&nbsp;</p>
<p>หน้าจอ Run เราสามารถพิมพ์คำสั่งบน Windows ที่ต้องการจะรันในช่อง Open ได้</p>
<p>พิมพ์ cmd แล้วกดปุ่ม [OK] หรือ [Enter] เพื่อเข้าสู่ command prompt ของ Windows</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps04-Open-cmd.png"><img class="alignnone size-full wp-image-2147" title="ps04-Open-cmd" src="http://spalinux.com/wp-content/uploads/2012/04/ps04-Open-cmd.png" alt="" width="347" height="186" /></a></p>
<p>&nbsp;</p>
<p>หน้าจอ command prompt ของ Windows<br />
<a href="http://spalinux.com/wp-content/uploads/2012/04/ps05-cmd.png"><img class="alignnone size-full wp-image-2148" title="ps05-cmd" src="http://spalinux.com/wp-content/uploads/2012/04/ps05-cmd.png" alt="" width="437" height="122" /></a></p>
<p>&nbsp;</p>
<p>พิมพ์คำสั่ง cd Desktop เข้าสู่ Desktop ของผู้ใช้งานบน Windows</p>
<p>พิมพ์คำสั่ง dir เพื่อแสดงไฟล์ จะมีไฟล์ pscp.exe, putty.exe และ win-data.txt</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps06-cd-Desktop-dir1.png"><img class="alignnone size-full wp-image-2150" title="ps06-cd-Desktop-dir" src="http://spalinux.com/wp-content/uploads/2012/04/ps06-cd-Desktop-dir1.png" alt="" width="466" height="287" /></a></p>
<p>&nbsp;</p>
<h4>ถ่ายโอนไฟล์จาก Windows ไปยังลีนุกซ์</h4>
<p>รูปแบบการใช้คำสั่ง pscp เหมือนกับคำสั่ง cp คือ ตามด้วยไฟล์ต้นทางที่ต้องการจะถ่ายโอน เว้นวรรค ตามด้วยปลายทางที่ต้องการส่งไฟล์ไป</p>
<p>ตัวอย่าง ถ้าต้องการถ่ายโอนไฟล์จาก Windows เช่นในตัวอย่างนี้คือไฟล์ win-data.txt ไปยังลีนุกซ์ IP Address  192.168.5.62 ล็อกอินด้วย root สามารถทำได้โดย</p>
<pre>pscp win-data.txt root@192.168.5.62:</pre>
<p>สังเกตการระบุปลายทาง เป็นชื่อ user ตามด้วยเครื่องหมาย @ ตามด้วย IP ของปลายทาง ปิดท้ายด้วยเครื่องหมาย :  โดยพิมพ์ติดกันหมด ไม่มีเว้นวรรค</p>
<p>หากเป็นการล็อกอินเข้าไป IP นั้นเป็นครั้งแรก จะมีข้อความเตือนเกี่ยวกับ key เหมือนกับตอนใช้ putty</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps07-pscp-file-to-linux.png"><img class="alignnone size-full wp-image-2151" title="ps07-pscp-file-to-linux" src="http://spalinux.com/wp-content/uploads/2012/04/ps07-pscp-file-to-linux.png" alt="" width="629" height="208" /></a></p>
<p>&nbsp;</p>
<p>ไฟล์จะถูกถ่ายโอนไปไว้ใน HOME ของ root สามารถตรวจสอบได้โดยการใช้ PuTTY ล็อกอินเข้าไป ใช้คำสั่ง ls แสดงไฟล์ที่ถูกส่งไป</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps08-check-file-on-linux.png"><img class="alignnone size-full wp-image-2152" title="ps08-check-file-on-linux" src="http://spalinux.com/wp-content/uploads/2012/04/ps08-check-file-on-linux.png" alt="" width="457" height="135" /></a></p>
<h4></h4>
<h4>โหลดจากลีนุกซ์ ลง Windows</h4>
<p>หากไฟล์อยู่บนลีนุกซ์ เช่นอยู่ใน HOME ของ root ก็สามารถใช้คำสั่ง pscp เพื่อถ่ายโอนไฟล์มาใส่ใน Windows ได้</p>
<p>โดยระบุต้นทางเป็นไฟล์ที่อยู่บนลีนุกซ์ เว้นวรรคตามด้วยปลายทางคือไดเร็คทอรีบน Windows หากต้องการโหลดไฟล์มาใส่ในไดเร็คทอรีที่พิมพ์คำสั่ง (Desktop) ก็ระบุเป็นเครื่องหมายจุด .</p>
<p>เช่นต้องการโหลดไฟล์ชื่อ linux-file.txt ใน HOME ของ root บนลีนุกซ์ มายังไดเร็คทอรีปัจจุบัน พิมพ์คำสั่ง</p>
<pre>pscp root@192.168.5.62:linux-file.txt .</pre>
<p>หากไฟล์อยู่ในพาธอื่นเช่นต้องการโหลดไฟล์ /etc/passwd จากลีนุกซ์ สามารถระบุต้นทางเป็นพาธเต็ม เช่น root@192.168.5.62:/etc/passwd</p>
<p>ตัวอย่าง และผลลัพท์ที่ได้</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/ps09-pscp-file-from-linux.png"><img class="alignnone size-full wp-image-2153" title="ps09-pscp-file-from-linux" src="http://spalinux.com/wp-content/uploads/2012/04/ps09-pscp-file-from-linux.png" alt="" width="646" height="254" /></a></p>
<h4></h4>
<h4>ข้อมูลอ้างอิง</h4>
<p>&nbsp;</p>
<ul>
<li><a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/download.html" target="_blank">PuTTY Download Page</a></li>
<li><a title="View Details: ล็อกอินเข้าลีนุกซ์จาก Windows ด้วย PuTTY" href="http://spalinux.com/2012/04/login-to-linux-from-windows-by-putty" rel="bookmark">ล็อกอินเข้าลีนุกซ์จาก Windows ด้วย PuTTY</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/transfer-file-between-windows-and-linux-by-pscp/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ล็อกอินเข้าลีนุกซ์จาก Windows ด้วย PuTTY</title>
		<link>http://spalinux.com/2012/04/login-to-linux-from-windows-by-putty</link>
		<comments>http://spalinux.com/2012/04/login-to-linux-from-windows-by-putty#comments</comments>
		<pubDate>Sat, 21 Apr 2012 10:58:59 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Authentication]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Utility]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[putty]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2131</guid>
		<description><![CDATA[หลังจากติดตั้ง คอนฟิกเน็ตเวิร์ค เช่น ตั้งค่า IP Address, Netmask, Gateway บนลีนุกซ์เสร็จเรียบร้อย การคอนฟิกที่เหลือ สามารถล็อกอินจากเครื่องอื่นมาทำงานได้โดยผ่านทาง SSH (Secure shell) ในบทนี้จะแนะนำโปรแกรม PuTTY  ซึ่งเป็นโปรแกรมที่สามารถใช้งานได้ฟรี รันบน Windows ให้สามารถล็อกอินเข้าลีนุกซ์เครื่องที่เราติดตั้งได้ ดาวน์โหลดโปรแกรม PuTTY ค้นหาคำว่า &#8220;PuTTY&#8221; จาก google หรือไม่ก็เข้าเว็บไซต์ PuTTY Download Page โดยตรงที่ http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html การใช้งาน PuTTY สามารถทำได้สองแบบคือดาวน์โหลดไฟล์ putty.exe มาไฟล์เดียว ก็สามารถใช้งานได้แล้ว หรือจะเลือกแบบ Windows installer เพื่อติดตั้งเป็นชุดโปรแกรม โดยจะมีโปรแกรมย่อยอื่นๆ ด้วย เพื่อความง่าย แนะนำให้ดาวน์โหลดแค่ putty.exe ไฟล์เดียว ด้านล่างหัวข้อ &#8220;For Windows on Intel x86&#8243; คลิ้กที่ลิ้งค์ [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากติดตั้ง คอนฟิกเน็ตเวิร์ค เช่น ตั้งค่า IP Address, Netmask, Gateway บนลีนุกซ์เสร็จเรียบร้อย</p>
<p>การคอนฟิกที่เหลือ สามารถล็อกอินจากเครื่องอื่นมาทำงานได้โดยผ่านทาง SSH (Secure shell)</p>
<p>ในบทนี้จะแนะนำโปรแกรม PuTTY  ซึ่งเป็นโปรแกรมที่สามารถใช้งานได้ฟรี รันบน Windows ให้สามารถล็อกอินเข้าลีนุกซ์เครื่องที่เราติดตั้งได้</p>
<p><span id="more-2131"></span></p>
<h4>ดาวน์โหลดโปรแกรม PuTTY</h4>
<p>ค้นหาคำว่า &#8220;PuTTY&#8221; จาก google หรือไม่ก็เข้าเว็บไซต์ PuTTY Download Page โดยตรงที่</p>
<p>http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/01-PuTTY-Download-Page.png"><img class="alignnone size-full wp-image-2132" title="01-PuTTY-Download-Page" src="http://spalinux.com/wp-content/uploads/2012/04/01-PuTTY-Download-Page.png" alt="" width="804" height="323" /></a></p>
<p>การใช้งาน PuTTY สามารถทำได้สองแบบคือดาวน์โหลดไฟล์ putty.exe มาไฟล์เดียว ก็สามารถใช้งานได้แล้ว หรือจะเลือกแบบ Windows installer เพื่อติดตั้งเป็นชุดโปรแกรม โดยจะมีโปรแกรมย่อยอื่นๆ ด้วย</p>
<p>เพื่อความง่าย แนะนำให้ดาวน์โหลดแค่ putty.exe ไฟล์เดียว</p>
<p>ด้านล่างหัวข้อ &#8220;For Windows on Intel x86&#8243; คลิ้กที่ลิ้งค์ &#8220;putty.exe&#8221; เพื่อดาวน์โหลดไฟล์ สมมติว่าเซฟลง Desktop</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/02-putty.exe-on-Desktop.png"><img class="alignnone size-full wp-image-2133" title="02-putty.exe-on-Desktop" src="http://spalinux.com/wp-content/uploads/2012/04/02-putty.exe-on-Desktop.png" alt="" width="75" height="220" /></a></p>
<p>&nbsp;</p>
<p>เพียงแค่นี้ก็สามารถใช้โปรแกรม putty เพื่อล็อกอินเข้าเครื่องลีนุกซ์ได้แล้ว</p>
<p>ดับเบิ้ลคลิ้กที่ไอคอนไฟล์ putty.exe เพื่อรันโปรแกรม</p>
<p>หน้าจอของ PuTTY แสดงขึ้นมา เพื่อให้กรอกข้อมูล</p>
<ul>
<li>Host Name (or IP Address) ใส่ IP Address ของเครื่องลีนุกซ์ เช่น 192.168.5.62</li>
<li>Port ใส่ 22</li>
<li>Connection type: เลือก [x] SSH</li>
</ul>
<p>แล้วกด [Open] หรือกดปุ่ม [Enter]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/03-putty-session.png"><img class="alignnone size-full wp-image-2134" title="03-putty-session" src="http://spalinux.com/wp-content/uploads/2012/04/03-putty-session.png" alt="" width="456" height="442" /></a></p>
<p>&nbsp;</p>
<p>หากเป็นการล็อกอินด้วย SSH เข้าไปลีนุกซ์เครื่องที่ระบุ เป็นครั้งแรก หน้าจอจะแสดงเตือน &#8220;PuTTY Security Alert&#8221; เป็นข้อมูลเกี่ยวกับ key ต่างๆ ที่ใช้ใน  Secure Shell</p>
<p>กด [Yes] เพื่อยืนยันว่าถูกต้อง</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/p4-PuTTY-Security-Alert.png"><img class="alignnone size-full wp-image-2135" title="p4-PuTTY-Security-Alert" src="http://spalinux.com/wp-content/uploads/2012/04/p4-PuTTY-Security-Alert.png" alt="" width="389" height="237" /></a></p>
<p>&nbsp;</p>
<p>หมายเหตุ หากต้องการยืนยันความถูกต้องกับข้อมูลที่เตือนขึ้นมา สามารถตรวจสอบได้โดยเปรียบเทียบ fingerprint บนหน้าจอที่แสดง กับ Secure Shell ที่รันบนเซิร์ฟเวอร์</p>
<p>เช่นข้อมูลเกี่ยวกับ fingerprint ที่เตือนขึ้นมาแสดง</p>
<p>The server&#8217;s rsa2 key fingerprint is:<br />
ssh-rsa <span style="color: #0000ff;">2048 42:b2:98:95:57:14:aa:0a:6c:fa:e8:3a:7b:d8:0b:63</span></p>
<p>เปรียบเทียบกับ Secure Shell ที่รันบนเซิรฟ์เวอร์ ใช้คำสั่ง ssh-keygen -lf เพื่อดู fingerprint</p>
<pre>[root@cent6 ~]# <strong>ssh-keygen -lf /etc/ssh/ssh_host_rsa_key</strong>
<span style="color: #0000ff;">2048 42:b2:98:95:57:14:aa:0a:6c:fa:e8:3a:7b:d8:0b:63</span> /etc/ssh/ssh_host_rsa_key.pub (RSA)</pre>
<p>ผลที่ได้ต้องออกมาตรงกัน เป็นการยืนยันว่า เราล็อกอินเข้าไปในเครื่องที่เราต้องการจริง</p>
<p>หน้าจอให้ใส่ login as: ใส่ root และพิมพ์รหัสผ่านของ root ให้ถูกต้อง ก็จะสามารถล็อกอินเข้าสู่เครื่องลีนุกซ์ได้ เปรียบเสมือนเรานั่งทำงานอยู่ที่หน้าจอคอนโซลของเครื่องลีนุกซ์เลย</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/p5-login-as.png"><img class="alignnone size-full wp-image-2136" title="p5-login-as" src="http://spalinux.com/wp-content/uploads/2012/04/p5-login-as.png" alt="" width="449" height="104" /></a></p>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">PuTTY Download Page</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/login-to-linux-from-windows-by-putty/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เพิ่ม แก้ไข ลบ ผู้ใช้งานบนลีนุกซ์</title>
		<link>http://spalinux.com/2012/04/add-modify-delete-user-on-linux</link>
		<comments>http://spalinux.com/2012/04/add-modify-delete-user-on-linux#comments</comments>
		<pubDate>Sat, 21 Apr 2012 06:21:58 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Authentication]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Users]]></category>
		<category><![CDATA[add]]></category>
		<category><![CDATA[delete]]></category>
		<category><![CDATA[modify]]></category>
		<category><![CDATA[user]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2126</guid>
		<description><![CDATA[เนื่องจาก root สามารถทำได้ทุกอย่างบนลีนุกซ์ ไม่ว่าจะติดตั้งโปรแกรม แก้ไขคอนฟิก หรือกระทั่งสั่งปิดเครื่อง (shutdown) คำแนะนำอย่างหนึ่งสำหรับผู้ใช้ลีนุกซ์ ไม่ว่าจะเพิ่งเริ่มต้นหัดใช้งาน หรือใช้งานมานานแล้ว คือล็อกอินเป็นผู้ใช้ธรรมดาที่ไม่ใช่ root ให้เป็นนิสัย เพราะผู้ใช้งานธรรมดา ก็สามารถทำอะไรได้หลายอย่างแล้ว เช่นดูคอนฟิกของเครื่อง แก้ไขไฟล์เท่าที่มีสิทธิ์ และหากทำอะไรผิดพลาดไป ความเสียหายที่เกิดขึ้น ก็จะกระทบในระดับหนึ่ง เท่าที่ผู้ใช้คนนั้นจะทำได้ ไม่กระทบทั้งเครื่อง จนกว่าจำเป็นต้องมีการแก้ไขคอนฟิกหรือทำอะไรบางอย่างกับลีนุกซ์ที่จำเป็นต้องทำด้วย root ค่อยใช้คำสั่ง su เปลี่ยนผู้ใช้ root (หรือใช้ sudo) และเมื่อหลังจากแก้ไขเสร็จสิ้นแล้ว ก็เปลี่ยนกลับมาเป็น user ธรรมดาอีกครั้ง ในบทนี้จะอธิบายคำสั่งที่ใช้ในการ เพิ่ม แก้ไข ลบ ผู้ใช้งาน โดยต้องใช้ root เป็นคนรันคำสั่ง การเพิ่มผู้ใช้งาน (useradd) ใช้คำสั่ง useradd ตามด้วยชื่อ user ที่ต้องการเพิ่ม เช่นต้องการเพิ่มผู้ใช้งานชื่อ alice [root@cent6 ~]# useradd alice [...]]]></description>
			<content:encoded><![CDATA[<p>เนื่องจาก root สามารถทำได้ทุกอย่างบนลีนุกซ์ ไม่ว่าจะติดตั้งโปรแกรม แก้ไขคอนฟิก หรือกระทั่งสั่งปิดเครื่อง (shutdown)</p>
<p>คำแนะนำอย่างหนึ่งสำหรับผู้ใช้ลีนุกซ์ ไม่ว่าจะเพิ่งเริ่มต้นหัดใช้งาน หรือใช้งานมานานแล้ว คือล็อกอินเป็นผู้ใช้ธรรมดาที่ไม่ใช่ root ให้เป็นนิสัย เพราะผู้ใช้งานธรรมดา ก็สามารถทำอะไรได้หลายอย่างแล้ว เช่นดูคอนฟิกของเครื่อง แก้ไขไฟล์เท่าที่มีสิทธิ์ และหากทำอะไรผิดพลาดไป ความเสียหายที่เกิดขึ้น ก็จะกระทบในระดับหนึ่ง เท่าที่ผู้ใช้คนนั้นจะทำได้ ไม่กระทบทั้งเครื่อง</p>
<p>จนกว่าจำเป็นต้องมีการแก้ไขคอนฟิกหรือทำอะไรบางอย่างกับลีนุกซ์ที่จำเป็นต้องทำด้วย root ค่อยใช้คำสั่ง su เปลี่ยนผู้ใช้ root (หรือใช้ sudo) และเมื่อหลังจากแก้ไขเสร็จสิ้นแล้ว ก็เปลี่ยนกลับมาเป็น user ธรรมดาอีกครั้ง</p>
<p>ในบทนี้จะอธิบายคำสั่งที่ใช้ในการ เพิ่ม แก้ไข ลบ ผู้ใช้งาน โดยต้องใช้ root เป็นคนรันคำสั่ง</p>
<h4><span id="more-2126"></span><br />
การเพิ่มผู้ใช้งาน (useradd)</h4>
<p>ใช้คำสั่ง useradd ตามด้วยชื่อ user ที่ต้องการเพิ่ม เช่นต้องการเพิ่มผู้ใช้งานชื่อ alice</p>
<pre>[root@cent6 ~]# <strong>useradd alice</strong></pre>
<p>คำสั่ง id ตามด้วยชื่อผู้ใช้งาน สามารถใช้ตรวจสอบข้อมูลของผู้ใช้ได้ เช่น uid, gid ของผู้ใช้</p>
<pre>[root@cent6 ~]# <strong>id alice</strong>
uid=500(alice) gid=500(alice) groups=500(alice)</pre>
<p>หากพิมพ์คำสั่ง id เฉยๆ จะเป็นการดูข้อมูลของตัวเอง เช่นถ้า root พิมพ์คำสั่ง id ไม่ได้ระบุชื่อผู้ใช้ ผลลัพธ์จะแสดงข้อมูลของ root</p>
<pre>[root@cent6 ~]# <strong>id</strong>
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk),10(wheel) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023</pre>
<h4>เปลี่ยนรหัสผ่านผู้ใช้งาน (passwd)</h4>
<p>ใช้คำสั่ง passwd ตามด้วยชื่อผู้ใช้งาน เพื่อเปลี่ยนรหัสผ่านของผู้ใช้งาน พิมพ์ password สองครั้งให้เหมือนกัน หน้าจอจะไม่แสดงรหัสผ่านที่พิมพ์ลงไป</p>
<pre>[root@cent6 ~]# <strong>passwd alice</strong>
Changing password for user <span style="color: #0000ff;">alice</span>.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.</pre>
<p>ระวังการใช้คำสั่ง passwd ด้วย root เพราะถ้าลืมพิมพ์ชื่อผู้ใช้งานตามหลังคำสั่ง passwd จะเป็นการเปลี่ยนรหัสผ่านของตัวเอง เช่นถ้า root พิมพ์ ก็จะเป็นการเปลี่ยนรหัสผ่านของ root เอง</p>
<pre>[root@cent6 ~]# <strong>passwd</strong>
Changing password for user <span style="color: #0000ff;">root</span>.
New password:</pre>
<p>สังเกตชื่อ user ที่แสดงขึ้นมาหลังประโยค Changing password for user</p>
<p>หากต้องการยกเลิกการรันคำสั่ง passwd (และหลายๆ คำสั่งบนลีนุกซ์) ให้กดปุ่ม [Ctrl]+[C] จะเป็นการยกเลิก และออกจากคำสั่งได้</p>
<pre>[root@cent6 ~]# <strong>passwd</strong>
Changing password for user <span style="color: #0000ff;">root</span>.
New password: <span style="color: #ff0000;"><strong>[Ctrl]+[C]</strong></span>
[root@cent6 ~]#</pre>
<p>&nbsp;</p>
<p>คำสั่ง passwd จะมีการตรวจสอบความยากง่าย (ต่อการเดา) ของรหัสผ่านที่จะเปลี่ยน คือถ้าสามารถเดาง่ายเกินไป หน้าจอจะแสดงคำเตือนว่า BAD PASSWORD พร้อมคำอธิบายประกอบ เช่นสั้นเกินไป ง่ายต่อการเดา หรือเป็นคำที่อยู่ใน dictionary</p>
<p>เพื่อความปลอดภัยของระบบ แนะนำให้ตั้งรหัสผ่านที่ยากต่อการเดา แต่ให้ผู้ใช้งานเองจำได้ด้วย</p>
<pre>[root@cent6 ~]# <strong>passwd alice</strong>
Changing password for user alice.
New password:
<span style="color: #ff0000;">BAD PASSWORD: it is too short</span>
<span style="color: #ff0000;">BAD PASSWORD: is too simple</span>
Retype new password:</pre>
<p>ถ้ายังยืนยันจะใช้ root ก็สามารถเปลี่ยนรหัสผ่านให้ได้ (ไม่แนะนำ)</p>
<p>ผู้ใช้งานแต่ละคนสามารถเปลี่ยนรหัสผ่านของตัวเองได้ โดยใช้คำสั่ง passwd</p>
<p>ข้อแตกต่างหากรันคำสั่ง passwd ด้วยตัวผู้ใช้งานเองคือ</p>
<ul>
<li>ต้องใส่รหัสผ่านที่ใช้งานอยู่ (current) ให้ถูกต้อง</li>
<li>จะไม่ยอมให้ผู้ใช้งานเอง ตั้งรหัสผ่านง่ายเกินไป</li>
</ul>
<p>ตัวอย่างการใส่รหัสผ่านที่ใช้งานอยู่ไม่ถูกต้อง</p>
<pre>[alice@cent6 ~]$ <strong>passwd</strong>
Changing password for user alice.
Changing password for alice.
(current) UNIX password:
<span style="color: #ff0000;">passwd: Authentication token manipulation error</span></pre>
<p>ตัวอย่างการตั้งรหัสผ่านง่ายเกินไป คำสั่ง passwd จะไม่ยอมเปลี่ยนให้</p>
<pre>[alice@cent6 ~]$ <strong>passwd</strong>
Changing password for user alice.
Changing password for alice.
(current) UNIX password:
New password:
<span style="color: #ff0000;">BAD PASSWORD: it is too short</span>
New password:
<span style="color: #ff0000;">BAD PASSWORD: it is based on your username</span>
New password:
<span style="color: #ff0000;">BAD PASSWORD: it is based on a dictionary word</span>
passwd: Have exhausted maximum number of retries for service
[alice@cent6 ~]$</pre>
<p>&nbsp;</p>
<h4>เปลี่ยนเป็น root ด้วยคำสั่ง su</h4>
<p>ตัวอย่างการล็อกอินด้วยผู้ใช้งานธรรมดา สังเกต พร้อมพต์จะเป็นเครื่องหมาย $</p>
<pre>login as: <strong>alice</strong>
alice@192.168.5.62's password:
[alice@cent6 ~]$</pre>
<p>ใช้คำสั่ง su เมื่อต้องการเปลี่ยนจากผู้ใช้งานธรรมดา ให้เป็น root ใส่ password ของ root ให้ถูกต้อง</p>
<p>สังเกต พร้อมพต์ที่เปลี่ยนไปจากเครื่องหมาย $ เป็น #</p>
<pre>[alice@cent6 ~]$ <strong>su -</strong>
Password:
[root@cent6 ~]#</pre>
<p>ใช้คำสั่ง exit เมื่อต้องการออกจาก root เปลี่ยนเป็นผู้ใช้ธรรมดา</p>
<pre>[root@cent6 alice]# <strong>exit</strong>
exit
[alice@cent6 ~]$</pre>
<p>การใช้คำสั่ง su เพื่อเปลี่ยนเป็น root แนะนำให้พิมพ์เว้นวรรคแล้วตามด้วยเครื่องหมายลบ &#8220;-&#8221; เพื่อเปลี่ยนเป็น root แบบสมบูรณ์แบบ คือให้อ่านค่าคอนฟิกของ root  ด้วย</p>
<p>ตัวอย่างที่เห็นได้ชัดคือค่าคอนฟิก PATH ระหว่างผู้ใช้ธรรมดา กับ root จะแตกต่างกัน หากเปรียบเทียบการใช้คำสั่ง su แล้วตามด้วยเครื่องหมายลบ</p>
<pre>[alice@cent6 ~]$ <strong>echo $PATH</strong>
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/alice/bin</pre>
<p>คำสั่ง su แบบไม่มีเครื่องหมายลบ ตัวแปร $PATH จะมีค่าเหมือนเดิม</p>
<pre>[alice@cent6 ~]$ <strong>su</strong>
Password:
[root@cent6 alice]# echo $PATH
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/alice/bin</pre>
<p>&nbsp;</p>
<p>คำสั่ง su ตามด้วยเครื่องหมาย &#8216;-&#8217; ตัวแปร $PATH จะเปลี่ยนไปตามคอนฟิกของ root</p>
<pre>[alice@cent6 ~]$ <strong>su -</strong>
Password:
[root@cent6 ~]# <strong>echo $PATH</strong>
/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin</pre>
<p>&nbsp;</p>
<h4>การลบผู้ใช้งาน (userdel)</h4>
<p>ใช้คำสั่ง userdel ตามด้วยชื่อผู้ใช้งานที่ต้องการลบออกจากเครื่องลีนุกซ์</p>
<p>โดยดีฟอลต์ คำสั่ง userdel จะลบชื่อผู้ใช้ออกจากระบบ แต่ไฟล์ที่อยู่ใน HOME ของผู้ใช้ยังอยู่ ทั้งนี้ก็เพื่อสำรองไฟล์ไว้ เผื่อผู้ใช้งานคนนี้จะมาขอไฟล์ภายหลังได้</p>
<p>ตัวอย่างการใช้คำสั่ง userdel ไม่ระบุออปชั่น</p>
<pre>[root@cent6 ~]# <strong>id alice</strong>
uid=500(alice) gid=500(alice) groups=500(alice)

[root@cent6 ~]# <strong>userdel alice</strong>

[root@cent6 ~]# <strong>ls -ld /home/alice/</strong>
drwx------. 2 500 500 4096 Apr 21 12:44 /home/alice/

[root@cent6 ~]# <strong>id alice</strong>
id: alice: No such user</pre>
<p>&nbsp;</p>
<p>ระบุออปชั่น &#8216;-r&#8217; หากต้องการลบไฟล์ที่อยู่ใน HOME ของผู้ใช้ด้วย</p>
<pre>[root@cent6 ~]# <strong>id alice</strong>
uid=500(alice) gid=500(alice) groups=500(alice)

[root@cent6 ~]# <strong>userdel -r alice</strong>

[root@cent6 ~]# <strong>ls -ld /home/alice/</strong>
ls: cannot access /home/alice/: No such file or directory</pre>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/add-modify-delete-user-on-linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>แก้ไขคอนฟิก firewall ด้วย system-config-firewall</title>
		<link>http://spalinux.com/2012/04/configure-firewall-using-system-config-firewall</link>
		<comments>http://spalinux.com/2012/04/configure-firewall-using-system-config-firewall#comments</comments>
		<pubDate>Sun, 08 Apr 2012 16:46:12 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2032</guid>
		<description><![CDATA[จากบทความ แก้ไขคอนฟิก firewall บนลีนุกซ์ด้วย iptables ผู้ที่จะแก้ไขคอนฟิกแบบนี้ได้ ต้องมีความรู้ทางด้านเน็ตเวิร์ก มีความเข้าใจเรื่อง firewall รวมทั้งต้องทราบว่าเซอร์วิสที่รันใช้พอร์ตอะไร ซึ่งอาจทำให้เกิดความยากสำหรับผู้เริ่มต้น เพราะไม่รู้ว่าจะเพิ่ม หรือลบ rule อย่างไร ใส่ออปชั่นอะไรบ้าง สำหรับผู้เริ่มต้นหัดใช้ แนะนำให้ใช้โปรแกรม system-config-firewall เพื่อช่วยแก้ไข rule ของ firewall บนลีนุกซ์ โปรแกรม system-config-firewall มีสองเวอร์ชั่น ทำงานได้เหมือนกัน system-config-firewall รันเป็น GUI บน X Window เช่น GNOME system-config-firewall-tui รันบนหน้าจอคอนโซล จะเป็นแบบเมนูให้เลือก ในที่นี้จะแสดงวิธีการใช้แบบรันบนหน้าจอคอนโซล เพื่อเปรียบเทียบสิ่งที่โปรแกรม system-config-firewall จะแก้ไข ก่อนรันคำสั่ง ใช้คำสั่ง iptables -L เพื่อแสดงคอนฟิก firewall ที่ทำงานอยู่ [root@cent6 ~]# iptables -L -v -n --line-numbers [...]]]></description>
			<content:encoded><![CDATA[<p>จากบทความ <a href="http://spalinux.com/2012/04/configure-linux-firewall-by-iptables">แก้ไขคอนฟิก firewall บนลีนุกซ์ด้วย iptables</a> ผู้ที่จะแก้ไขคอนฟิกแบบนี้ได้ ต้องมีความรู้ทางด้านเน็ตเวิร์ก มีความเข้าใจเรื่อง firewall รวมทั้งต้องทราบว่าเซอร์วิสที่รันใช้พอร์ตอะไร</p>
<p>ซึ่งอาจทำให้เกิดความยากสำหรับผู้เริ่มต้น เพราะไม่รู้ว่าจะเพิ่ม หรือลบ rule อย่างไร ใส่ออปชั่นอะไรบ้าง</p>
<p>สำหรับผู้เริ่มต้นหัดใช้ แนะนำให้ใช้โปรแกรม system-config-firewall เพื่อช่วยแก้ไข rule ของ firewall บนลีนุกซ์</p>
<p><span id="more-2032"></span></p>
<p>โปรแกรม system-config-firewall มีสองเวอร์ชั่น ทำงานได้เหมือนกัน</p>
<ul>
<li><strong>system-config-firewall</strong> รันเป็น GUI บน X Window เช่น GNOME</li>
<li><strong>system-config-firewall-tui</strong> รันบนหน้าจอคอนโซล จะเป็นแบบเมนูให้เลือก</li>
</ul>
<p>ในที่นี้จะแสดงวิธีการใช้แบบรันบนหน้าจอคอนโซล</p>
<p>เพื่อเปรียบเทียบสิ่งที่โปรแกรม system-config-firewall จะแก้ไข ก่อนรันคำสั่ง ใช้คำสั่ง iptables -L เพื่อแสดงคอนฟิก firewall ที่ทำงานอยู่</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1     2414  180K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        1    64 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 1379 packets, 505K bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<div></div>
<p>พิมพ์คำสั่ง system-config-firewall-tui</p>
<pre>[root@cent6 ~]# <strong>system-config-firewall-tui</strong></pre>
<p>หมายเหตุ หากรันคำสั่งแล้วขึ้น &#8220;command not found&#8221; ให้ติดตั้งไฟล์ rpm ชื่อ system-config-firewall-tui-1.2.27-5.el6.noarch.rpm</p>
<p>หน้าจอ Firewall Configuration สามารถเลือกที่จะเปิด ปิด firewall ได้</p>
<pre>[*] Enabled เปิดใช้งาน firewall
[ ] Enabled ปิดการใช้ firewall (ไม่แนะนำ)</pre>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/f01-system-config-firewall-tui-Firewall-Configuration.png"><img class="alignnone size-full wp-image-2035" title="f01-system-config-firewall-tui-Firewall Configuration" src="http://spalinux.com/wp-content/uploads/2012/04/f01-system-config-firewall-tui-Firewall-Configuration.png" alt="" width="639" height="411" /></a></p>
<p>&nbsp;</p>
<p>กดปุ่ม [Tab] เพื่อเลื่อนแถบสีไปยัง [Customize] แล้วกดปุ่ม [Enter]</p>
<p>หน้าจอแสดง Services ต่างๆ ที่โปรแกรมเตรียมไว้ให้สามารถเลือกคอนฟิกได้</p>
<p>กดปุ่มลูกศร (cursor) ขึ้นลง เพื่อเลื่อนไปยังเซอร์วิสต่างๆ ได้</p>
<p>โดยดีฟอลต์จากการติดตั้ง ถ้าไม่ได้แก้ไข จะอนุญาตให้เครื่องอื่นเข้ามาใช้ SSH ได้อย่างเดียว</p>
<p>เครื่องหมายดอกจัน ในวงเล็บสี่เหลี่ยม [*] หน้าเซอร์วิส หมายถึงการอนุญาตเซอร์วิสนั้น</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/f02-Trusted-Services.png"><img class="alignnone size-full wp-image-2036" title="f02-Trusted-Services" src="http://spalinux.com/wp-content/uploads/2012/04/f02-Trusted-Services.png" alt="" width="492" height="332" /></a></p>
<p>&nbsp;</p>
<p>กดปุ่มลูกศรลง เพื่อไปยังชื่อเซอร์วิสที่ต้องการอนุญาตให้เครื่องอื่นสามารถเข้ามาใช้บนเครื่องลีนุกซ์นี้ได้</p>
<p>เช่นต้องการให้เครื่องอื่น สามารถใช้เว็บเซิร์ฟเวอร์พอร์ต 80 WWW (HTTP) บนเครื่องเราได้</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/f03-select-WWW.png"><img class="alignnone size-full wp-image-2037" title="f03-select-WWW" src="http://spalinux.com/wp-content/uploads/2012/04/f03-select-WWW.png" alt="" width="313" height="109" /></a></p>
<p>กดปุ่ม [Spacebar] เพื่อเปลี่ยนค่าในวงเล็บสี่เหลี่ยม ต้องเปลี่ยนให้เป็นเครื่องหมายดอกจัน</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/f04-Enable-WWW.png"><img class="alignnone size-full wp-image-2038" title="f04-Enable-WWW" src="http://spalinux.com/wp-content/uploads/2012/04/f04-Enable-WWW.png" alt="" width="312" height="111" /></a></p>
<p>หลังจากเปลี่ยนเป็นเครื่องหมายดอกจันเรียบร้อยแล้ว กดปุ่ม [Tab] เพื่อเลื่อนแถบสีมาที่ [Close] แล้วกดปุ่ม [Enter]</p>
<p>จะกลับมาหน้าจอหลัก กดปุ่ม [Tab] เลื่อนไปยัง [OK] แล้วกดปุ่ม [Enter]<br />
หน้าจอเตือน Warning ว่าจะมีการสร้างคอนฟิกไฟล์ของ firewall ใหม่ เลื่อนแถบสีอยู่ที่ [Yes] แล้วกดปุ่ม [Enter]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/04/f05-Warning.png"><img class="alignnone size-full wp-image-2039" title="f05-Warning" src="http://spalinux.com/wp-content/uploads/2012/04/f05-Warning.png" alt="" width="378" height="289" /></a></p>
<p>&nbsp;</p>
<p>ลองใช้คำสั่ง iptables -L เพื่อดูคอนฟิก firewall ที่เปลี่ยนไป จะเห็น num 5 เพิ่มขึ้นมา เพื่ออนุญาต tcp dpt:80 หรือพอร์ตเว็บ WWW (HTTP) นั่นเอง</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1       13   916 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        1   100 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
<span style="color: #0000ff;">5        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:80</span>
6        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 8 packets, 960 bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<pre></pre>
<p>หากต้องการยกเลิก หรือไม่ต้องการให้เครื่องอื่นเข้าใช้งานพอร์ตเว็บบนเครื่องนี้อีกต่อไปแล้ว ก็ใช้คำสั่ง system-config-firewall-tui เข้าไปเอาเครื่องหมายดอกจันหน้าเซอร์วิส WWW (HTTP) ออกไป ทำตามขั้นตอนอื่นๆ เหมือนเดิม</p>
<p>การใช้คำสั่ง system-config-firewall ไม่ว่าจะแบบ GUI หรือคอนโซล เมื่อแก้ไขเสร็จแล้วกดยืนยันเพื่อให้คอนฟิกใหม่มีผล นอกจากจะทำให้คอนฟิกใหม่มีผลทันทีแล้ว คำสั่งนี้จะเข้าไปแก้ไขไฟล์คอนฟิกของ iptables เพื่อให้มีผลต่อการบู๊ตเครื่องครั้งต่อไปด้วย</p>
<p>ไฟล์คอนฟิกของ iptables ของ CentOS คือไฟล์ /etc/sysconfig/iptables</p>
<p>ตัวอย่างของไฟล์หลังจากเพิ่ม การอนุญาตพอร์ต 80</p>
<pre>[root@cent6 ~]# cat /etc/sysconfig/iptables
 # Firewall configuration written by system-config-firewall
 # Manual customization of this file is not recommended.
 *filter
 :INPUT ACCEPT [0:0]
 :FORWARD ACCEPT [0:0]
 :OUTPUT ACCEPT [0:0]
 -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
 -A INPUT -p icmp -j ACCEPT
 -A INPUT -i lo -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
<span style="color: #0000ff;"> -A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT</span>
 -A INPUT -j REJECT --reject-with icmp-host-prohibited
 -A FORWARD -j REJECT --reject-with icmp-host-prohibited
 COMMIT</pre>
<p>ชื่อเซอร์วิสที่มาอ่านไฟล์นี้ก็คือ iptables โดยดีฟอลต์จะถูกรันเมื่อเข้าสู่ runlevel 2,3,4,5 หรือการบู๊ตเครื่องใหม่</p>
<pre>[root@cent6 ~]# <strong>chkconfig --list iptables</strong>
iptables        0:off 1:off 2:on 3:on 4:on 5:on 6:off</pre>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a title="View Details: แก้ไขคอนฟิก firewall บนลีนุกซ์ด้วย iptables" href="http://spalinux.com/2012/04/configure-linux-firewall-by-iptables" rel="bookmark">แก้ไขคอนฟิก firewall บนลีนุกซ์ด้วย iptables</a></li>
<li><a title="View Details: การเปิดเซอร์วิสตอนบู๊ตเครื่องของ CentOS 6" href="http://spalinux.com/2012/04/start-service-when-boot-centos-6" rel="bookmark">การเปิดเซอร์วิสตอนบู๊ตเครื่องของ CentOS 6</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/configure-firewall-using-system-config-firewall/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>แก้ไขคอนฟิก firewall บนลีนุกซ์ด้วย iptables</title>
		<link>http://spalinux.com/2012/04/configure-linux-firewall-by-iptables</link>
		<comments>http://spalinux.com/2012/04/configure-linux-firewall-by-iptables#comments</comments>
		<pubDate>Sun, 08 Apr 2012 10:28:19 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Firewall]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[Networking]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[iptables]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=2013</guid>
		<description><![CDATA[บนลีนุกซ์มีคุณสมบัติ firewall ติดตั้งมาให้สามารถเลือกอนุญาต หรือปฏิเสธการ รับ/ส่ง packet เข้า/ออกเครื่องได้ จุดมุ่งหมายหลักๆ ของ firewall ก็เพื่อเพิ่มความปลอดภัยให้กับเครื่องเซิร์ฟเวอร์ หลายคนมักจะปิดคุณสมบัตินี้ไป ด้วยเหตุผลบอกว่ายากต่อการทำความเข้าใจ และแก้ไข ในบทความนี้จะอธิบายการใช้คำสั่ง iptables เพื่อแสดงสถานะ firewall ที่เปิดใช้งาน การเพิ่ม rule เพื่ออนุญาตการเชื่อมต่อ การลบ rule ที่ไม่ได้ใช้แล้ว ลองทำตามดู ในหลายเซอร์วิส เพียงแค่แก้ไข rule นิดเดียวเท่านั้น ก็จะใช้งานได้แล้ว ไม่จำเป็นต้องปิดคุณสมบัติ firewall แต่อย่างได้ แสดง (list) rule ที่เปิดใช้งานอยู่ ใช้คำสั่ง iptables ออปชั่น &#8220;-L&#8221; เพื่อแสดงคอนฟิก firewall ที่เปิดใช้งานอยู่ ออปชั่นเพิ่มเติม ที่มักจะใช้ร่วมกับออปชั่น &#8220;-L&#8221; ออปชั่น &#8220;-v&#8221; เพื่อแสดงรายละเอียดเพิ่มเติมของ rule เช่นผลรวมสะสมของจำนวน packets (pkts) [...]]]></description>
			<content:encoded><![CDATA[<p>บนลีนุกซ์มีคุณสมบัติ firewall ติดตั้งมาให้สามารถเลือกอนุญาต หรือปฏิเสธการ รับ/ส่ง packet เข้า/ออกเครื่องได้</p>
<p>จุดมุ่งหมายหลักๆ ของ firewall ก็เพื่อเพิ่มความปลอดภัยให้กับเครื่องเซิร์ฟเวอร์</p>
<p>หลายคนมักจะปิดคุณสมบัตินี้ไป ด้วยเหตุผลบอกว่ายากต่อการทำความเข้าใจ และแก้ไข</p>
<p>ในบทความนี้จะอธิบายการใช้คำสั่ง iptables เพื่อแสดงสถานะ firewall ที่เปิดใช้งาน การเพิ่ม rule เพื่ออนุญาตการเชื่อมต่อ การลบ rule ที่ไม่ได้ใช้แล้ว</p>
<p>ลองทำตามดู ในหลายเซอร์วิส เพียงแค่แก้ไข rule นิดเดียวเท่านั้น ก็จะใช้งานได้แล้ว ไม่จำเป็นต้องปิดคุณสมบัติ firewall แต่อย่างได้</p>
<p><span id="more-2013"></span></p>
<h4>แสดง (list) rule ที่เปิดใช้งานอยู่</h4>
<p>ใช้คำสั่ง iptables ออปชั่น &#8220;-L&#8221; เพื่อแสดงคอนฟิก firewall ที่เปิดใช้งานอยู่</p>
<p>ออปชั่นเพิ่มเติม ที่มักจะใช้ร่วมกับออปชั่น &#8220;-L&#8221;</p>
<ul>
<li>ออปชั่น &#8220;<strong>-v</strong>&#8221; เพื่อแสดงรายละเอียดเพิ่มเติมของ rule เช่นผลรวมสะสมของจำนวน packets (pkts) ขนาด (bytes)</li>
<li>ออปชั่น &#8220;<strong>-n</strong>&#8221; เพื่อแสดง IP (source และ destination) และพอร์ตให้เป็นตัวเลข</li>
<li>ออปชั่น &#8220;<strong>&#8211;line-numbers</strong>&#8221; เพื่อแสดงตัวเลขกำกับ rule ในแต่ละบรรทัด เพื่อสะดวกต่อการแก้ไข rule</li>
</ul>
<p>ตัวอย่างการใช้คำสั่ง iptables ออปชั่น &#8220;-L&#8221; เพื่อแสดงค่าคอนฟิก firewall ที่ใช้งานอยู่</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1      630 49714 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        2   128 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 349 packets, 55278 bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<pre></pre>
<pre></pre>
<p>คอนฟิก rule ที่แสดงนี้ เป็นคอนฟิกดีฟอลต์จากติดตั้ง CentOS 6 (หากไม่ได้มีการเลือกแก้ไข firewall ระหว่างการติดตั้ง)</p>
<p>ในที่นี้ขออธิบาย rule คร่าวๆ ในส่วนของ Chain INPUT ที่เปิดใช้งานอยู่ดังนี้</p>
<ul>
<li>num 1 : อนุญาต (ACCEPT) ให้ทุก packet ที่ผ่านขั้นตอนการเชื่อมต่อเรียบร้อยแล้ว (RELATED, ESTABLISHED) เข้าสู่เครื่องได้</li>
<li>num 2 : อนุญาต (ACCEPT) ให้ packet ประเภท (icmp) เช่น ping เข้าสู่เครื่องได้</li>
<li>num 3 : อนุญาต (ACCEPT) ให้ทุก packet ที่ส่งภายในของเครื่องเองได้ (lo หรือ loopback)</li>
<li>num 4 : อนุญาต (ACCEPT) ให้ packet แรก (NEW) ที่พยายามเชื่อมต่อเข้าพอร์ตปลายทาง tcp dpt:22 (secure shell) สามารถเข้าสู่เครื่องได้ หรือสรุปง่ายๆ คืออนุญาตให้สามารถ ssh เข้าสู่เครื่องนี้ได้นั่นเอง</li>
<li>num 5 : packet อื่นๆ นอกจากนี้ จะถูกปฏิเสธ (REJECT) การเข้าถึงเครื่อง และจะมีการตอบ icmp-host-prohibited กลับไปยังเครื่องต้นทางที่พยายามส่ง packet เข้ามา</li>
</ul>
<p>การทำงาน firewall ของลีนุกซ์จะตรวจสอบ (match) ตามลำดับ rule num ที่คอนฟิกไว้ เช่นเมื่อมี packet พยายามส่งเข้า (INPUT) ก็จะตรวจสอบเรียงตาม num 1, 2, 3, 4, 5</p>
<p>&nbsp;</p>
<h4>เพิ่ม (insert) rule ใหม่</h4>
<p>หากเราติดตั้งเซอร์วิสใหม่ คอนฟิกและรันได้เรียบร้อยแล้ว เช่นเว็บเซิร์ฟเวอร์ เปิดใช้งานพอร์ต tcp 80</p>
<p>ตัวอย่างการใช้คำสั่ง netstat -an เพื่อดูพอร์ตที่เปิดอยู่ ในที่นี้จะใช้คำสั่ง grep เพื่อเลือกแสดงเฉพาะบรรทัดที่มีตัวเลข 80</p>
<pre>[root@cent6 ~]# <strong>netstat -an | grep 80</strong>
tcp        0      0 :::80                       :::*                        LISTEN</pre>
<p>เราสามารถทดสอบจากเครื่องที่รันเว็บเซิร์ฟเวอร์เองได้ เพราะ rule ของ firewall โดยดีฟอลต์อนุญาตให้การส่งข้อมูลภายใน (lo) สามารถทำได้ (rule num 3)</p>
<p>ตัวอย่างการใช้คำสั่ง telnet เพื่อทดสอบการเชื่อมต่อเข้าพอร์ต 80 ของเว็บเซิร์ฟเวอร์ 192.168.5.62 (ทดสอบบนเครื่องเดียวกัน กับที่รันเว็บเซิรฟ์เวอร์)</p>
<pre>[root@cent6 ~]# <strong>telnet 192.168.5.62 80</strong>
Trying 192.168.5.62...
Connected to 192.168.5.62.
Escape character is '^]'.

<strong>HEAD / HTTP/1.0</strong>

HTTP/1.1 403 Forbidden
Date: Sun, 08 Apr 2012 08:53:11 GMT
Server: Apache/2.2.15 (CentOS)
Accept-Ranges: bytes
Content-Length: 5039
Connection: close
Content-Type: text/html; charset=UTF-8

Connection closed by foreign host.</pre>
<p>คำอธิบายการใช้คำสั่ง telnet เข้าพอร์ต</p>
<ul>
<li>หากใช้คำสั่ง telnet แล้วขึ้น &#8220;command not found&#8221; ต้องติดตั้งไฟล์ rpm ของโปรแกรม telnet เพิ่ม ซึ่งอยู่ในแผ่นดีวีดีติดตั้ง CentOS อยู่แล้ว</li>
</ul>
<pre>[root@cent6 Packages]# <strong>rpm -i telnet-0.17-47.el6.x86_64.rpm</strong></pre>
<ul>
<li>เราสามารถใช้คำสั่ง telnet เพื่อทดสอบเข้าพอร์ตเว็บ (tcp 80) ได้ โดยพิมพ์คำสั่ง telnet ตามด้วย IP ของเว็บเซิร์ฟเวอร์ แล้วตามด้วยพอร์ตที่รันเว็บ</li>
<li>ในคำสั่ง telnet เมื่อขึ้น Connected แปลว่าสามารถเชื่อมต่อเข้าพอร์ตที่ระบะไว้ได้</li>
<li>กดปุ่ม [Enter] หนึ่งครั้ง แล้วพิมพ์คำสั่ง HEAD / HTTP/1.0 เพื่อเป็นการส่งคำสั่งขอดูข้อมูลเบื้องต้นของเว็บเซิร์ฟเวอร์ได้</li>
<li>หากต้องการออกจากคำสั่ง telnet ให้กดปุ่ม [Ctrl] และ ] พร้อมกัน จะมีพร้อมพต์ telnet&gt; ขึ้นมาให้พิมพ์คำสั่ง quit เพื่อออจาก telnet</li>
</ul>
<pre>[root@cent6 ~]# <strong>telnet 192.168.5.62 80</strong>
Trying 192.168.5.62...
Connected to 192.168.5.62.
Escape character is '^]'.
<strong>^]</strong>
telnet&gt; <strong>quit</strong>
Connection closed.</pre>
<p>แต่ถ้าใช้ browser หรือทดสอบด้วยคำสั่ง telnet เข้าพอร์ต 80 จากเครื่องอื่นๆ เปิดเว็บเข้ามา จะเข้าไม่ได้</p>
<pre>$ <strong>telnet 192.168.5.62 80</strong>
 Trying 192.168.5.62...
 telnet: connect to address 192.168.5.62: No route to host</pre>
<p>ต้องเพิ่ม rule ใหม่ เข้าไปเพื่ออนุญาตการเชื่อมต่อเข้ามา โดย rule ที่เพิ่มใหม่ ต้องเพิ่มก่อน rule สุดท้ายที่มีการปฏิเสธการเข้าถึง (REJECT) ทุก packet</p>
<p>ใช้คำสั่ง iptables ออปชั่น &#8220;-L&#8221; เพื่อแสดงคอนฟิก firewall ที่ใช้งานอยู่</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     2363  182K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       11   660 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        4   252 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5       10   620 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 1358 packets, 169K bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<pre></pre>
<p>ใช้คำสั่ง iptables ออปชั่น &#8220;-I&#8221; เพิ่มด้วยการแทรก (insert) rule ใหม่เข้าไปแทนที่ rule num 5 ระบุว่าอนุญาต (ACCEPT) ให้การเชื่อมต่อใหม่ (NEW) เข้า (INPUT) พอร์ต tcp 80 ได้</p>
<pre>[root@cent6 ~]# <strong>iptables -I INPUT 5 -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT</strong></pre>
<p>ตรวจสอบผลลัพธ์ที่ได้จาก iptables ออปชั่น &#8220;-L&#8221;</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     2383  184K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       11   660 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        4   252 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
<span style="color: #0000ff;">5 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80</span>
6       10   620 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 5 packets, 692 bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<pre></pre>
<p>ทดสอบจากเครื่องอื่นด้วยการ telnet เข้าพอร์ต 80 อีกครั้ง จะสามารถเชื่อมต่อได้แล้ว</p>
<pre>$ <strong>telnet 192.168.5.62 80</strong>
Trying 192.168.5.62...
Connected to 192.168.5.62.
Escape character is '^]'.

<strong>HEAD / HTTP/1.0</strong>

HTTP/1.1 403 Forbidden
Date: Sun, 08 Apr 2012 09:06:10 GMT
Server: Apache/2.2.15 (CentOS)
Accept-Ranges: bytes
Content-Length: 5039
Connection: close
Content-Type: text/html; charset=UTF-8

Connection closed by foreign host.</pre>
<pre></pre>
<p>&nbsp;</p>
<h4>ลบ (delete) rule</h4>
<p>หากต้องการยกเลิก rule ที่ใส่ไว้ เช่นไม่ต้องการให้เครื่องอื่นสามารถเชื่อมต่อเข้าพอร์ต 80 ได้อีกต่อไปแล้ว สามารถทำได้โดยใช้คำสั่ง iptables ออปชั่น -D ตามด้วย rule num ที่ต้องการลบ (delete) ใช้คำสั่ง iptables ออปชั่น &#8220;-L&#8221; เพื่อแสดง rule ที่เปิดใช้งานอยู่</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     2417  186K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       11   660 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        4   252 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
<span style="color: #0000ff;">5 1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:80</span>
6       10   620 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 27 packets, 5466 bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<p>สมมติว่าต้องการลบ rule ที่อนุญาตการเชื่อมต่อเข้า (INPUT) พอร์ต 80 หรือ rule num 5 สามารถทำได้โดย</p>
<pre>[root@cent6 ~]# <strong>iptables -D INPUT 5</strong></pre>
<p>ใช้คำสั่ง iptables -L จะเห็นว่า rule num 5 ถูกลบไป</p>
<pre>[root@cent6 ~]# <strong>iptables -L -v -n --line-numbers</strong>
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1     2518  194K ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2        2   168 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0
3       11   660 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0
4        4   252 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5       10   620 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 6 packets, 728 bytes)
num   pkts bytes target     prot opt in     out     source               destination</pre>
<p>&nbsp;</p>
<p>ลองทดสอบ telnet เข้าพอร์ต 80 จากเครื่องอื่นดู ก็ไม่สามารถเชื่อมต่อได้แล้ว</p>
<pre>$ telnet 192.168.5.62 80
 Trying 192.168.5.62...
 telnet: connect to address 192.168.5.62: No route to host</pre>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li><a title="View Details: แก้ไขคอนฟิก firewall ด้วย system-config-firewall" href="http://spalinux.com/2012/04/configure-firewall-using-system-config-firewall" rel="bookmark">แก้ไขคอนฟิก firewall ด้วย system-config-firewall</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/configure-linux-firewall-by-iptables/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การเปิดเซอร์วิสตอนบู๊ตเครื่องของ CentOS 6</title>
		<link>http://spalinux.com/2012/04/start-service-when-boot-centos-6</link>
		<comments>http://spalinux.com/2012/04/start-service-when-boot-centos-6#comments</comments>
		<pubDate>Sat, 07 Apr 2012 17:51:04 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[sevice]]></category>
		<category><![CDATA[start]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1993</guid>
		<description><![CDATA[หลังจากที่ติดตั้งโปรแกรม คอนฟิกค่าต่างๆ แล้วทดสอบการเปิด ปิดเซอร์วิสด้วยคำสั่ง service ได้ผลตามที่ต้องการแล้ว หากต้องการให้เมื่อบู๊ตเครื่องทุกครั้ง ให้เปิด (start) เซอร์วิสนี้ขึ้นมาด้วย หรือทุกครั้งที่เรียกคำสั่งปิดเครื่อง (shutdown) ให้ปิด (stop) เซอร์วิสนี้ก่อน สามารถทำได้โดยแก้ไขไฟล์ที่อยู่ใน /etc/rc.d/rcX.d/ โดย X เป็นตัวเลขแสดง runlevel แสดงถึงสถานะของเครื่อง ในไฟล์ /etc/inittab จะอธิบายความหมายของตัวเลขค่า runlevel ที่กำหนดไว้ บางส่วนของไฟล์ /etc/inittab [root@cent6 ~]# tail /etc/inittab # Default runlevel. The runlevels used are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user [...]]]></description>
			<content:encoded><![CDATA[<p>หลังจากที่ติดตั้งโปรแกรม คอนฟิกค่าต่างๆ แล้วทดสอบการเปิด ปิดเซอร์วิสด้วยคำสั่ง service ได้ผลตามที่ต้องการแล้ว</p>
<p>หากต้องการให้เมื่อบู๊ตเครื่องทุกครั้ง ให้เปิด (start) เซอร์วิสนี้ขึ้นมาด้วย หรือทุกครั้งที่เรียกคำสั่งปิดเครื่อง (shutdown) ให้ปิด (stop) เซอร์วิสนี้ก่อน</p>
<p><span id="more-1993"></span></p>
<p>สามารถทำได้โดยแก้ไขไฟล์ที่อยู่ใน /etc/rc.d/rc<span style="color: #0000ff;">X</span>.d/ โดย X เป็นตัวเลขแสดง runlevel แสดงถึงสถานะของเครื่อง</p>
<p>ในไฟล์ /etc/inittab จะอธิบายความหมายของตัวเลขค่า runlevel ที่กำหนดไว้</p>
<p>บางส่วนของไฟล์ /etc/inittab</p>
<pre>[root@cent6 ~]# <strong>tail /etc/inittab</strong>
# Default runlevel. The runlevels used 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)
#
<span style="color: #0000ff;">id:3:initdefault:</span></pre>
<h4>การบู๊ตเครื่อง</h4>
<p>ในเบื้องต้นขออธิบายคร่าวๆ เกี่ยวกับการบู๊ตเครื่อง runlevel และการรันเซอร์วิสดังนี้</p>
<ul>
<li>เมื่อบู๊ตเครื่องขึ้นมาทุกครั้ง หลังจากที่โหลด kernel เรียบร้อย init จะเป็นโปรเซสแรกที่ถูกรันขึ้นมา</li>
<li>init จะอ่านไฟล์ /etc/inittab เพื่อหาบรรทัดที่มีคอนฟิก &#8220;initdefault&#8221; เพื่อกำหนดค่า runlevel เริ่มต้น โดยส่วนใหญ่แล้วจะเป็น 3 (runlevel 5 จะคล้ายกับ 3 ทุกอย่างยกเว้นจะมีการรันเซอร์วิส X Window ขึ้นมาด้วย)</li>
<li>สมมติว่าเข้าสู่ runlevel 3 จะมีการรันสคริปต์ไฟล์ต่างๆ ที่อยู่ใน /etc/rc.d/rc3.d/ โดยจะรันเฉพาะชื่อไฟล์ที่ขึ้นต้นด้วยตัวอักษร &#8220;S&#8221; (เอสตัวใหญ่) เรียงตามลำดับชื่อไฟล์ (ตัวเลข)</li>
</ul>
<p>ตัวอย่างสคริปต์ไฟล์ที่มีชื่อไฟล์ขึ้นต้นด้วยตัวอักษร &#8220;S&#8221; สังเกตว่าแต่ละไฟล์จะเป็นลิ้งค์ไฟล์แบบ soft link ชี้ไปยังสคริปต์ไฟล์จริงๆ ที่อยู่ใน ../init.d/ หรือพาธเต็มๆ คือ /etc/rc.d/init.d/ ที่มาพร้อมกับการติดตั้งโปรแกรมจากไฟล์ rpm นั่นเอง</p>
<pre>[root@cent6 ~]# <strong>cd /etc/rc.d/rc3.d/</strong>
[root@cent6 rc3.d]# <strong>ls -l S*</strong>
lrwxrwxrwx. 1 root root 17 Mar 24 13:46 <span style="color: #0000ff;">S</span>01sysstat -&gt; ../init.d/sysstat
lrwxrwxrwx. 1 root root 22 Mar 24 13:46 <span style="color: #0000ff;">S</span>02lvm2-monitor -&gt; ../init.d/lvm2-monitor
lrwxrwxrwx. 1 root root 19 Mar 24 13:45 <span style="color: #0000ff;">S</span>08ip6tables -&gt; ../init.d/ip6tables
lrwxrwxrwx. 1 root root 18 Mar 24 13:44 <span style="color: #0000ff;">S</span>08iptables -&gt; ../init.d/iptables
lrwxrwxrwx. 1 root root 17 Mar 24 13:45 <span style="color: #0000ff;">S</span>10network -&gt; ../init.d/network
...</pre>
<p>สมมติว่าเราติดตั้งเว็บเซิร์ฟเวอร์ Apache จากไฟล์ rpm ที่อยู่ในแผ่นติดตั้ง CentOS 6</p>
<p>จะมีการสร้างลิ้งค์ไฟล์ใน /etc/rc.d/rc3.d/ ด้วย แต่โดยมาก ดีฟอลต์ของการติดตั้ง ชื่อลิ้งค์ไฟล์ที่ติดตั้งมา จะขึ้นต้นด้วยตัวอักษร &#8220;K&#8221;</p>
<pre>[root@cent6 rc3.d]# <strong>ls -l *httpd</strong>
lrwxrwxrwx. 1 root root 15 Apr 6 17:16 <span style="color: #0000ff;">K</span>15httpd -&gt; ../init.d/httpd</pre>
<p>แปลว่าหากมีการบู๊ตเครื่องใหม่ Apache จะไม่ถูกรันขึ้นมาโดยอัตโนมัติ</p>
<p>หากต้องการแก้ไขให้รัน Apache ตอนบู๊ตเครื่องด้วย ก็สามารถทำได้โดยเปลี่ยนตัวอักษรขึ้นต้นจากตัวอักษร &#8220;K&#8221; ให้เป็นตัว &#8220;S&#8221;</p>
<p>ตัวอย่างการแก้ไข (<span style="color: #ff0000;">ไม่แนะนำให้ทำแบบนี้</span>) เช่น</p>
<pre>[root@cent6 rc3.d]# <span style="color: #ff0000;"><strong>mv K15httpd S15httpd</strong></span></pre>
<pre>[root@cent6 rc3.d]# <strong>ls -l *httpd</strong>
lrwxrwxrwx. 1 root root 15 Apr 6 17:16 S15httpd -&gt; ../init.d/httpd</pre>
<p>หลังจากแก้ไขแล้ว ลองบู๊ตเครื่องดู ก็จะมีการพยายามรัน httpd ขึ้นมาเหมือนกัน</p>
<p>แต่ปัญหาของการแก้ไขเองแบบนี้ อาจทำให้การรันโปรแกรมหรือเซอร์วิสนี้มีปัญหาได้ ยกตัวอย่างเพิ่มอีกโปรแกรมคือ MySQL</p>
<p>ตัวอย่างลิ้งค์ไฟล์ที่สร้างจากการติดตั้งไฟล์ rpm</p>
<pre>[root@cent6 rc3.d]# <strong>ls -l *mysqld</strong>
lrwxrwxrwx. 1 root root 16 Apr 1 10:34 K36mysqld -&gt; ../init.d/mysqld</pre>
<p>ถ้าเราต้องการให้รัน MySQL ตอนบู๊ตเครื่องด้วย</p>
<p>สมมติว่าเราแก้ไขด้วยคำสั่ง mv แล้วเปลี่ยนเฉพาะตัวอักษรหน้าจาก &#8220;K&#8221; ให้เป็น &#8220;S&#8221;</p>
<pre>[root@cent6 rc3.d]# <span style="color: #ff0000;"><strong>mv K36mysqld S36mysqld</strong></span></pre>
<pre>[root@cent6 rc3.d]# <strong>ls -l *mysqld</strong>
lrwxrwxrwx. 1 root root 16 Apr 1 10:34 S36mysqld -&gt; ../init.d/mysqld</pre>
<p>เมื่อบู๊ตเครื่องใหม่ แล้วเข้าสู่ runlevel 3 เซอร์วิส Apache จะถูกรันขึ้นมาก่อน MySQL เพราะตัวเลขน้อยกว่า ซึ่งอาจทำให้เว็บโปรแกรมที่จำเป็นต้องเชื่อมต่อฐานข้อมูลมีปัญหาได้</p>
<p>วิธีการแก้ไขอย่างถูกต้อง และเป็นวิธีที่แนะนำสำหรับ CentOS 6  เพื่อให้มีการเปิดเซอร์วิสตอนบู๊ตเครื่อง หรือเข้าสู่ runlevel 3</p>
<p>ต้องใช้คำสั่ง chkconfig</p>
<p>ก่อนจะไปขั้นตอนต่อไป เปลี่ยนชื่อไฟล์ให้เหมือนเดิม</p>
<pre>[root@cent6 rc3.d]# <strong>mv S15httpd K15httpd</strong>
[root@cent6 rc3.d]# <strong>mv S36mysqld K36mysqld</strong></pre>
<p>&nbsp;</p>
<h4>คำสั่ง chkconfig</h4>
<p>ใช้คำสั่ง chkconfig ตามด้วยออปชั่น &#8211;list แล้วตามด้วยชื่อเซอร์วิสเช่น httpd เพื่อแสดงสถานะการรันเซอร์วิสในแต่ละ runlevel</p>
<pre>[root@cent6 rc3.d]# <strong>chkconfig --list httpd</strong>
httpd 0:off 1:off 2:off <span style="color: #0000ff;">3:off</span> 4:off 5:off 6:off</pre>
<p>ตัวเลข 0-6 คือ runlevel ส่วน on, off จะเป็นคอนฟิกแสดงว่าให้เปิด หรือปิด เซอร์วิส เมื่อเข้าสู่ runlevel นั้นๆ</p>
<p>เช่น runlevel 3 ของ httpd คือ off หมายถึงไม่มีการรันเซอร์วิสนี้เมื่อเข้าสู่ runlevel 3</p>
<p>หากต้องการให้รันเซอร์วิสนี้ ให้ใช้คำสั่ง chkconfig ตามด้วยชื่อ service แล้วตามด้วย on ตัวอย่างเช่น</p>
<pre>[root@cent6 rc3.d]# <strong>chkconfig httpd on</strong></pre>
<pre>[root@cent6 rc3.d]# chkconfig --list httpd
httpd 0:off 1:off <span style="color: #0000ff;">2:on 3:on 4:on 5:on</span> 6:off</pre>
<pre>[root@cent6 rc3.d]# <strong>ls -l *httpd</strong>
lrwxrwxrwx. 1 root root 15 Apr 7 16:05 <span style="color: #0000ff;">S85</span>httpd -&gt; ../init.d/httpd</pre>
<p>จะเห็นว่าสถานะของ runlevel 2,3,4,5 ของ httpd เปลี่ยนเป็น on แปลว่าถ้าเข้าสู่ runlevel เหล่านี้ รวมทั้ง 3 (บู๊ตเครื่อง) จะมีการรันเซอร์วิสนี้ด้วย</p>
<p>เมื่อใช้คำสั่ง ls -l เพื่อดูลิ้งค์ไฟล์ ชื่อไฟล์ก็จะเปลี่ยนเป็นขึ้นต้นด้วย &#8220;S&#8221; พร้อมทั้งตัวเลขก็เปลี่ยนไปด้วย</p>
<p>ลองเปลี่ยนคอนฟิกให้รัน MySQL ขึ้นมาตอนบู๊ตเครื่องด้วย</p>
<pre>[root@cent6 rc3.d]# <strong>chkconfig --list mysqld</strong>
mysqld 0:off 1:off 2:off 3:off 4:off 5:off 6:off</pre>
<pre>[root@cent6 rc3.d]# <strong>chkconfig mysqld on</strong></pre>
<pre>[root@cent6 rc3.d]# <strong>chkconfig --list mysqld</strong>
mysqld 0:off 1:off <span style="color: #0000ff;">2:on 3:on 4:on 5:on</span> 6:off</pre>
<pre>[root@cent6 rc3.d]# <strong>ls -l *mysqld</strong>
lrwxrwxrwx. 1 root root 16 Apr 7 16:08 <span style="color: #0000ff;">S64</span>mysqld -&gt; ../init.d/mysqld</pre>
<p>ตอนนี้ทุกครั้งที่มีการบู๊ตเครื่องเข้าสู่ runlevel 2,3,4,5 จะมีการรัน MySQL ขึ้นมาด้วย สังเกตตัวเลข 64 แปลว่า MySQL จะถูกรันขึ้นมาก่อน Apache ซึ่งมีตัวเลข 85</p>
<p>ตัวเลขลำดับในการรันของแต่ละเซอร์วิส จะถูกกำหนดอยู่ในสคริปต์ไฟล์ เช่น</p>
<pre>[root@cent6 ~]# <strong>cat /etc/rc.d/init.d/httpd</strong>
#!/bin/bash
#
# httpd Startup script for the Apache HTTP Server
#
# <span style="color: #0000ff;">chkconfig: - 85 15</span>
...</pre>
<p>จะอยู่ในบรรทัดที่มีคำว่า chkconfig จะมีอยู่สองตัวเลข คือ 85 และ 15</p>
<p>ตัวเลขแรก 85 คือลำดับที่ในการเปิด (start) เซอร์วิส</p>
<p>ตัวเลขที่สอง 15 คือลำดับที่ในการปิด (stop) เซอร์วิส</p>
<pre>[root@cent6 ~]# <span style="color: #0000ff;">cat /etc/rc.d/init.d/mysqld</span>
#!/bin/sh
#
# mysqld This shell script takes care of starting and stopping
# the MySQL subsystem (mysqld).
#
# <span style="color: #0000ff;">chkconfig: - 64 36</span>
...</pre>
<p>ส่วนของ mysqld ตัวแรกแรกคือ 64 ตัวเลขที่สองคือ 36</p>
<p>โดยสรุปแล้ว ระหว่าง httpd (Apache) และ mysqld (MySQL)</p>
<p>ตอนเปิดเครื่อง mysqld(64) จะถูกเปิด (start) ขึ้นมาก่อน httpd(85)</p>
<p>ตอนปิดเครื่อง httpd(15) จะถูกปิด (stop) ก่อน mysqld(36)<br />
หากต้องการยกเลิก หรือไม่ต้องการให้รันเซอร์วิสตอนบู๊ตเครื่องแล้ว ก็สามารถใช้คำสั่ง chkconfig ตามด้วยชื่อ และตามด้วยคำว่า off</p>
<p>เช่น ไม่ต้องการให้ httpd และ mysqld รันขึ้นมาตอนบู๊ตเครื่อง</p>
<pre>[root@cent6 ~]# <strong>chkconfig httpd off</strong>
[root@cent6 ~]# <strong>chkconfig mysqld off</strong></pre>
<pre>[root@cent6 ~]# <strong>chkconfig --list httpd</strong>
httpd 0:off 1:off <span style="color: #0000ff;">2:off 3:off 4:off 5:off</span> 6:off</pre>
<pre>[root@cent6 ~]# <strong>chkconfig --list mysqld</strong>
mysqld 0:off 1:off <span style="color: #0000ff;">2:off 3:off 4:off 5:off</span> 6:off</pre>
<p>&nbsp;</p>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li>man  chkconfig(8)</li>
<li><a title="View Details: วิธีการเปิด ปิด เซอร์วิสของ CentOS 6" href="http://spalinux.com/2012/04/how-to-start-stop-service-in-centos-6" rel="bookmark">วิธีการเปิด ปิด เซอร์วิสของ CentOS 6</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/start-service-when-boot-centos-6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>วิธีการเปิด ปิด เซอร์วิสของ CentOS 6</title>
		<link>http://spalinux.com/2012/04/how-to-start-stop-service-in-centos-6</link>
		<comments>http://spalinux.com/2012/04/how-to-start-stop-service-in-centos-6#comments</comments>
		<pubDate>Sat, 07 Apr 2012 10:00:03 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[start]]></category>
		<category><![CDATA[stop]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1983</guid>
		<description><![CDATA[โปรแกรมที่รันเป็นเซิร์ฟเวอร์ หรือโปรเซสควบคุมการทำงานของเครื่องบนลีนุกซ์ (นิยมเรียกโปรแกรมแบบนี้ว่า เซอร์วิส) ที่ติดตั้งจากไฟล์ rpm จะมีสคริปต์ไฟล์ช่วยในการเปิด ปิด หรือตรวจสอบสถานะของแต่ละโปรแกรมได้ สคริปต์ไฟล์นี้ เราเรียกว่า &#8220;System V init script&#8221; หรือเรียกย่อๆ ว่า &#8220;init script&#8221; ส่วนใหญ่แล้วจะเขียนด้วย Shell script อยู่ในไดเร็คทอรี /etc/rc.d/init.d/ (หรือ /etc/init.d/ เป็นลิ้งค์ไฟล์เชื่อมโยงกัน) ถ้าเปรียบเทียบกับ Windows ก็เหมือนกับ Services ที่อยู่ใน Administrative Tools ของ Control Panel ตัวอย่างบางส่วนของสคริปต์ไฟล์ ที่ใช้ควบคุม sshd (Secure Shell) #!/bin/bash # # sshd          Start up the OpenSSH server daemon # # chkconfig: [...]]]></description>
			<content:encoded><![CDATA[<p>โปรแกรมที่รันเป็นเซิร์ฟเวอร์ หรือโปรเซสควบคุมการทำงานของเครื่องบนลีนุกซ์ (นิยมเรียกโปรแกรมแบบนี้ว่า เซอร์วิส) ที่ติดตั้งจากไฟล์ rpm จะมีสคริปต์ไฟล์ช่วยในการเปิด ปิด หรือตรวจสอบสถานะของแต่ละโปรแกรมได้</p>
<p>สคริปต์ไฟล์นี้ เราเรียกว่า &#8220;System V init script&#8221; หรือเรียกย่อๆ ว่า &#8220;init script&#8221; ส่วนใหญ่แล้วจะเขียนด้วย Shell script อยู่ในไดเร็คทอรี /etc/rc.d/init.d/ (หรือ /etc/init.d/ เป็นลิ้งค์ไฟล์เชื่อมโยงกัน)</p>
<p>ถ้าเปรียบเทียบกับ Windows ก็เหมือนกับ Services ที่อยู่ใน Administrative Tools ของ Control Panel</p>
<p><span id="more-1983"></span>ตัวอย่างบางส่วนของสคริปต์ไฟล์ ที่ใช้ควบคุม sshd (Secure Shell)</p>
<pre>#!/bin/bash
#
# sshd          Start up the OpenSSH server daemon
#
# chkconfig: 2345 55 25
# description: SSH is a protocol for secure remote shell access. \
#              This service starts up the OpenSSH server daemon.
...
start()
{
        [ -x $SSHD ] || exit 5
        [ -f /etc/ssh/sshd_config ] || exit 6
...
        echo -n $"Starting $prog: "
        $SSHD $OPTIONS &amp;&amp; success || failure
...
stop()
{
        echo -n $"Stopping $prog: "
        if [ -n "`pidfileofproc $SSHD`" ] ; then
            killproc $SSHD
        else
            failure $"Stopping $prog"
        fi
...</pre>
<p>&nbsp;</p>
<p>หากต้องการจะเปิด หรือปิด โปรแกรมหรือเซอร์วิส เราสามารถรันสคริปต์ไฟล์นี้ได้โดยตรง เช่นต้องการปิด (stop) เซอร์วิส sshd ก็รันสคริปต์แล้วตามด้วยออปชั่น stop</p>
<pre>[root@cent6 ~]# /etc/rc.d/init.d/sshd stop
Stopping sshd:                                             [  <span style="color: #008000;">OK  ]</span></pre>
<p>หรือต้องการเปิด (start) เซอร์วิส sshd  ก็รันสคริปต์แล้วตามด้วยออปชั่น start</p>
<pre>[root@cent6 ~]# /etc/rc.d/init.d/sshd start
Starting sshd:                                             [  <span style="color: #008000;">OK</span>  ]</pre>
<p>ข้อดีของการใช้สคริปต์ นอกจากใช้เปิด ปิดเซอร์วิสได้แล้ว ในไฟล์สคริปต์ จะมีการตรวจสอบความถูกต้องก่อนรันโปรแกรม เช่นคอนฟิกมีหรือยัง คอนฟิกที่ใส่ไว้ถูกต้องหรือไม่ ไฟล์ที่จำเป็นต้องใช้มีครบถ้วนหรือไม่ ลำดับในการเปิดเซอร์วิส หรือลำดับในการปิด และเมื่อรันสคริปต์ไปแล้ว ผลการรันเป็นอย่างไร รันได้ถูกต้องหรือไม่</p>
<p>ตัวอย่างถ้าคอนฟิกไฟล์ไม่ถูกต้อง สคริปต์จะฟ้องว่ารันไม่สำเร็จ</p>
<pre>[root@cent6 ~]# <strong>service sshd start</strong>
Starting sshd: /etc/ssh/sshd_config: line 129: Bad configuration option: anner
/etc/ssh/sshd_config: terminating, 1 bad configuration options
                                                           [<span style="color: #ff0000;">FAILED</span>]</pre>
<p>&nbsp;</p>
<h4>การใช้คำสั่ง service</h4>
<p>แต่เพื่อความสะดวก เราสามารถใช้คำสั่ง service เพื่อช่วยในการรันสคริปต์ แทนการพิมพ์แบบรันไฟล์ได้  รูปแบบการใช้คำสั่ง service คือ</p>
<pre># <strong>service &lt;SCRIPT&gt; &lt;COMMAND&gt; [OPTIONS]</strong></pre>
<p>คำอธิบาย</p>
<ul>
<li><strong>&lt;SCRIPT&gt;</strong>   ชื่อสคริปต์ไฟล์ที่อยู่ภายใต้ /etc/rc.d/init.d/ ไม่ต้องระบุเป็น พาธเต็มเช่น ระบุแค่ sshd</li>
<li><strong>&lt;COMMAND&gt;</strong>   ระบุคำสั่งที่ต้องการ เช่น เปิด (start) ปิด (stop)</li>
<li><strong>[OPTIONS]</strong>   ออปชั่นอื่นๆ เพิ่มเติม โดยทั่วไปแล้วไม่ค่อยได้ใช้</li>
</ul>
<p>ตัวอย่างเช่น หากต้องการปิด (stop) เซอร์วิส sshd ก็สามารถทำได้โดย</p>
<pre>[root@cent6 ~]# <strong>service sshd stop</strong>
Stopping sshd:                                             [ <span style="color: #008000;"> OK</span>  ]</pre>
<p>หรือต้องการเปิด (start) เซอร์วิส sshd ก็สามารถทำได้โดย</p>
<pre>[root@cent6 ~]# <strong>service sshd start</strong>
Starting sshd:                                             [  <span style="color: #008000;">OK</span>  ]</pre>
<p>แต่ละเซอร์วิส จะมีคำสั่ง (COMMAND) ไม่เหมือนกัน แต่ส่วนใหญ่แล้วจะมีคำสั่งเหล่านี้</p>
<ul>
<li><strong>start</strong> &#8211; เปิดหรือรันเซอร์วิส</li>
<li><strong>stop</strong> &#8211; ปิด หรือ หยุดการรันเซอร์วิส</li>
<li><strong>status</strong> &#8211; ดูสถานะของเซอร์วิส</li>
<li><strong>restart</strong> &#8211; ปิด แล้ว เปิด เซอร์วิสใหม่ โดยส่วนใหญ่จะเป็นการเรียกคำสั่ง stop แล้ว start อีกครั้ง คำสั่งนี้ อาจมีผลกระทบ ทำให้ผู้ใช้งานเซอร์วิสนี้อยู่ ใช้งานไม่ได้ชั่วคราว</li>
<li><strong>reload</strong> &#8211; เริ่มรันเซอร์วิสใหม่ ด้วยการส่ง signal HUP ไปที่ตัวโปรแกรม นิยมใช้คำสั่งนี้ หลังจากแก้ไขคอนฟิกใหม่ เพราะจะกระทบกับผู้ใช้งานน้อยกว่าการใช้คำสั่ง restart มาก</li>
</ul>
<p>หากต้องการตรวจสอบว่าเซอร์วิสที่จะรันมีคำสั่ง (COMMAND) อะไรให้ใช้บ้าง ให้พิมพ์คำสั่ง service แล้วตามด้วยชื่อสคริปต์โดยไม่ต้องระบบคำสั่ง เช่น</p>
<pre>[root@cent6 ~]# <strong>service sshd</strong>
Usage: /etc/init.d/sshd {start|stop|restart|reload|force-reload|condrestart|try-restart|status}</pre>
<p>ผลลัพธ์ที่ได้จากการใช้คำสั่ง service ของแต่ละเซอร์วิส อาจไม่เหมือนกัน</p>
<p>ตัวอย่างการใช้คำสั่ง service ตรวจสอบสถานะเซอร์วิส sshd ผลลัพธ์ที่ได้มีสถานะการรัน พร้อมบอก PID ของ sshd</p>
<pre>[root@cent6 ~]# <strong>service sshd status</strong>
openssh-daemon (pid  1864) is running...

[root@cent6 ~]# <strong>ps -ef | grep 1864</strong>
root      1864     1  0 22:18 ?        00:00:00 /usr/sbin/sshd</pre>
<p>แต่ถ้าใช้คำสั่ง service ตรวจสอบสถานะของเซอร์วิส iptables จะแสดงกฎ (rule) ที่เปิดใช้อยู่</p>
<pre>[root@cent6 ~]# <strong>service iptables status</strong>
Table: filter
Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED
2    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0
3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0
4    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22
5    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    REJECT     all  --  0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination</pre>
<h4>ข้อมูลอ้างอิง</h4>
<ul>
<li>man service(8)</li>
<li><a title="View Details: การเปิดเซอร์วิสตอนบู๊ตเครื่องของ CentOS 6" href="http://spalinux.com/2012/04/start-service-when-boot-centos-6" rel="bookmark">การเปิดเซอร์วิสตอนบู๊ตเครื่องของ CentOS 6</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/04/how-to-start-stop-service-in-centos-6/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>การเรียกดูไฟล์ในแผ่นซีดีรอมหรือดีวีดีบนลีนุกซ์</title>
		<link>http://spalinux.com/2012/03/how-to-view-file-in-cdrom-or-dvd-on-linux</link>
		<comments>http://spalinux.com/2012/03/how-to-view-file-in-cdrom-or-dvd-on-linux#comments</comments>
		<pubDate>Sat, 31 Mar 2012 16:06:15 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Filesystem]]></category>
		<category><![CDATA[Hardware]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[cdrom]]></category>
		<category><![CDATA[dvd]]></category>
		<category><![CDATA[mount]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1943</guid>
		<description><![CDATA[บนลีนุกซ์เมื่อใส่แผ่นซีดีรอมหรือดีวีดีเข้าไปในไดร์ฟแล้ว หากต้องการเรียกดูไฟล์ในแผ่นต้องทำการ mount ตัวไดร์ฟ (/dev) กับไดเร็คทอรีหรือพาธ (path) บนลีนุกซ์ แล้วถึงจะดูไฟล์ภายใต้พาธนี้ได้ หมายเหตุ หากติดตั้งชุดโปรแกรม Desktop Environment เช่น GNOME ด้วย อาจมีโปรแกรมช่วย mount ตัวไดร์ฟโดยอัตโนมัติ (automount) คือเมื่อใส่แผ่นเราก็สามารถเรียกดูไฟล์ในแผ่นได้เลย ถ้าเป็นแบบนี้ก็ไม่จำเป็นต้องใช้คำสั่ง mount หากติดตั้งลีนุกซ์โดยใช้แผ่นแล้ว ส่วนใหญ่จะมีการสร้างลิ้งค์ไฟล์ (soft link) ไว้เป็นชื่อ /dev/cdrom หรือ /dev/dvd ตัวอย่างเช่นหากติดตั้ง CentOS 6.2 จะมี soft link ชี้ไปที่ /dev/sr0 [root@cent6 ~]# ls -l /dev/cdrom lrwxrwxrwx. 1 root root 3 Mar 31 13:45 /dev/cdrom -&#62; sr0 [...]]]></description>
			<content:encoded><![CDATA[<p>บนลีนุกซ์เมื่อใส่แผ่นซีดีรอมหรือดีวีดีเข้าไปในไดร์ฟแล้ว หากต้องการเรียกดูไฟล์ในแผ่นต้องทำการ mount ตัวไดร์ฟ (/dev) กับไดเร็คทอรีหรือพาธ (path) บนลีนุกซ์ แล้วถึงจะดูไฟล์ภายใต้พาธนี้ได้</p>
<p>หมายเหตุ หากติดตั้งชุดโปรแกรม Desktop Environment เช่น GNOME ด้วย อาจมีโปรแกรมช่วย mount ตัวไดร์ฟโดยอัตโนมัติ (automount) คือเมื่อใส่แผ่นเราก็สามารถเรียกดูไฟล์ในแผ่นได้เลย ถ้าเป็นแบบนี้ก็ไม่จำเป็นต้องใช้คำสั่ง mount</p>
<p><span id="more-1943"></span></p>
<p>หากติดตั้งลีนุกซ์โดยใช้แผ่นแล้ว ส่วนใหญ่จะมีการสร้างลิ้งค์ไฟล์ (soft link) ไว้เป็นชื่อ /dev/cdrom หรือ /dev/dvd</p>
<p>ตัวอย่างเช่นหากติดตั้ง CentOS 6.2 จะมี soft link ชี้ไปที่ /dev/sr0</p>
<pre>[root@cent6 ~]# <strong>ls -l /dev/cdrom</strong>
lrwxrwxrwx. 1 root root 3 Mar 31 13:45 /dev/cdrom -&gt; sr0</pre>
<pre>[root@cent6 ~]# <strong>ls -l /dev/dvd</strong>
lrwxrwxrwx. 1 root root 3 Mar 31 13:45 /dev/dvd -&gt; sr0</pre>
<pre>[root@cent6 ~]# <strong>ls -l /dev/sr0</strong>
brw-rw----. 1 root cdrom 11, 0 Mar 31 13:45 /dev/sr0</pre>
<p>เราสามารถใช้คำสั่ง mount ตามด้วยชื่อไดร์ฟ /dev/cdrom หรือ /dev/dvd หรือแม้แต่ /dev/sr0 ก็ได้</p>
<p>เวลา mount ไดร์ฟแบบใช้ชั่วคราวเช่น cdrom หรือ dvd นิยม mount กับพาธ /mnt</p>
<p>ตัวอย่างการ mount ไดร์ฟที่มีแผ่นติดตั้ง CentOS 6.2 แผ่นที่ 1 เข้ากับพาธ /mnt</p>
<pre>[root@cent6 ~]# <strong>mount /dev/dvd /mnt</strong>
mount: block device /dev/sr0 is write-protected, mounting read-only</pre>
<p>เมื่อ mount แล้ว จะไม่สามารถกดปุ่ม eject เพื่อเอาแผ่นออกได้</p>
<p>ตัวอย่างการใช้คำสั่ง ls เพื่อดูไฟล์ในแผ่น</p>
<pre>[root@cent6 ~]# <strong>cd /mnt/</strong>
[root@cent6 mnt]# <strong>ls -l</strong>
total 658
-rw-r--r--. 2 root root 14 Dec 16 09:39 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 Dec 11 06:38 EFI
-rw-r--r--. 2 root root 212 Dec 15 11:32 EULA
-rw-r--r--. 2 root root 18009 Dec 15 11:38 GPL
drwxr-xr-x. 3 root root 2048 Dec 11 06:38 images
drwxr-xr-x. 2 root root 2048 Dec 11 06:36 isolinux
drwxrwxr-x. 2 500 500 630784 Dec 16 09:43 Packages
-rw-r--r--. 2 root root 1354 Dec 9 19:58 RELEASE-NOTES-en-US.html
drwxr-xr-x. 2 root root 4096 Dec 16 09:46 repodata
-rw-r--r--. 2 root root 1706 Dec 9 19:57 RPM-GPG-KEY-CentOS-6
-rw-r--r--. 2 root root 1730 Dec 9 19:57 RPM-GPG-KEY-CentOS-Debug-6
-rw-r--r--. 2 root root 1730 Dec 9 19:57 RPM-GPG-KEY-CentOS-Security-6
-rw-r--r--. 2 root root 1734 Dec 9 19:57 RPM-GPG-KEY-CentOS-Testing-6
-r--r--r--. 1 root root 3380 Dec 16 09:46 TRANS.TBL</pre>
<p>เมื่อสิ้นสุดการใช้งาน ต้องการเอาแผ่นออกมาจากไดร์ฟ เราต้องออกจากพาธ /mnt ก่อน แล้วใช้คำสั่ง umount ตามด้วยพาธที่ mount ไว้</p>
<pre>[root@cent6 mnt]# <strong>cd ~</strong>
[root@cent6 ~]# <strong>umount /mnt</strong></pre>
<p>หรืออาจใช้คำสั่ง eject เพื่อ umount แล้วสั่งให้ไดร์ฟเอาแผ่นออกด้วย</p>
<pre>[root@cent6 ~]# eject</pre>
<h4>ปัญหาการ umount ไม่ได้</h4>
<p>หากพาธที่ mount แผ่นไว้ ถูกใช้งานอยู่ เช่นมี user เรียกดูไฟล์ภายใต้พาธนี้อยู่ จะไม่สามารถ umount ได้</p>
<pre>[root@cent6 ~]# <strong>mount /dev/dvd /mnt</strong>
mount: block device /dev/sr0 is write-protected, mounting read-only</pre>
<pre>[root@cent6 ~]# <strong>cd /mnt/</strong>
[root@cent6 mnt]#
[root@cent6 mnt]# <strong>umount /mnt</strong>
<span style="color: #ff0000;">umount: /mnt: device is busy.</span>
<span style="color: #ff0000;"> (In some cases useful info about processes that use</span>
<span style="color: #ff0000;"> the device is found by lsof(8) or fuser(1))</span></pre>
<p>หากเราทราบผู้ที่ใช้พาธนี้อยู่ ก็สามารถบอกให้ cd ออกจากพาธได้ แต่ถ้าไม่ทราบ หรือหาไม่เจอ ต้องใช้คำสั่ง fuser เพื่อหาโปรเซสที่เรียกใช้พาธนี้อยู่</p>
<p>ใช้คำสั่ง fuser ตามด้วยพาธที่ mount แผ่นไว้</p>
<pre>[root@cent6 ~]# <strong>fuser /mnt</strong>
/mnt: <span style="color: #0000ff;">1357</span>c</pre>
<p>ตัวเลข 1357 คือ PID ของโปรเซสที่เรียกใช้พาธนี้อยู่ ใช้คำสั่ง ps เพื่อดูว่าโปรเซสนี้คืออะไร</p>
<pre>[root@cent6 ~]# <strong>ps -ef | grep <span style="color: #0000ff;">1357</span></strong>
root <span style="color: #0000ff;">1357</span> 1353 0 13:49 pts/0 00:00:00 -<span style="color: #0000ff;">bash</span></pre>
<p>ในที่นี้ 1357 คือโปรเซส bash มีคนล็อกอินอยู่ที่หน้าจอ TTY pts/0 เราสามารถใช้คำสั่ง w เพื่อดูว่า pts/0 ล็อกอินมาจากที่ไหนได้</p>
<pre>[root@cent6 ~]# w
 15:34:22 up 1:48, 2 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
<span style="color: #0000ff;">root</span> <span style="color: #0000ff;">pts/0 192.168.5.1</span> 13:49 4:42 0.07s 0.07s <span style="color: #0000ff;">-bash</span>
root pts/1 192.168.5.2 15:29 0.00s 0.02s 0.00s w</pre>
<p>จากผลลัพธ์คำสั่ง w จะเป็นว่า pts/0 เป็นการล็อกอินด้วย root จาก 192.168.5.1 เราก็สามารถไปแจ้งเตือนเพื่อให้ออกจากพาธได้</p>
<p>แต่ถ้าลองใช้คำสั่ง ps แล้ว ไม่สามารถหาเจอได้ว่าใครกำลังใช้อยู่ อาจต้อง kill โปรเซสนั้นไป หรือใช้คำสั่ง fuser ตามด้วยออปชั่น &#8216;-k&#8217; เพื่อ kill โปรเซสทั้งหมดที่เรียกพาธอยู่</p>
<pre>[root@cent6 ~]# <strong>fuser /mnt</strong>
/mnt: 1357c</pre>
<pre>[root@cent6 ~]# <strong>fuser -k /mnt</strong>
/mnt: 1357c</pre>
<pre>[root@cent6 ~]# <strong>fuser /mnt</strong></pre>
<pre>[root@cent6 ~]# <strong>umount /mnt</strong></pre>
<p>ก็จะสามารถ umount พาธ แล้วเอาแผ่นออกจากไดร์ฟได้</p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/03/how-to-view-file-in-cdrom-or-dvd-on-linux/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>เริ่มใช้ CentOS 6.2 : บู๊ต ล็อกอิน และ ปิดเครื่อง</title>
		<link>http://spalinux.com/2012/03/using-centos-6-2-boot-login-shutdown</link>
		<comments>http://spalinux.com/2012/03/using-centos-6-2-boot-login-shutdown#comments</comments>
		<pubDate>Sat, 31 Mar 2012 07:41:21 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Authentication]]></category>
		<category><![CDATA[CentOS 6]]></category>
		<category><![CDATA[Linux Installation]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[CentOS]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[shutdown]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1894</guid>
		<description><![CDATA[หน้าจอบู๊ตของ CentOS 6.2 หากไม่ต้องการแก้ไขค่าคอนฟิกของการบู๊ต ก็ปล่อยผ่านไป ประมาณ 5 วินาที เครื่องก็จะบู๊ตเพื่อรันเซอร์วิสต่างๆ โดยอัตโนมัติ &#160; แต่ถ้าหากต้องการเข้าหน้าเมนูบู๊ต เพื่อแก้ไขค่าคอนฟิกหรือแก้ไขปัญหาการบู๊ต ให้กดปุ่มอะไรก็ได้ จะเข้าสู่ หน้าจอเมนูบู๊ต ในหน้าจอเมนูบู๊ต หากต้องการเริ่มบู๊ตเครื่องให้กดปุ่ม [Enter] &#160; หน้าจอขึ้นแถบสี แสดงว่ากำลังรันโปรเซสหรือเซอร์วิสต่างๆ อยู่ รอจนกว่าแถบสีขาวจะเต็ม ถึงจะบู๊ตเสร็จเรียบร้อย &#160; &#160; โดยปกติการบู๊ตของ CentOS ไม่น่าจะเกิน 10 นาที (ไม่รวมการ warm-up เครื่อง) หากหน้าจอแสดงแถบสีค้าง นานเกินไป สามารถกดปุ่ม [Esc] เพื่อดูรายละเอียดการบู๊ตว่า ค้างอยู่ขั้นตอนไหน เพื่อตรวจสอบปัญหาได้ ตัวอย่างหน้าจอแสดงรายละเอียดการบู๊ต เมื่อกดปุ่ม [Esc] &#160; เมื่อบู๊ตเสร็จเรียบร้อย หน้าจอจะขึ้นตัวหนังสือแสดงเวอร์ชั่นของ CentOS และ Linux Kernel พร้อมให้ login &#160; &#160; เริ่มต้น [...]]]></description>
			<content:encoded><![CDATA[<p>หน้าจอบู๊ตของ CentOS 6.2</p>
<p>หากไม่ต้องการแก้ไขค่าคอนฟิกของการบู๊ต ก็ปล่อยผ่านไป ประมาณ 5 วินาที เครื่องก็จะบู๊ตเพื่อรันเซอร์วิสต่างๆ โดยอัตโนมัติ</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/01-Booting-CentOS.png"><span id="more-1894"></span><br />
<img class="alignnone size-full wp-image-1895" title="01-Booting-CentOS" src="http://spalinux.com/wp-content/uploads/2012/03/01-Booting-CentOS.png" alt="" width="459" height="79" /></a></p>
<p>&nbsp;</p>
<p>แต่ถ้าหากต้องการเข้าหน้าเมนูบู๊ต เพื่อแก้ไขค่าคอนฟิกหรือแก้ไขปัญหาการบู๊ต ให้กดปุ่มอะไรก็ได้ จะเข้าสู่ หน้าจอเมนูบู๊ต</p>
<p>ในหน้าจอเมนูบู๊ต หากต้องการเริ่มบู๊ตเครื่องให้กดปุ่ม [Enter]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/02-GRUB-menu.png"><img class="alignnone size-full wp-image-1896" title="02-GRUB-menu" src="http://spalinux.com/wp-content/uploads/2012/03/02-GRUB-menu.png" alt="" width="616" height="348" /></a></p>
<p>&nbsp;</p>
<p>หน้าจอขึ้นแถบสี แสดงว่ากำลังรันโปรเซสหรือเซอร์วิสต่างๆ อยู่ รอจนกว่าแถบสีขาวจะเต็ม ถึงจะบู๊ตเสร็จเรียบร้อย</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/03-booting-slide.png"><img class="alignnone size-full wp-image-1897" title="03-booting-slide" src="http://spalinux.com/wp-content/uploads/2012/03/03-booting-slide.png" alt="" width="720" height="70" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>โดยปกติการบู๊ตของ CentOS ไม่น่าจะเกิน 10 นาที (ไม่รวมการ warm-up เครื่อง) หากหน้าจอแสดงแถบสีค้าง นานเกินไป สามารถกดปุ่ม [Esc] เพื่อดูรายละเอียดการบู๊ตว่า ค้างอยู่ขั้นตอนไหน เพื่อตรวจสอบปัญหาได้</p>
<p>ตัวอย่างหน้าจอแสดงรายละเอียดการบู๊ต เมื่อกดปุ่ม [Esc]</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/04-booting-messages.png"><img class="alignnone size-full wp-image-1898" title="04-booting-messages" src="http://spalinux.com/wp-content/uploads/2012/03/04-booting-messages.png" alt="" width="606" height="215" /></a></p>
<p>&nbsp;</p>
<p>เมื่อบู๊ตเสร็จเรียบร้อย หน้าจอจะขึ้นตัวหนังสือแสดงเวอร์ชั่นของ CentOS และ Linux Kernel พร้อมให้ login</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/05-login.png"><img class="alignnone size-full wp-image-1899" title="05-login" src="http://spalinux.com/wp-content/uploads/2012/03/05-login.png" alt="" width="387" height="99" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>เริ่มต้น login ด้วย root และใส่ password ที่ได้ระบุไว้ตอนติดตั้ง</p>
<p>หากใส่ login, password ถูกต้อง หน้าจอจะขึ้นคล้ายตัวอย่าง [root@cent6 ~]# หรือเรียกกว่า prompt ของ root</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/06-login-root.png"><img class="alignnone size-full wp-image-1900" title="06-login-root" src="http://spalinux.com/wp-content/uploads/2012/03/06-login-root.png" alt="" width="383" height="141" /></a></p>
<p>&nbsp;</p>
<p>แต่ถ้าใส่ login, password ไม่ถูกต้อง จะขึ้น Login incorrect ต้องใส่ login, password อีกครั้ง</p>
<p>หมายเหตุ สำหรับ Linux/UNIX ตัวอักษรใหญ่ เล็ก จะมีผลทั้ง login, password เช่น root ต้องพิมพ์เป็นตัวอักษรตัวเล็กทั้งหมด</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/login-incorrect.png"><img title="login-incorrect" src="http://spalinux.com/wp-content/uploads/2012/03/login-incorrect.png" alt="" width="377" height="165" /></a></p>
<p>&nbsp;</p>
<p>คำสั่งแรกที่อยากแนะนำให้รู้จักหลังจากเปิดเครื่อง บู๊ตเครื่อง ล็อกอินด้วย root ได้สำเร็จแล้ว คือคำสั่งปิดเครื่อง</p>
<p>พิมพ์คำสั่ง shutdown –h now เพื่อปิดเครื่อง</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/07-shutdown.png"><img class="alignnone size-full wp-image-1901" title="07-shutdown" src="http://spalinux.com/wp-content/uploads/2012/03/07-shutdown.png" alt="" width="382" height="159" /></a></p>
<p>&nbsp;</p>
<p>แนะนำให้ใช้คำสั่ง shutdown ทุกครั้งสำหรับการปิดเครื่อง เพื่อการปิดโปรแกรม ปิดโปรเซส ปิดเซอร์วิส อย่างถูกต้อง</p>
<p>หน้าจอแสดงรายละเอียดการปิดเซอร์วิสต่างๆ ก่อนการปิดเครื่อง</p>
<p><a href="http://spalinux.com/wp-content/uploads/2012/03/08-shutdown-messages.png"><img class="alignnone size-full wp-image-1902" title="08-shutdown-messages" src="http://spalinux.com/wp-content/uploads/2012/03/08-shutdown-messages.png" alt="" width="607" height="174" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2012/03/using-centos-6-2-boot-login-shutdown/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>จำกัดจำนวน login พร้อมกันของผู้ใช้เดียวกัน</title>
		<link>http://spalinux.com/2011/05/limit_maximum_number_of_logins_for_user</link>
		<comments>http://spalinux.com/2011/05/limit_maximum_number_of_logins_for_user#comments</comments>
		<pubDate>Sun, 08 May 2011 07:13:52 +0000</pubDate>
		<dc:creator>editor</dc:creator>
				<category><![CDATA[Authentication]]></category>
		<category><![CDATA[Linux Shell]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[limit]]></category>
		<category><![CDATA[login]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://spalinux.com/?p=1325</guid>
		<description><![CDATA[การจำกัด (limit) จำนวนการ login พร้อมกันโดยใช้ชื่อผู้ใช้เดียวกัน สามารถคอนฟิกด้วยออปชั่น &#8220;maxlogins&#8221; ในไฟล์ /etc/security/limits.conf คำอธิบายออปชั่น &#8220;maxlogins&#8221; คือ max number of logins for this user คอนฟิกได้สองแบบคือ จำกัดเป็นรายคน เช่น ชื่อผู้ใช้ user1 สามารถ login ได้สูงสุดพร้อมกันได้แค่ 2 sessions แต่ถ้าต้องการจำกัดผู้ใช้ที่อยู่ในกลุ่ม (group) ให้เติมเครื่องหมาย @ ข้างหน้าชื่อกลุ่ม ตัวอย่างคอนฟิก จำกัดผู้ใช้ user1 ให้ login พร้อมกันได้แค่ 2 sessions เท่านั้น [root@server ~]# cat /etc/security/limits.conf user1           -       maxlogins       2 หลังแก้ไขไฟล์แล้ว คอนฟิกใหม่มีผลต่อการ login ครั้งต่อไปเลย [...]]]></description>
			<content:encoded><![CDATA[<p>การจำกัด (limit) จำนวนการ login พร้อมกันโดยใช้ชื่อผู้ใช้เดียวกัน สามารถคอนฟิกด้วยออปชั่น &#8220;maxlogins&#8221; ในไฟล์ /etc/security/limits.conf</p>
<p>คำอธิบายออปชั่น &#8220;maxlogins&#8221; คือ max number of logins for this user</p>
<p><span id="more-1325"></span></p>
<p>คอนฟิกได้สองแบบคือ จำกัดเป็นรายคน เช่น ชื่อผู้ใช้ user1 สามารถ login ได้สูงสุดพร้อมกันได้แค่ 2 sessions แต่ถ้าต้องการจำกัดผู้ใช้ที่อยู่ในกลุ่ม (group) ให้เติมเครื่องหมาย @ ข้างหน้าชื่อกลุ่ม</p>
<p>ตัวอย่างคอนฟิก จำกัดผู้ใช้ user1 ให้ login พร้อมกันได้แค่ 2 sessions เท่านั้น</p>
<pre>[root@server ~]# <strong>cat /etc/security/limits.conf
</strong>user1           -       maxlogins       2</pre>
<p>หลังแก้ไขไฟล์แล้ว คอนฟิกใหม่มีผลต่อการ login ครั้งต่อไปเลย ไม่จำเป็นต้องรีสตาร์ตโปรแกรม หรือเซอร์วิสใด</p>
<p>ตัวอย่างข้อความในไฟล์ /var/log/secure ที่เกิดขึ้น ระหว่างการทดสอบ login</p>
<p>login ด้วย user1 ครั้งแรก ได้</p>
<pre>Jul  8 13:21:19 server sshd[2375]: Accepted password for user1 from 192.168.1.12 port 4310 ssh2
Jul  8 13:21:19 server sshd[2375]: pam_unix(sshd:session): session opened for user user1 by (uid=0)</pre>
<p>login ด้วย user1 ครั้งที่ 2 ก็ได้</p>
<pre>Jul  8 13:21:39 server sshd[2400]: Accepted password for user1 from 192.168.1.12 port 4311 ssh2
Jul  8 13:21:39 server sshd[2400]: pam_unix(sshd:session): session opened for user user1 by (uid=0)</pre>
<p>ใช้คำสั่ง w เพื่อดูผู้ใช้ที่ login อยู่</p>
<pre>[user1@server ~]$ <strong>w</strong>
 13:21:49 up 14 min,  3 users,  load average: 0.07, 0.19, 0.25
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
admin    pts/0    192.168.1.12         13:19   35.00s  0.72s  0.18s sshd: admin [priv]
user1    pts/1    192.168.1.12         13:21   30.00s  0.20s  0.20s -bash
user1    pts/2    192.168.1.12         13:21    0.00s  0.25s  0.04s w</pre>
<p>login ด้วย user1 ครั้งที่ 3 จะไม่ได้แล้ว</p>
<pre>Jul  8 13:22:00 server sshd[2426]: Accepted password for user1 from 192.168.1.12 port 4312 ssh2
Jul  8 13:22:00 server sshd[2426]: <span style="color: #ff0000;"><strong>pam_limits(sshd:session): Too many logins (max 2) for user1
</strong></span>Jul  8 13:22:00 server sshd[2426]: pam_unix(sshd:session): session opened for user user1 by (uid=0)
Jul  8 13:22:00 server sshd[2426]: error: PAM: pam_open_session(): Permission denied</pre>
]]></content:encoded>
			<wfw:commentRss>http://spalinux.com/2011/05/limit_maximum_number_of_logins_for_user/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

