เพราะอยากเก็บ sms เก่าแท้ ๆ

2-3 สัปดาห์ที่ผ่านมา ผมสังเกตว่าไม่มีข้อความสั้น (sms) เข้ามาที่ iphone ของผมเลยแม้แต่อันเดียว ซึ่งตามปกติผมจะได้รับข้อความทุกเช้าวันจันทร์จากระบบเพื่อแจ้งยอดค่าโทรศัพท์ ผมคิดว่ามันผิดสังเกตเกินไป อย่างน้อยก็ต้องมีข้อความโฆษณาเข้ามาบ้าง อันนี้เงียบไปเฉยเลย

ผมลองเช็คดูข้อความล่าสุด มันก็จะโชว์แค่ข้อความเก่าๆ ซึ่งน่าจะประมาณกลางเดือนที่แล้ว และเวลาที่ผมจะส่ง sms ก็ดูเหมือนว่าจะส่งได้เพราะมันจะไม่ฟ้องอะไร แต่ตัวโปรแกรมจะปิดกลับมาที่หน้าจอหลักเหมือนเดิม แต่ข้อคามไม่ส่งให้ เอ๊ะ มันยังไงกันนะ ?!?!

ผมลองเข้าไปเวบ e-service ของ dtac ก็ไม่ได้รับข้อความเตือนว่าตอนนี้ผมกำลังมีการใช้ e-service เหมือนทุกครั้ง และที่สำคัญผมลองส่งข้อความจากเวบ e-service เข้ามาหาผมเองก็ไม่ได้รับเช่นกัน !!!

วันนี้ ผมเลยต้องหาทางแก้ให้ได้ว่ามันเป็นเพราะอะไรกันแน่ แม้ว่าผมจะไม่ค่อยได้ใช้ sms แต่ถ้ามีปัญหาแบบนี้ มันไม่ใช่แบบที่ต้องการซะแล้วล่ะ

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


ผมก็คงบอกว่า it's too technical เกินไปแล้ว เพราะผมคงไม่สามารถรู้ได้ว่า ค่าไหนใช้ได้ แล้วค่าแบบไหนจึงจะใช้ไม่ได้ แต่ก็คงไม่ใช่จุดนี้แน่นอนเพราะผมยังรับ-ส่ง sms ไม่ได้อยู่ดี แล้วมันเป็นเพราะอะไร ?!?!

ผมมานั่งคิดอีกที จึงนึกขึ้นได้ว่าข้อความสุดท้ายน่าจะเป็นช่วงที่ผมทำการอัพเกรดเป็น 3.1.3 และหลังจากที่อัพเกรดแล้ว ผมได้เอาไฟล์ sms.db อันเก่ามาทับเพื่อจะได้ดูข้อความเก่าเหล่านั้นอีกที โดยการลากไฟล์เข้า-ออกเครื่อง iphone ผ่านตัวโปรแกรม iPhoneExplorer แบบง่าย ๆ เองครับ แค่ drag'n drop ก็เสร็จแล้ว

นั่นแหละคือต้นเหตุของเรื่องนี้ ...

การที่เราสามารถใช้ drag'n drop ในโปรแกรม iPhoneExplorer ได้นั้น ผมคาดว่าตัวโปรแกรมใช้สิทธิ์ในการจัดการไฟล์ต่าง ๆ ในเครื่องด้วยสิทธิ์ของ root ที่สามารถทำอะไรได้ทุกอย่างในระบบ ฉะนั้น ตัวไฟล์ sms.db จึงถูกเก็บเข้ามาที่ profile ของเราโดยผูกกับ root account ไว้ด้วย

อย่างไรก็ตาม สำหรับเครื่อง iphone นั้นจะใช้ account ที่ชื่อว่า mobile เป็นตัวหลักในการใช้งานของเครื่อง เมื่อตัวไฟล์ sms.db มี file ownership ไม่ตรงกัน จึงทำให้ตัวโปรแกรม Messages ของ iPhone ไม่สามารถเปิดไฟล์ sms.db ได้ เพราะเกิด file ownership / permission error ขึ้นมา

เอาล่ะ เมื่อรู้แล้วว่าเป็นเพราะอะไร ผมก็เข้าไปที่ Terminal เพื่อเข้าไปเปลี่ยน file ownership โดยใช้คำสั่ง chown ให้กับไฟล์ sms.db ตามขั้นตอนดังนี้

  1. เปิดตัวโปรแกรม Terminal

  2. ใช้คำสั่ง cd /var/mobile/Library/SMS เพื่อเปลี่ยน directory ของไฟล์ sms.db

  3. เช็คไฟล์ที่อยู่ในโฟลเดอร์ทั้งหมด ด้วยคำสั่ง ls -al

  4. ใช้คำสั่ง chown sms.db

  5. เช็คไฟล์อีกครั้ง ด้วยคำสั่ง ls -al


ลองดูที่หน้าจอข้างล่างนี้ประกอบนะครับ


เท่านี้ก็เป็นอันเสร็จภาระกิจวันนี้ ถ้าสนใจวิธีนี้ก็สามารถนำไปใช้กับไฟล์อื่น ๆ เช่น calls, contacts, calendar ก็ได้เวลาที่ต้องเก็บข้อมูลเก่าเข้าเครื่องถ้าต้องทำ upgrade firmware ได้เช่นกันครับ

- iPhoneExplorer
- UNIX Wiki

No comments: