Showing posts with label root. Show all posts
Showing posts with label root. Show all posts

Saturday, October 22, 2011

FreeBSD: system administrators tasks

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

ในตอนนั้น ได้กล่าวไว้ว่า อีกวิธีที่ใช้เปลี่ยนระหัสผ่านคือคำสั่ง vipw(8) ซึ่งก็ไม่มีอะไรมากไปกว่า การเรียก vi(1) มาแล้วแก้ไขแฟ้ม /etc/passwd ซึ่งรายละเอียดของแฟ้มนี้ สามารถไปหาดูได้จาก passwd(5)

ในแฟ้ม /etc/passwd นี้มี field อยู่ 10 fields ซึ่งแยกกันด้วยโคลอน หรือ : โดยที่ field ที่ ๑ คือ login id และ field ที่ ๒ คือ ระหัสผ่าน และ field ที่ ๘-๑๐ คือ ชื่อจริงของ login id นั้นๆ, home directory ของเขา, และ shell ที่เขาใช้ ตามลำดับ

ความจริงแล้ว วิธีนี้ ไม่ได้เปลี่ยนระหัสผ่านให้ท่านได้ เพียงแต่ ลบระหัสผ่านเดิมออกไปเท่านั้น  แต่ทั้งนี้ ท่านต้องเป็น root เท่านั้น จึงจะทำงานในลักษณะนี้ได้ และขอแนะนำเป็นอย่างยิ่งว่า ให้กระทำบน console เท่านั้น ไม่แนะให้กระทำใน graphics mode

ให้ท่านทำดังนี้
  1. ที่ root prompt ให้ท่านเรียก vipw
  2. ให้ท่านกดไปตามนี้ /login-id ตามด้วยปุ่ม Enter เมื่อ login-id คือ login id ที่ใช้สำหรับ login และมีความประสงค์จะแก้ระหัสผ่าน,  (สมมติให้เป็น alice)
  3. กด /: ตามด้วยปุ่ม Enter แล้วให้สังเกตุตัวดอลลาร์, $, ที่อยู่ติดกับตัวโคลอน, :, แรกนั้น
  4. กดตัวแอล l มันจะเลื่อนไปยังตัว $ ขออธิบายเพิ่มเติมสักนิดหนึ่งว่า ใน FreeBSD เขาเข้าระหัสตามแบบของเขา ซึ่งมีผลให้ระหัสผ่านทุกระหัส ที่เข้าระหัสไว้แล้ว จะขึ้นต้นด้วย $1 เสมอ  และ ระหัสผ่าน ที่เข้าระหัสไว้แล้วนั้น จะอยู่ระหว่าง โคลอนแรก และ โคลอนสอง
  5. กด x ตั้งแต่ตัว $ ไป ทีละครั้ง สำหรับหนึ่งอักขระ ที่ปรากฏ ไปจนถึงตัวก่อนโคลอน : ที่สอง
  6. ที่บรรทัดนี้ นับตั้งแต่อักขระแรก ไปจนถึง โคลอนตัวที่สอง ขณะนี้ ต้องเป็นอย่างนี้เท่านั้น alice::   เมื่อ alice คือ  login id ที่สมมติขึ้น  นั่นแสดงว่า ท่านได้ลบระหัสผ่านของ alice หมดแล้ว
  7. กด :w ตามด้วยปุ่ม Enter เพื่อบันทึกความเปลี่ยนแปลง
  8. กด :q ตามด้วยปุ่ม Enter เพื่อจบการทำงาน
ขอให้ท่านใจเย็นๆ อ่านไปให้เข้าใจก่อนลงมือกระทำ และเมื่อกระทำ ก็ให้ตั้งใจ ให้มีสติกระทำ

จากนี้ ท่านสมควรกำหนดระหัสผ่านเบื้องต้นให้กับ alice ใหม่อีกครั้ง ดังนี้
  • su -l alice
  • passwd
  • เขาจะถามระหัสผ่านเดิม ให้ท่านกดปุ่ม Enter ไป เพราะไม่มีระหัสผ่านเดิม
  • เขาจะถามระหัสผ่านใหม่ ให้ท่านกำหนดระหัสผ่านใหม่ไป แล้วตามด้วยปุ่ม Enter
  • เขาจะให้ท่านกรอกระหัสผ่านใหม่ ที่ท่านได้กรอกไปแล้วนั้น ซ้ำอีกครั้ง ก็ให้ท่านกรอกซ้ำไป ให้ตรงกัน
  • exit

