หน้าเว็บ

วันอาทิตย์ที่ 27 กันยายน พ.ศ. 2552

Run Command as Other User

วิธีการที่จะสั่ง run คำสั่งใดๆ แต่ให้เสมือนว่าเป็น user คนอื่นเป็นคนสั่งทำได้โดยใช้คำสั่งดังนี้
su - username -c "commandname"
โดยหลังเครื่องหมาย "-" ตัวแรก ให้ตามด้วยเว้นวรรค ก่อนแล้วค่อยเป็น username แต่ตรง "-c" พิมพ์ติดกัน
หรือใช้คำสั่ง
sudo -u username commandname
ก็ได้เช่นเดียวกัน
สามารถทดสอบโดยเห็นผลชัดๆก็คือคำสั่ง id ซึ่งจะแสดงค่าข้อมูลของ user ที่สั่งคำสั่งขึ้นมา ดังนี้

ถ้าเป็นผู้ใช้ที่เป็น admin สั่งคำสั่ง id จะได้ผลลัพธ์
uid=1000(supasate) gid=1000(supasate) groups=4(adm),..........
เป็นต้น

แต่ถ้าต้องการให้สั่งคำสั่งในฐานะ user ธรรมดาที่ชื่อ ping
su - ping -c "id"
หรือ
sudo -u ping id
จะได้ผลลัพทธ์
uid=1001(ping) gid=1001(ping) groups=1001(ping)
เป็นต้น

ระบบที่ทดสอบ
OS:
Ubuntu 9.04 Server

ที่มา
http://ubuntuforums.org/showthread.php?t=879283

สร้าง password ป้องกัน grub

ถ้าเกิดไม่ต้องการให้ใครมา boot เครื่องเรา (ป้องกันการ boot ไม่ใช่ป้องกันการ login) สามารถป้องกันได้โดยใส่ password ไว้ที่ grub เลย ซึ่งประโยชน์หลักๆก็มีด้วย 3 ประการ
1. ป้องกันการเข้าถึง Single-user mode เช่น การเข้า recovery console ซึ่งถ้าเข้ามาในโหมดนี้จะทำการ log in เป็น root ทันทีโดยไม่ต้องใส่ password root
2. ป้องกันการเข้าถึง grub console เพราะถ้าเครื่อง boot ด้วย grub แล้ว ผู้ไม่หวังดีสามารถดึงข้อมูลการตั้งค่าของ grub หรือทำการแก้ไขค่าด้วย grub editor interface ได้
3. ป้องกันการเข้าถึง OS ที่ไม่มีที่การป้องกันไม่ค่อยดี เช่น เข้าได้โดยไม่ต้องใส่ password (เช่น DOS) ในกรณีที่เครื่องเราทำ dual-boot หรือลงหลายๆ OS ไว้ในเครื่องเดียว

วิธีการทำ
มีดังนี้
1. ใช้คำสั่ง grub-md5-crypt เพื่อ generate ค่า hash ของ password ออกมา
2. แก้ไขไฟล์ /boot/grup/menu.lst โดยให้เติมค่า password --md5 ค่าแฮช ไว้ที่บรรทัดสุดท้ายของแต่ละ OS ที่ต้องการจะป้องกัน เช่น

title Ubuntu, kernel 2.6.8.1-2-386 (recovery mode)
root (hd1,2)
kernel /boot/vmlinuz-2.6.8.1-2-386 root=/dev/hdb3 ro single
initrd /boot/initrd.img-2.6.8.1-2-386
password --md5 $1$w7Epf0$vX6rxpozznLAVxZGkcFcs

แล้วลองทดสอบโดยการ reboot เข้า grub เป็นอันเสร็จ

ข้อควรระวัง อย่าใส่ค่า hash value ผิด

ระบบที่ทดสอบ
OS: Ubuntu 9.04 Server

ที่มา
http://ubuntuforums.org/showthread.php?t=7353
http://www.redhat.com/docs/manuals/enterprise/RHEL-4-Manual/en-US/Security_Guide/s2-wstation-bootloader.html

วิธีแก้ชื่อ Network Interface บน Ubuntu

ปกติชื่อ Network Interface ก็อาจจะเป็น eth0 eth1 wlan0 อะไรแบบนี้ แต่ถ้าวันดีคืนดีเราอยากเปลี่ยนชื่อให้เข้าใจง่ายขึ้น หรือบางครั้งพบปัญหาว่า ชื่อมันเปลี่ยนเอง เช่น จาก eth0 กลายเป็น eth1 แต่เราต้องการให้มันกลับมาเป็น eth0 ก็สามารถทำได้ดังต่อไปนี้
sudo vi /etc/udev/rules.d/70-persistent-net.rules
เมื่อเข้ามาในนี้จะพบบรรทัดที่มีคำว่า SUBSYSTEM=".......... โดยจะมีคำว่า NAME="eth0" อะไรแบบนี้อยู่ ก็ให้ทำการแก้คำว่า NAME="eth0" ไปเป็นชื่อที่เราต้องการ เช่น NAME="leftportlan" เป็นต้น

