Category: Linux (OS, shell script, etc)

  • How to list linux file permissions in Octal Notation

    วันนี้เนื่องจากทีมผู้ดูแล  Web Hosting ต้องการดูว่ามีไฟล์ไหนบ้างที่มี permission เป็น 777 ก็เลยนั่งหาดูพบว่า สามารถใช้คำสั่ง stat ในการดูได้ เช่น

    $stat -c "%a %n" /var/www

    ผลลัพธ์
    Screenshot from 2013-05-01 11:47:06

    หรือ

    $stat -c "%A (%a) %8s %.19y %n" /var/www

    ผลลัพธ์
    Screenshot from 2013-05-01 11:49:19

    ทั้งนี้เนื่องจากไม่สามารถทำให้มัน recursive ได้ ก็ต้องหาไปทีละโฟลเดอร์ …. จนกระทั่งเจออีกคำสั่ง คือ สร้าง alias ชื่อ lso ดังนี้

    $alias lso="ls -alG | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

    เมื่อจะใช้งาน ก็เพียงสั่ง lso ที่คอมมานด์ไลน์ ผลลัพธ์
    Screenshot from 2013-05-01 11:54:27

    สามารถปรับ option ของ ls ใน alias ให้ recursive ได้โดยเพิ่ม R ตัวใหญ่ลงไป ดังนี้

    $alias lso="ls -alGR | awk '{k=0;for(i=0;i<=8;i++)k+=((substr(\$1,i+2,1)~/[rwx]/)*2^(8-i));if(k)printf(\" %0o \",k);print}'"

    เมื่อเรียกใช้จะได้ผลลัพธ์
    Screenshot from 2013-05-01 11:57:21

    สามารถใช้ร่วมกับ grep เพื่อค้นหาเฉพาะค่าที่ต้องการ เช่น

    $lso|grep " ^777"

    ผลลัพธ์
    Screenshot from 2013-05-01 13:11:12

    ก็พอจะช่วยได้บ้างครับ Big Smile ขอให้สนุกครับ

    ที่มา

    http://thenubbyadmin.com/2012/02/16/how-to-list-linux-file-permissions-in-octal-notation/

    http://askubuntu.com/questions/152001/how-can-i-get-octal-file-permissions-from-command-line

  • แนวทางการ Backup บน Ubuntu Server (กรณีระบบ PSU EMail) #2

    ขยายความต่อจาก

    แนวทางการ Backup บน Ubuntu Server (กรณีระบบ PSU EMail)

    ลองมาดูทีละขั้นตอน

    1. ใน directory username.s มีไฟล์ดังนี้
    $ ls -l username.s
    total 0
    -rw-rw-r-- 1 mama mama 0 2013-04-29 14:31 a.txt
    -rw-rw-r-- 1 mama mama 0 2013-04-29 14:31 b.txt
    -rw-rw-r-- 1 mama mama 0 2013-04-29 14:31 c.txt
    -rw-rw-r-- 1 mama mama 0 2013-04-29 14:31 d.txt
    -rw-rw-r-- 1 mama mama 0 2013-04-29 14:31 e.txt

    2. ใช้คำสั่งต่อไปนี้ เพื่อทำการ Full Backup
    tar -zcf username.s-full.tar.gz -g username.s.snar username.s
    ดูไฟล์ใน username.s-full-tar.gz ด้วยคำสั่ง
    tar -ztf username.s-full.tar.gz -g username.s.snar username.s
    จะมีไฟล์ดังนี้
    username.s/
    username.s/a.txt
    username.s/b.txt
    username.s/c.txt
    username.s/d.txt
    username.s/e.txt

    3. ต่อมามีไฟล์เกิดใหม่ 2 ไฟล์ ชื่อ f.txt, g.txt
    4. เมื่อถึงเวลา ระบบทำการ Incremental Backup ด้วยคำสั่ง
    tar -zcf username.s-i01.tar.gz -g username.s.snar username.s
    ดูไฟล์ใน username.s-i01-tar.gz ด้วยคำสั่ง
    tar -ztf username.s-i01.tar.gz -g username.s.snar username.s
    จะมีไฟล์ดังนี้
    username.s/
    username.s/f.txt
    username.s/g.txt

    5. ลบไฟล์ c.txt, e.txt
    และมีไฟล์ h.txt เกิดขึ้น
    6. เมื่อถึงเวลา ระบบทำการ Incremental Backup ด้วยคำสั่ง
    tar -zcf username.s-i02.tar.gz -g username.s.snar username.s
    ดูไฟล์ใน username.s-i02-tar.gz ด้วยคำสั่ง
    tar -ztf username.s-i02.tar.gz -g username.s.snar username.s
    จะมีไฟล์ดังนี้
    username.s/
    username.s/h.txt

    7. (ในระบบ Email ไม่มีเหตุการณ์นี้ แต่ทำให้ดูเป็นตัวอย่าง) ถ้ามีการแก้ไขไฟล์ a.txt
    ซึ่งเดิมเป็นไฟล์ว่างๆ แต่ต่อมา มีการแก้ไขไฟล์ โดยเพิ่มคำว่า “hello world” เข้าไป
    echo "hello world" > username.s/a.txt
    8. เมื่อถึงเวลา ระบบทำการ Incremental Backup ด้วยคำสั่ง
    tar -zcf username.s-i03.tar.gz -g username.s.snar username.s
    ดูไฟล์ใน username.s-i03-tar.gz ด้วยคำสั่ง
    tar -ztf username.s-i03.tar.gz -g username.s.snar username.s
    จะมีไฟล์ดังนี้
    username.s/
    username.s/a.txt

    หวังว่าจะเป็นประโยชน์ครับ

  • How to create PSU VPN (L2TP/IPSec) connection Ubuntu 13.04?

    * ติดตั้งโปรแกรมชื่อ l2tp-ipsec-vpn ด้วยคำสั่ง

    $sudo apt-get install l2tp-ipsec-vpn

    ดังภาพ
    Screenshot from 2013-04-29 11:02:30
    * ตอบ y
    Screenshot from 2013-04-29 11:03:16
    * ตอบ No
    Screenshot from 2013-04-29 11:03:31
    Screenshot from 2013-04-29 11:03:40
    * กด OK
    Screenshot from 2013-04-29 11:03:53
    * สั่ง reboot เครื่อง
    Screenshot from 2013-04-29 11:04:12
    * เมื่อบูทเสร็จจะพบว่ามีไอคอนเพิ่มมาบนพาเนล
    Screenshot from 2013-04-29 11:44:16
    * คลิกซ้ายเลือก Edit Connection
    Screenshot from 2013-04-29 12:00:41
    * หน้าจอจะมืดลงและมีช่องให้ใส่พาสเวิร์ดของผู้ใช้ลงไปแล้วกด OK
    Screenshot from 2013-04-29 12:02:16
    * จะได้หน้าจอดังรูป
    Screenshot from 2013-04-29 11:21:03
    * คลิก Add จะได้หน้าจอดังรูป ใส่ vpn.psu.ac.th ลงไปในช่อง Connection name กด OK
    Screenshot from 2013-04-29 11:21:32
    * ได้ดังรูป
    Screenshot from 2013-04-29 12:06:09
    * คลิก Edit กรอกข้อความตามรูป
    Screenshot from 2013-04-29 11:22:00
    * คลิก PPP เลือกตามรูป ในช่อง Username และ Password ให้ใช้ PSU Passport
    Screenshot from 2013-04-29 11:22:30
    * คลิก IP setting คลิกเครื่องหมายถูกในช่องสี่เหลี่ยมหน้าข้อความ Obtain DNS server address automatically กด OK
    Screenshot from 2013-04-29 11:23:35
    * กด OK ออกมาจนสุดคลิก Close คลิก OK
    Screenshot from 2013-04-29 11:24:14
    * Reboot อีกครั้ง
    * คลิกที่ไอคอน เลือก vpn.psu.ac.th
    Screenshot from 2013-04-29 11:31:28
    Screenshot from 2013-04-29 11:25:37
    * เมื่อเชื่อมต่อสำเร็จจะเป็นดังรูป
    Screenshot from 2013-04-29 11:28:29
    * สำหรับ Linux Mint 15 อาจจะต้องทำคำสั่งนี้ก่อนจึงจะใช้งานได้

    sudo apt-add-repository ppa:werner-jaeger/ppa-werner-vpn
    sudo apt-get update && sudo apt-get install l2tp-ipsec-vpn

    * ขอให้สนุกครับ

    ที่มา http://rapidvpn.com/setup-vpn-l2tp-ubuntu.htm

  • Linux Mint – แหล่งรวมรวมเอกสาร ข้อมูลความรู้ต่างๆ

    Linux Mint – แหล่งรวมรวมเอกสาร ข้อมูลความรู้ต่างๆ
    ลิงค์ http://opensource.cc.psu.ac.th/Linuxmint

    1-วิธีตั้งค่าให้อัปเดต Linux Mint ได้เร็วขึ้น ทำได้โดยการตั้งค่าให้ติดต่อกับ server ในประเทศไทย
    ลิงค์ http://opensource.cc.psu.ac.th/วิธีตั้งค่าให้อัปเดต_Linux_Mint_ได้เร็วขึ้น

    2-วิธีปรับการตั้งค่า Linux Mint – Boot Options กรณีติดตั้ง Multi OS ปรับการหน่วงเวลาการเลือก OS
    ลิงค์ http://opensource.cc.psu.ac.th/วิธีปรับการตั้งค่า_Linux_Mint_-_Boot_Options_กรณีติดตั้ง_Multi_OS_ปรับการหน่วงเวลาการเลือก_OS

    3-คำสั่งตรวจสอบรายชื่อ packages ที่ติดตั้งในระบบปฎิบัติการ Linux Mint, Ubuntu, Debian
    ลิงค์ http://opensource.cc.psu.ac.th/คำสั่งตรวจสอบรายชื่อ_packages_ที่ติดตั้งในระบบปฎิบัติการ_Linux_Mint,_Ubuntu,_Debian

    4-แก้ไข Firefox browser แจ้งว่าใช้ flash player ที่ไม่ปลอดภัย หรือ Outdated
    ลิงค์ http://opensource.cc.psu.ac.th/แก้ไข Firefox browser แจ้งว่าใช้ flash player ที่ไม่ปลอดภัย

    5-ตั้งค่า VPN สำหรับ Linux Mint
    ลิงค์ http://opensource.cc.psu.ac.th/ตั้งค่า_VPN_สำหรับ_Linux_Mint

    และอื่นๆที่จะมีเพิ่มเติมมาเรื่อยๆ

  • ตัวอย่างการใช้งาน mutt เพื่อส่ง email แบบ command line

    เมื่อต้องการส่ง email ด้วย command line วิธีที่ถูกต้องที่สุด ไม่ผูกติดกับ email client program บน Linux คือการสร้างไฟล์ แล้วส่งผ่าน sendmail ไม่ว่าจะเป็น original sendmail หรือ backward-compatibility ของ postfix ก็ตาม (จะกล่าวในอีกบทความหนึ่ง)

    แต่หากต้องการความง่าย ก็ลองใช้วิธีนี้ดูครับ

    ผ่านโปรแกรมชื่อ mutt

    ตัวอย่างคือ

    1. ส่ง email ไปให้ username.s@xxx.psu.ac.th

    2. บอกว่า ส่งจาก IT Department ซึ่ง email address เป็น blah@itdept.xxx.psu.ac.th

    3. มี Subject ว่า This is Subject

    4. แนบไฟล์ชื่อ test.txt

    5. แต่จดหมายนี้ ไม่ต้องการให้ผู้ใช้ตอบกลับ จึงส่งให้ no-reply@xxx.psu.ac.th เพื่อโยนทิ้งทันที

    6. เนื้อความ ว่า Hello World

     

    สามารถใช้คำสั่งต่อไปนี้

    export REPLYTO="no-reply@xxx.psu.ac.th"; export EMAIL="IT Department <blah@itdept.xxx.psu.ac.th>"; echo "Hello World" | mutt -s "This is Subject" -a test.txt -- kanakorn.h@psu.ac.th

  • Email System Infrastructure

    mailsystem-infrastructor

  • บันทึกการสร้าง LVM Partition

    เนื่องจากมี disk ขนาดแค่ 560 GB หลายลูก แต่ต้องการเอามารวมกันให้เป็น Volume ใหญ่ๆ และไม่ใช้ RAID
    เขียนเป็นบันทึกเก็บไว้ จึงอยากเอามานำเสนอ เผื่อเป็นประโยชน์

    1. มี /dev/sdb , /dev/sdc , /dev/sdd ก้อนละ 560 GB อยู่ ต้องทำ LVM

    เป้าหมายคือ ต้องการได้ Device สำหรับการ mount ชื่อ /dev/virtual1/logical1

    reference:
    http://www.howtoforge.com/linux_lvm
    http://www.linuxquestions.org/questions/linux-hardware-18/lvcreate-with-max-size-available-749253/
    2. ติดตั้ง lvm software ด้วยคำสั่ง

    apt-get install lvm2 dmsetup mdadm reiserfsprogs xfsprogs

    3. สร้าง partition ใน physical disk ให้เป็นของ LVM Partition

    sudo su
    fdisk /dev/sdb
    Command (m for help): n
    Partition type: p
    Partition number (1-4, default 1): 1
    First sector (2048-1073741823, default 2048):
    Last sector, +sectors or +size{K,M,G} (2048-1073741823, default 1073741823):
    Command (m for help): t
    Hex code (type L to list codes): 8e
    Command (m for help): w

    ทำเช่นเดียวกับกับทั้ง /dev/sdc, /dev/sdd

    4. ต่อไป สร้าง Physical Volume ของ LVM
    pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
    pvdisplay

    5. ต่อไป สร้าง Group Volume ของ LVM
    vgcreate virtual1 /dev/sdb1 /dev/sdc1 /dev/sdd1
    vgdisplay
    vgscan

    6. ต่อไป สร้าง Logical Volume ของ LVM (เต็มพื้นที่ที่มี)
    lvcreate --name logical1 -l 100%Free virtual1
    lvdisplay
    lvscan

    7. ต่อไป สร้าง Filesystem แบบ ext4
    mkfs.ext4 /dev/virtual1/logical1

    8. แก้ fstab แล้ว mount
    vi /etc/fstab
    /dev/virtual1/logical1 /var/spool/mailbackup ext4 rw,noatime 0 0
    mount -a

  • elvisnox: text is invisible in black background xterm

    *Ubuntu 13.04 แก้ปัญหานี้แล้วครับ

    หลังจากเข้าร่วม ติว “VirtualBox Networking + vi + Shell Scripts” ก็ติดใจใช้แต่ elvis (elvis เป็น vi editor ชนิดหนึ่ง http://fivedots.coe.psu.ac.th/~cj/LUG/vi.pdf สามารถติดตั้งเพิ่มโดยใช้คำสั่ง

    $sudo apt-get install elvis

    ซึ่งเมื่อติดตั้งแล้ว elvis จะกลายเป็น default editor ทันที ดูได้จากคำสั่ง

    $sudo update-alternative --config editor

    ดังรูป
    Selection_003 )

    มาโดยตลอด ติดอยู่อย่างเดียวคือ เมื่อติดตั้งแล้ว เมื่อเปิด vi ขึ้นมาพบว่าหน้าจอเป็นสีดำทั้งหมด Angry
    Screenshot from 2013-04-17 13:37:57

    ก็ต้องมาเปลี่ยนสีของ terminal เพื่อให้อ่านออกเป็นแบบนี้

    Screenshot from 2013-04-17 13:46:52

    อีกวิธีไม่ต้องแก้สีของโปรไฟล์ คือ แก้ค่าในแฟ้ม /etc/elvis/elvis.clr

    $sudo vi /etc/elvis/elvis.clr

    ให้มองหาข้อความ case termcap { แล้วแก้ตรงบรรทัดที่เขียนว่า color normal yellow or black เป็น color normal yellow on black เซฟแล้วลองเรียก vi ใหม่ได้ผลดังนี้

    Screenshot from 2013-04-17 13:49:40

    สงสัยจะใส่ค่า config ผิดตั้งแต่ตัวติดตั้ง What?! ขอให้สนุกครับ

    ที่มา http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=474202

  • Recovering Files From ecryptfs Encrypted Home

    ผมเจอปัญหาว่ามีเครื่องเสีย ผมต้องเข้าไปช่วยกู้ข้อมูลในดิสก์ที่เสีย แต่ก็พบว่า home directory ได้ทำ encrypt ไว้ในตอนติดตั้ง ubuntu 10.04 desktop ผมจึงค้นหาดูพบหลายบทความ แต่มาลงตัวที่บทความนี้ http://www.kaijanmaki.net/2009/10/26/recovering-files-from-ecryptfs-encrypted-home/ เป็นจุดเริ่มต้นให้ลองทำตามดู

    ผมทำ Virtual Machine เป็น guest ใน Oracle VM VirtualBox โดยติดตั้ง ubuntu 10.04 desktop (จะลองกับ 12.04 หรืออื่นๆก็คงได้) แล้วลองสร้างไฟล์ test.txt, test2.txt จากนั้น shutdown เครื่อง guest แล้วบูตอีกทีด้วยไฟล์ ubuntu-10.04.4-desktop-i386.iso แล้วเลือก Try ubuntu

    เมื่อเข้าถึงหน้ากราฟิกแล้ว คลิกเมนู places, เลือก disk ที่ต้องการ จากนั้นเปิด terminal เพื่อออกไปทำงานในโหมด command line

    ใช้คำสั่ง df ดูจะเห็นว่าดิสก์ถูก mount เป็นชื่อ ดังนี้

    /dev/sda1 /media/c460e698-ae7a-478e-a9fa-7ea4beb4f7c6

    ให้เข้าทำงานเป็น root

    ubuntu@ubuntu:~$ sudo su

    ลองตรวจสอบดูว่ามีอะไรอยู่ข้างในบ้างด้วยคำสั่งข้างล่างนี้

    root@ubuntu:~# ls -l /media/c460e698-ae7a-478e-a9fa-7ea4beb4f7c6/home/mama/
     total 0
     lrwxrwxrwx 1 1000 1000 56 2013-04-10 08:52 Access-Your-Private-Data.desktop -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.desktop
     lrwxrwxrwx 1 1000 1000 52 2013-04-10 08:52 README.txt -> /usr/share/ecryptfs-utils/ecryptfs-mount-private.txt

    ตรวจสอบดูว่าไฟล์ต่างๆ น่าจะซ่อนอยู่ที่ไหนก็พบว่าอยู่ที่นี่

    root@ubuntu:~# ls -l /media/c460e698-ae7a-478e-a9fa-7ea4beb4f7c6/home/.ecryptfs/mama/.Private/
     total 276
     -rw-r--r-- 1 1000 1000 12288 2013-04-10 09:10 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmC1PAe3rM36mt8nRtyRWtxlE--
     drwxr-xr-x 4 1000 1000  4096 2013-04-10 09:06 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmC2Yj-dqfvpHuYFJe32oPmP---
     drwx------ 4 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmC3kM22hNF7litgpIAwtmwtU--
     drwx------ 2 1000 1000  4096 2013-04-10 09:11 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmC7W8YJQSLe20t0XJHf6xjB---
     -rw-r--r-- 1 1000 1000 12288 2013-04-10 08:52 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmC9cPIgv52y7AFWY.H1WCtTE--
     -rw------- 1 1000 1000 12288 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmC9dcmZbWv.pjpzikXKTE2xU--
     lrwxrwxrwx 1 1000 1000   104 2013-04-10 08:52 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmC9u1V-uJOrNxm7ZdoXYvX5E-- -> ECRYPTFS_FNEK_ENCRYPTED.FXaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCGOuByR46pE4zxC1IyPOC1XMuz8uG9d.Y91Nys0NXy1o-
     drwx------ 2 1000 1000  4096 2013-04-10 09:06 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCBinhrU4ijNIOXaDLIUmz6---
     drwxr-xr-x 6 1000 1000  4096 2013-04-10 09:08 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCbQymH7oV5njbGxrao6qK.E--
     drwx------ 2 1000 1000  4096 2013-04-10 09:11 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCcib.jfkdAKRfPUX3SRC3PE--
     drwx------ 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCd8fDbrGkyQn76SLx7OFbWk--
     drwxr-xr-x 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCf9KXChgI4vRxtQINyM5f2U--
     -rw-r--r-- 1 1000 1000 12288 2013-04-10 09:08 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmC.FSa4ytf8l5gxGoCy5Z.hU--
     -rw-r--r-- 1 1000 1000 12288 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCHD.zza5bDIfbpJCBK20OEk--
     drwx------ 7 1000 1000  4096 2013-04-10 09:11 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCHMmbRJdm8bOuKAIY9l2nNE--
     drwxr-xr-x 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCI0txn1fN.CnTaplNnnfw-E--
     -rw-r--r-- 1 1000 1000 12288 2013-04-10 09:10 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCinSVUy2qcWnG4Fkkvq3TbE--
     drwxr-xr-x 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCJCe9LKWs69b5Gm7sz9l8bk--
     drwxr-xr-x 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCkjHGX5Z.4t2crv-B-HErFE--
     drwx------ 3 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCkL2EHaUs.epFv6xhN2RgnE--
     drwxr-xr-x 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCNnJ2nY9cMM4vKFU6acxrIE--
     drwx------ 3 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmC-NphMDal80t55pvvVnvyiE--
     drwxr-xr-x 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCNYJp37Rmr3eJHZWw-yuZiE--
     -rw------- 1 1000 1000 12288 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCRIV.WMwNJ.HPDn2Qm9Is4---
     -rw------- 1 1000 1000 12288 2013-04-10 09:11 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCRqHIvRgijJ2kR4EkiHAV.U--
     drwxr-xr-x 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCTnsCL.MmBrnuuZJB7rUqu---
     drwxr-xr-x 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCt-qx19u1J7cqrJdDeAcGXU--
     drwxr-xr-x 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCtrtmC.5pOzU71mXW9lsBTU--
     -rw-r--r-- 1 1000 1000 12288 2013-04-10 08:52 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCtZB8bfkkrg5Vwn12I0a36k--
     -rw-r--r-- 1 1000 1000 12288 2013-04-10 08:52 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCugEFlA5kzGzGdCrk98SRdk--
     -rw------- 1 1000 1000 12288 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCUvV.UqheVgE8ii35hI1CD---
     drwxr-xr-x 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCwkbU8zR9wlpqaW.qpSOOG---
     -rw-r--r-- 1 1000 1000 12288 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCWmtlLdW3Fscyzdv92P7ya---
     drwx------ 2 1000 1000  4096 2013-04-10 09:05 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCxb3ohG01RPLQKdGf5aGO0k--
     lrwxrwxrwx 1 1000 1000   104 2013-04-10 08:52 ECRYPTFS_FNEK_ENCRYPTED.FWaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCY20y7DesFofU3WXsupOCaU-- -> ECRYPTFS_FNEK_ENCRYPTED.FXaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCHlpTqADLNpd4HnYAdygClBA6cPCLon7WcZ6N6OFCv8g-
     -rw------- 1 1000 1000 12288 2013-04-10 09:11 ECRYPTFS_FNEK_ENCRYPTED.FXaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCpbeOQivGSuvqOu51OftghDjzC0ltpVNARnFgkWRBi-2-
     -rw------- 1 1000 1000 12288 2013-04-10 09:11 ECRYPTFS_FNEK_ENCRYPTED.FXaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCpmXGVsVsyK8V95y22w4vq88Zp17vcB8FLxmDpAeLfzM-
     -rw-r--r-- 1 1000 1000 12288 2013-04-10 08:52 ECRYPTFS_FNEK_ENCRYPTED.FXaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCpmXGVsVsyK8V95y22w4vqAzU.HY0GIf1CP9WH.239TU-
     drwx------ 2 1000 1000  4096 2013-04-10 09:09 ECRYPTFS_FNEK_ENCRYPTED.FXaiRtz3Ag4mTURWaW1nT.6mYpw-PkyvsXmCpmXGVsVsyK8V95y22w4vq-Qwp5WNWvevyfXuTlIfkN2-

    เข้าสู่ขั้นตอนการกู้ข้อมูล โดยสร้างไดเรกทอรีใน /mnt ดังนี้

    root@ubuntu:/home/ubuntu# cd /mnt
    root@ubuntu:/mnt# mkdir oldhome
    root@ubuntu:/mnt# ln -s /media/c460e698-ae7a-478e-a9fa-7ea4beb4f7c6/home/.ecryptfs/mama/.Private oldprivate

    ตรวจสอบดูว่าได้ผลตามต้องการ

    root@ubuntu:/mnt# ls -l /mnt
    total 12
    drwx------ 24 mama mama 4096 2013-04-10 16:11 oldhome
    lrwxrwxrwx  1 root root   72 2013-04-10 20:51 oldprivate -> /media/c460e698-ae7a-478e-a9fa-7ea4beb4f7c6/home/.ecryptfs/mama/.Private

    เราจะต้องเข้าไปสร้าง passphase จากรหัสผ่านของบัญชีผู้ใช้งาน ในที่นี่คือ username ชื่อ mama มีรหัสผ่าน 123456 โดยการเข้าไปใช้คำสั่ง ecryptfs-unwrap-passphrase กับไฟล์ wrapped-passphrase ซึ่งตามความเป็นจริง เราจะต้องรู้ passphase ยาวๆนี้อยู่แล้ว แต่ไม่รู้ก็ไม่เป็นไร

    เข้าไปไดเรกทอรีเพื่อจะได้ไม่ต้องพิมพ์คำสั่งยาวๆ

    root@ubuntu:/mnt# cd /media/c460e698-ae7a-478e-a9fa-7ea4beb4f7c6/home/

    ใช้คำสั่งเพื่อสร้าง passphase

    root@ubuntu:/media/c460e698-ae7a-478e-a9fa-7ea4beb4f7c6/home# ecryptfs-unwrap-passphrase .ecryptfs/mama/.ecryptfs/wrapped-passphrase
    Passphrase: 123456

    ตรงนี้ใส่รหัสผ่านของ username ที่มี home directory encrypted คือ mama มีรหัสผ่าน 123456 ไว้

    ได้ผลคือได้ passphase ยาวๆ ออกมา ซึ่งจะถูกนำไปใช้ต่อไป

    44dcd2be32726c9925eb2403e295aa2e

    ออกจากไดเรกทอรี

    root@ubuntu:/media/c460e698-ae7a-478e-a9fa-7ea4beb4f7c6/home# cd

    ตอนนี้จะมีการถาม passphase อีก หากใช้วิธี copy และ paste ได้จะสะดวกกว่าคีย์ทั้งหมดทีละตัว

    root@ubuntu:~# ecryptfs-add-passphrase --fnek
    Passphrase: ใส่ 44dcd2be32726c9925eb2403e295aa2e ที่ได้มา

    ได้ผลลัพธ์

    Inserted auth tok with sig [f09d3c0aedc95c7b] into the user session keyring
    Inserted auth tok with sig [ae779fc532c1b27e] into the user session keyring

    เราจะใช้ค่า ae779fc532c1b27e ในขั้นตอนต่อไป

    root@ubuntu:~# mount -t ecryptfs /mnt/oldprivate /mnt/oldhome
    Passphrase: ใส่ 44dcd2be32726c9925eb2403e295aa2e ที่ได้มา
    Select cipher:
    1) aes: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
    2) blowfish: blocksize = 16; min keysize = 16; max keysize = 56 (not loaded)
    3) des3_ede: blocksize = 8; min keysize = 24; max keysize = 24 (not loaded)
    4) twofish: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
    5) cast6: blocksize = 16; min keysize = 16; max keysize = 32 (not loaded)
    6) cast5: blocksize = 8; min keysize = 5; max keysize = 16 (not loaded)
    Selection [aes]: กด Enter
    Select key bytes:
    1) 16
    2) 32
    3) 24
    Selection [16]:  กด Enter
    Enable plaintext passthrough (y/n) [n]: n
    Enable filename encryption (y/n) [n]: y
    Filename Encryption Key (FNEK) Signature [f09d3c0aedc95c7b]: ae779fc532c1b27e ใส่ค่านี้
    Attempting to mount with the following options:
    ecryptfs_unlink_sigs
    ecryptfs_fnek_sig=ae779fc532c1b27e
    ecryptfs_key_bytes=16
    ecryptfs_cipher=aes
    ecryptfs_sig=f09d3c0aedc95c7b
    WARNING: Based on the contents of [/root/.ecryptfs/sig-cache.txt],
    it looks like you have never mounted with this key
    before. This could mean that you have typed your
    passphrase wrong.
    
    Would you like to proceed with the mount (yes/no)? : yes
    Would you like to append sig [f09d3c0aedc95c7b] to
    [/root/.ecryptfs/sig-cache.txt]
    in order to avoid this warning in the future (yes/no)? : no
    Not adding sig to user sig cache file; continuing with mount.
    Mounted eCryptfs

    หากได้บรรทัด Mounted eCryptfs ก็ไชโยได้ แต่ถ้าไม่สำเร็จจะฟ้องเป็น error ก็เพราะระบุตำแหน่ง directory ที่มีไฟล์ encrypted ไม่ถูกต้องในขั้นตอนแรกๆ ที่เป็นคำสั่ง ln -s

    หากทำสำเร็จ เราลอง ใช้คำสั่งดูรายชื่อไฟล์

    root@ubuntu:~# ls -l /mnt/oldhome/
    total 80
    drwxr-xr-x 2 mama mama 4096 2013-04-10 16:05 Desktop
    drwxr-xr-x 2 mama mama 4096 2013-04-10 16:05 Documents
    drwxr-xr-x 2 mama mama 4096 2013-04-10 16:05 Downloads
    -rw-r--r-- 1 mama mama  179 2013-04-10 15:52 examples.desktop
    drwxr-xr-x 2 mama mama 4096 2013-04-10 16:05 Music
    -rw-r--r-- 1 mama mama   33 2013-04-10 16:08 mypassphase
    drwxr-xr-x 2 mama mama 4096 2013-04-10 16:05 Pictures
    drwxr-xr-x 2 mama mama 4096 2013-04-10 16:05 Public
    drwxr-xr-x 2 mama mama 4096 2013-04-10 16:05 Templates
    -rw-r--r-- 1 mama mama   16 2013-04-10 16:10 test2.txt
    -rw-r--r-- 1 mama mama   15 2013-04-10 16:10 test.txt
    drwxr-xr-x 2 mama mama 4096 2013-04-10 16:05 Videos

    จะเห็นไฟล์ตามปกติ ซึ่งมีไฟล์ที่ผมสร้างไว้คือ test.txt และ test2.txt

    ผมเคยเก็บ passphase ไว้เพื่อเปรียบเทียบ ซึ่งก็ตรงกับที่เราสร้าง passphase ในขั้นตอนด้านบนจากรหัสผ่านของ username mama

    root@ubuntu:~# cat /mnt/oldhome/mypassphase
    44dcd2be32726c9925eb2403e295aa2e

    ถึงตอนนี้ หากเป็นการกู้ข้อมูล ก็ทำการคัดลอกไฟล์ตามสะดวก

    เมื่อคัดลอกไฟล์ที่ต้องการแล้ว ก็ทำการ unmount เพื่อเลิกใช้ดิสก์นั้น

    root@ubuntu:~# umount /mnt/oldhome

    หวังว่าคงเป็นประโยชน์สำหรับ ใครที่บังเอิญติดตั้งแบบ encrypted home directory เอาไว้ แล้ววันหนึ่งต้องกู้ข้อมูล หรือใครจะลองทำดูก็ได้นะ

    หากโชคดีไฟล์ wrapped-passphrase ไม่เสียหาย ก็จะทำได้สำเร็จครับ