How to reset root password CentOS 7.1

เข้า Single user mode โดย reboot แล้วเมื่อได้เมนูของ Grub ให้เลื่อนแถบสีไปยัง Kernel ที่ต้องการบูต (โดยปกติจะถูกเลือกไว้อยู่แล้ว) ให้กด e จะได้หน้าจอดังนี้ สิ่งที่เราสนใจคือบรรทัดที่ขึ้นต้นว่า linux ซึ่งในบทความนี้คือ linux16 สำหรับ CentOS 7/7.1 x86_64 บนเมนบอร์ดที่ใช้ระบบ BIOS (อาจจะพบกับ linuxefi สำหรับเมนบอร์ดที่ใช้ระบบ UEFI) เมื่อหาเจอแล้วเลื่อน cursor ไปที่ ข้อความ ro เปลี่ยน ro เป็น rw init=/sysroot/bin/sh กดปุ่ม ctrl และปุ่ม x พร้อมกันเพื่อบูตระบบจะได้ดังภาพ พิมพ์คำสั่ง chroot  /sysroot พิมพ์ passwd เพื่อเปลี่ยนรหัสผ่านสำหรับ root สร้างแฟ้ม autorelabel เพื่อปรับปรุงกฏของ selinux (ถึงแม้จะไม่ได้ใช้งาน selinux ก็ตาม เพื่อความไม่ประมาท) โดยคำสั่ง touch /.autorelabel พิมพ์ exit เพื่อยกเลิก chroot พิมพ์ reboot ระบบจะรีบูตสองรอบ อัตโนมัติเพื่อปรับปรุง selinux และไฟล์ autorelabel จะถูกลบอัตโนมัติ ล็อคอินเข้าระบบด้วยผู้ใช้ root และ password ที่เปลี่ยนไป ลบแฟ้ม /.bash_history ทิ้งด้วยคำสั่ง rm /.bash_history (ถูกสร้างตอนออกจากระบบ chroot) จบขอให้สนุกครับ อ้างอิงเพิ่มเติม https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sec-Terminal_Menu_Editing_During_Boot.html#sec-Recovering_Root_Password

Read More »

วิดีโอแนะนำการติดตั้ง PSU12-Sritrang Server โปรแกรมสำหรับการจัดการห้องบริการคอมพิวเตอร์ (cloning & control PC)

วิดีโอแนะนำการติดตั้ง PSU12-Sritrang Server โปรแกรมสำหรับการจัดการห้องบริการคอมพิวเตอร์ (cloning & control PC) โดย  Wiboon Warasittichai on youtube 01 PSU12-sritrang install (ตอนที่ 1 วิธีติดตั้ง) https://youtu.be/GAhZhGCciY0 02 PSU12-sritrang cloning (ตอนที่ 2 วิธีโคลนนิ่งฮาร์ดดิสก์) https://youtu.be/CegdT_LtE4k 03 PSU12-sritrang features (ตอนที่ 3 คุณสมบัติของแต่ละเมนู) https://youtu.be/Dw_wAyMa3vA 04 PSU12-sritrang control (ตอนที่ 4 การควบคุมเครื่องวินโดวส์ send, restart, shutdown, wakeonlan) https://youtu.be/o801BZ9ye0Y 05 PSU12-sritrang prnews (ตอนที่ 5 ประชาสัมพันธ์ข่าวด้วยภาพ เมื่อ boot from network) https://youtu.be/FA2X182oKXo 06 PSU12-sritrang windows master (ตอนที่ 6 เตรียมวินโดวส์ต้นฉบับที่ติดตั้ง cygwin) https://youtu.be/9XkLQQ-niz4 07 PSU12-sritrang windows computer name (ตอนที่ 7 เปลี่ยนชื่อเครื่อง) https://youtu.be/TuW8_Z2U7V4 08 PSU12-sritrang windows pgina freeradius (ตอนที่ 8 ตั้ง login ใช้ RADIUS server) https://youtu.be/58Pw-dbxljw 09 PSU12-sritrang windows partitions (ตอนที่ 9 เตรียมฮาร์ดดิสก์ของวินโดวส์ต้นฉบับ) https://youtu.be/jP4oSqRNvCo 10 PSU12-sritrang linuxmint master (ตอนที่ 10 เตรียมลินุกซ์มินท์ต้นฉบับ) https://youtu.be/zpR0UQbTy_U 11 PSU12-sritrang control linuxmint (ตอนที่ 11 การควบคุมเครื่องลินุกซ์มินท์) https://youtu.be/bVtfc4x-kKU 12 PSU12-sritrang server backup (ตอนที่ 12 สำเนาไฟล์เก็บไว้) https://youtu.be/dA7-pWjy35I และมีเอกสารแนะนำอยู่ที่ http://opensource.psu.ac.th/PSU-Open-server