แล้วแจ้งให้ผู้ใช้ที่ใช้ login id ว่า alice ทราบอีกที ถึงระหัสผ่านใหม่ ที่ท่านกำหนดให้ และ ให้ alice เปลี่ยนระหัสผ่านเอาเองใหม่ ตามใจเขา ด้วยคำสั่ง passwd(1) ทาง mail ของระบบเท่านั้น

สรุปว่า ในการนี้ ท่านต้องทำคือ
  • ลบระหัสผ่านเดิมออก
  • กำหนดระหัสผ่านใหม่
  • แจ้งให้ผู้ใช้งานทราบทาง mail ของระบบ เท่านั้น

มีข้อคิด จากข้อเขียนทั้งสองนี้ คือ หากเครื่องของท่านถูกขโมยไป เขาย่อมทราบระหัสผ่านของ root ได้ โดยวิธีแรก และสามารถกระทำการใดใดได้ ตามใจของเขา หรือ ตามอำเภอใจ ดังนั้น security จะไม่มีประโยชน์อะไรเลย หากเครื่องของท่าน ถูกขโมยไป

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

หวังว่าคงเกิดประโยชน์บ้าง

Monday, March 24, 2008

root password

เรื่องหลงลืมนี่ ประจำ ตราบเท่าที่เรายังคงเป็น คน หรือแม้กระทั่งว่า ฅน ก็เถอะ ย่อมต้องมีขึ้นเสมอ หลง ลืม ซึ่งก็คืออาการของการที่มีสติไม่เต็มนั่นแหละ และผลเสียมีมากกว่าผลดี แต่แม้รู้ทั้งรู้เราๆท่านๆยังเจอเสมอๆ ลืม
ที่หนักกว่านั้นคือ ดันไปตั้งข้อกำหนดเอาว่า ต้องไม่ลืม
mother snake ลบสระอูเอ้ย จะเป็นไปได้ยังงั้ยที่คนจะไม่ลืมนะ

คนเราลองว่าได้ลืมกันแล้ว ค่าใช้จ่ายในส่วนที่ทบทวนความทรงจำมันย่อมต้องมี และ มาก เสียด้วย
เอาละเข้าเรื่องเสียที

root ที่เราพูดในที่นี้หมายเอา root ของ MySQL ซึ่งไม่จำเป็นต้องเป็นคนเดียวกันกับ super user ของระบบ

ในกรณีที่เราลืม password ของ root เราพอจะกล้อมแกล้มทำงานเพื่อแก้ไขสถานะการได้ดังต่อไปนี้คือ
๑) สั่งหยุดการทำงานของ mysql server แล้วเรียก หรือสั่ง mysql server ให้เริ่มทำงานใหม่ ด้วยการไปอ่านแฟ้มพิเศษเข้า ก็เท่านั้นเอง
๒) เข้าไปแก้ไข grant table ซึ่งวิธีนี้ ไม่นิยมก็เป็นอันว่าเราเลือกวิธีแรก หรือ เลือกหนทางที่ ๑) นะ

ทบทวนนะครับว่า เรายังคงความสามารถเป็น super user ของระบบได้อยู่
ตำราเขาบอกว่าให้ท่านหยุด server แล้วอาศัยคำสั่งง่ายๆอันนี้

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('new_password');

เป็นตัวกำหนดว่าระหัสผ่านอันใหม่ของท่านคือ new_password
วิธีการคือ เก็บคำสั่งดังกล่าวนี้ไว้ในแฟ้ม เช่น /tmp/mysql-root-pwd แล้วเรียก mysql server ด้วย option --init-file ดังนี้

# mysqld_safe --init-file=/tmp/mysql-root-pwd &

เพียงเท่านี้ ระหัสผ่านของ root ที่ท่านลืมนั้นก็สามารถตั้งใหม่ให้เป็นอะไรก็ได้ตามแต่ใจท่าน
ฟังดูง่าย แต่เบื้องหลังก็คือ ช่วงที่ท่าน หยุด server นั่นแหละ มันวุ่นวาย ขอให้ตรองดูให้ดีก็แล้วกัน

เอาละ ขอจบส่วนของ root password แต่เพียงเท่านี้ แต่ก่อนจากก็ขอบอกถึงเอกสารอ้างอิงสักนิดคือ
Seyed M.M "Saied" Tahaghoghi & Huge E. Williame, Learning MySQL, O'REILLY

นี่เพียงแค่ลืม root password ยังวุ่นวายขนาดนี้ หากคนลืมกำพืด หรือ รากเหง้าของตัวเอง จะวุ่นวายขนาดไหน

View My Stats