หลังจากทำการแก้ไฟล์นี้แล้วให้ไปทำการแก้ชื่อใน /etc/network/interfaces ด้วย โดยให้เปลี่ยนคำว่า eth0 ไปเป็น leftportlan ให้หมด

หลังจากนั้น reboot เครื่อง แล้วลอง ifconfig ดู จะพบว่าชื่อเปลี่ยนไปตามที่ต้องการแล้ว (จริงๆไม่ต้อง reboot แต่แค่ sudo /etc/init.d/network restart ก้ได้ แต่อาจจะไม่สำเร็จเพราะมี dhcpclient ทำงานอยู่ ต้องปิดก่อน แล้วค่อย restart ใหม่)

หมายเหตุ ถ้าอยากรู้ว่ารายละเอียดของไฟล์แรกที่ทำแก้ไขคืออะไร ให้ศึกษาเรื่อง udev ครับ

ระบบที่ทดสอบ
OS: Ubuntu 9.04 Server

ที่มา
http://linux-hacks.blogspot.com/2009/04/changeresassign-interface-name-in-linux.html

วันศุกร์ที่ 25 กันยายน พ.ศ. 2552

ดู version Fedora

ไฟล์เวอร์ชันของ Fedora เก็บไว้ที่ /etc/redhat-release
ดังนั้นสามารถดูได้โดยสั่ง
cat /etc/redhat-release

ระบบที่ทดสอบ
OS: Fedora 9

ดู version ubuntu

เวอร์ชันของ ubuntu นั้นจะเก็บไว้ในไฟล์ /etc/lsb-release หรือ /etc/issue
ดังนั้นดูได้โดยการสั่ง
cat /etc/lsb-release
หรือ
cat /etc/issue

*เพิ่มเติม จริงๆแล้วมีคำสั่ง lsb_release -a เพื่อแสดงข้อมูลทั้งหมดจากไฟล์ /etc/lsb-relase หรือจะดูแค่ว่าส่วนด้ว -i -r -c -d ก็ได้ (id, release, codename, description ตามลำดับ)

ระบบที่ทดสอบ
OS: Ubuntu 9.04

ที่มา
http://ubuntu-tutorials.com/2007/01/27/how-to-find-your-ubuntu-or-kernel-version/

ftp multiple files with no prompt

เวลาส่งไฟล์ด้วย ftp บน command line หรือบนเครื่อง server นั้นถ้าต้องการส่งพร้อมกันทีละหลายๆไฟล์ เครื่องจะถามเพื่อยืนยันให้ตอบ yes หรือ no ในทุกๆไฟล์ ทำให้เสียเวลาเป็นอย่างมาก ดังนั้นถ้าไม่ต้องการให้มีการถามให้ใช้คำสั่ง prompt ดังนี้

ftp> prompt

Interactive mode off


คราวนี้ก็ให้ใช้คำสั่ง mput เพื่อส่งไฟล์หลายๆไฟล์ได้

ftp> mput *.* (หรือแล้วแต่ที่เราต้องการจะส่ง)

ระบบที่ทดสอบ
OS: Fedora 9

วันพุธที่ 23 กันยายน พ.ศ. 2552

ปัญหา Firefox is already running, but not responding

ปัญหา Firefox is already running, but not reponding นั้นเจออยู่บ่อยๆ บางครั้งก็แก้ได้ง่ายโดยการปิด process firefox.exe ที่ Task Manager

แต่ว่ามีบางกรณีที่ใน Task Manager ก็ไม่มี firefox.exe อยู่แล้วแต่ก็ยังฟ้องแบบนี้อยู่ มันเกิดอะไรขึ้น??

บางครั้งถึงแม้ตัว Firefox เองนั้นจะปิดไปแล้วก็ตาม แต่ว่าบางครั้งจะมี child process ที่ยังค้างอยู่ ซึ่งอาจเกิดจาก add-on บางตัวที่ไม่ยอมปิดตัวลงไปตาม

ในกรณีนี้ก็แก้ง่ายๆ 2 วิธีด้วยกัน
1. Restart เครื่อง ง่ายมั้ยครับ :P
2. ถ้าในกรณีที่ไม่สามารถ restart เครื่องได้ เช่น เป็นเครื่อง server หรือ run service ที่ต้อง always on เอาไว้ ให้ใช้วิธีการดังนี้

- เข้า cmd (Start->Run พิมพ์ cmd)

- สั่ง taskkill /F /IM firefox.exe /T

เป็นอันเรียบร้อย
โดย taskkill ใช้ในการ kill process
/F คือ force บังคับปิด process
/IM ระบุ image name ในที่นี้คือ firefox.exe
/T ปิด child process ซึ่งเกิดจาก image name นั้นๆด้วย

ระบบที่ทดสอบ
OS: Windows Server 2003
Firefox: 3.5.3