Read More »

How to restore a system after accidentally removing all kernels?

เหตุการณ์สมมติ… ทำไงดี??? เผลอรันคำสั่ง sudo apt-get remove –purge linux-image-3.19.0-* ได้ผลดังรูป (ดันกด y แล้ว enter อีกนะ) งานงอก …ลอง ls /boot เผื่อว่ายังมี Kernel เหลืออยู่บ้าง คุณพระ ไปหมดแล้ว… ตกใจ!!! reboot สิ… (กรั่ก ๆ) (หากไม่ตกใจจน reboot ไปซะก่อนสามารถพิมพ์คำสั่ง sudo apt-get install linux-image-generic ได้เลย) เงิบ!!! เหลือแต่ Memory Test…. แก้ไขโดยหาแผ่น Ubuntu Desktop ควรเป็นรุ่นเดียวกับรุ่นที่ติดตั้ง 12.04, 14.04 เป็นต้น (แต่แนะนำ 14.04 ถึงแม้จะกู้เครื่องที่เป็น 12.04) เมื่อบูตให้เลือก Try Ubuntu รอจน Desktop ขึ้นมาเรียบร้อย เปิด Terminal ขึ้นมา (กด ctrl+alt+t) พิมพ์คำสั่ง sudo fdisk /dev/sda -l (กรณีนี้รู้แน่ๆ ว่าติดตั้งบน /dev/sda) จากรูปมีสอง patition ที่น่าจะติดตั้ง Ubuntu เอาไว้ คือ /dev/sda1 และ /dev/sda5 ถ้าใช้แผ่น 12.04 จะไม่สามารถ mount ส่วนของ /dev/sda5 ได้เพราะมองไม่เห็น patition ที่เป็น LVM ตั้งแต่แรก แต่แผ่น 14.04 มองเห็น เมื่อคลิกที่ 103 GB Volume สามารถมองเห็นไฟล์ทั้งหมด ลองเปิดไฟล์ใน etc/fstab ดูไฟล์ข้างในว่า partition อยู่อย่างไร พบว่า /dev/sda1 เป็น boot และ /dev/mapper/ubuntu–vg-root เป็น / และ /dev/mapper/ubuntu–vg-swap_1 เป็น swap เราสนใจแค่ boot และ / สั่ง mount patition ตามลำดับต่อไปนี้ sudo mount /dev/mapper/ubuntu–vg-root /mnt sudo mount /dev/sda1 /mnt/boot sudo mount –bind /dev /mnt/dev sudo mount –bind /sys /mnt/sys sudo mount –bind /proc /mnt/proc สั่งคำ chroot ไปยัง /mnt สังเกตว่าหลังจากสั่งคำสั่ง chroot แล้ว prompt จะเปลี่ยนเป็น root@ubuntu:/# sudo chroot /mnt ให้ตรวจสอบแฟ้ม /etc/apt/sources.list ว่าใช้ repository ไหนด้วย หากไม่ได้ใช้ th.archive.ubuntu.com หรือ mirror.psu.ac.th หรือ mirrors.psu.ac.th หรือ mirror1.ku.ac.th ให้เปลี่ยนเป็น th.archive.ubuntu.com จากนั้นทดสอบ nslookup th.archive.ubuntu.com สำหรับคนที่ resolve ได้ (เรายินดีด้วย) ข้ามข้อ ๑๐ ไปได้เลย แก้ไขแฟ้ม /etc/hosts สำหรับเครื่องที่อยู่นอกมหาวิทยาลัยเพิ่มข้อความว่า 192.100.77.186 th.archive.ubuntu.com สำหรับเครื่องที่อยู่ภายในมหาวิทยาลัยเพิ่มข้อความว่า 192.168.101.34 th.archive.ubuntu.com  สั่ง apt  install linux-image-generic รอจนเสร็จได้ข้อความสุดท้ายประมาณว่า  Setting up linux-image-generic

Read More »

Dialog cannot open tty-output

dialog บน Oracle Enterprise Linux และ Ubuntu ไม่เหมือนกัน (ทำไมล่ะ…ไม่ทราบครับ) สร้างสคริปต์ชื่อ file.sh มีข้อความว่า #!/bin/bash FILE=$(dialog –ascii-lines –title “Delete a file” –stdout \ –title “Please choose a file to delete” –fselect /tmp/ 14 48) echo $FILE บน Ubuntu รันได้ผลลัพธ์ แต่บน Oracle Enterprise Linux ต้องเปลี่ยนสคริปต์มีสองแบบ แบบแรก #!/bin/sh dialog –ascii-lines –title “Delete a file” –stdout \ –title “Please choose a file to delete” –fselect /tmp/ 14 48 2>/tmp/file.tmp echo $(cat /tmp/file.tmp) แบบที่สอง #!/bin/bash FILE=$(dialog –ascii-lines –title “Delete a file” –stdout \ –title “Please choose a file to delete” –fselect /tmp/ 14 48 2>&1>/dev/tty) echo $FILE ผลลัพธ์ของทั้งสองแบบให้ผลเหมือนกันคือ จบ..วันนี้ห้วนไปหน่อย ขอให้สนุกครับ

Read More »

Shell Script : Grouping and Summation

มี Log ขนาดใหญ่ แล้ว ต้องการจะวิเคราะห์ข้อมูลของนาทีที่ผ่านมา เลือกเฉพาะรูปแบบที่ต้องการด้วยคำสั่ง grep ‘Apr 28 10:59’ /var/log/mail.log | grep ‘postfix/qmgr’ |grep ‘nrcpt=’ |grep -v ‘from=<>’ ได้ผลมาประมาณนี้ ต้องการเอาข้อมูล X และ Y จากรูปแบบนี้ from=<X> และ nrcpt=Y ใช้ความรู้จาก Shell Script: Extract exact pattern from string ใช้คำสั่งต่อไปนี้ grep ‘Apr 28 10:59’ /var/log/mail.log | grep ‘postfix/qmgr’ |grep ‘nrcpt=’ |grep -v ‘from=<>’|sed -n ‘s/.*\sfrom=<\(.*\)>.*\snrcpt=\(.*\)\s(.*/\1:\2/p’ ได้ผลมาประมาณนี้ ต้องการจับกลุ่มตาม คอลัมน์ที่ 1 แล้วหาผลรวมของคอลัมน์ที่ 2 ในแต่ละกลุ่ม ใช้คำสั่ง grep ‘Apr 28 10:59’ /var/log/mail.log | grep ‘postfix/qmgr’ |grep ‘nrcpt=’ |grep -v ‘from=<>’|sed -n ‘s/.*\sfrom=<\(.*\)>.*\snrcpt=\(.*\)\s(.*/\1:\2/p’ | awk ‘BEGIN{FS=OFS=”:”}{a[$1]+=$2}END{ for (i in a) print i,a[i]}’ ได้ผลดังนี้ Reference: http://unix.stackexchange.com/questions/169215/group-by-and-sum-in-shell-script-without-awk

Read More »