- ใน Ubuntu 26.04 LTS เมื่อรันคำสั่ง
sudo จะเปิดใช้ ฟีดแบ็กแบบมองเห็นได้ที่แสดงเครื่องหมายดอกจัน (*) ทุกครั้งที่พิมพ์รหัสผ่าน เป็นค่าเริ่มต้น
- ฟีเจอร์นี้เกิดขึ้นได้จากการนำ sudo-rs ที่เขียนใหม่ด้วย Rust มาใช้ และ Canonical ก็เลือกใช้สิ่งนี้เป็น sudo เริ่มต้นตั้งแต่ Ubuntu 25.10
- ผู้ใช้บางส่วนคัดค้านโดยให้เหตุผลว่า มีความเสี่ยงจากการเปิดเผยความยาวของรหัสผ่าน แต่ทีมพัฒนาระบุว่าความเสี่ยงมีน้อยมาก และเน้นเรื่องความสอดคล้องกับหน้าจอล็อกอิน
- หากต้องการกลับไปใช้พฤติกรรมเดิม สามารถเพิ่ม
Defaults !pwfeedback ลงในไฟล์ sudoers เพื่อให้มีผลได้ทันที
- การเปลี่ยนแปลงครั้งนี้เป็นส่วนหนึ่งของ งานปรับระบบให้ทันสมัยของ Ubuntu 26.04 ที่ดำเนินไปพร้อมกับ GNOME 50, Linux kernel 7.0, Rust-based coreutils และอื่น ๆ
ประวัติของการพิมพ์รหัสผ่าน sudo
- ในปี 1980 ที่ SUNY Buffalo Bob Coggeshall และ Cliff Spencer ได้พัฒนา
sudo ตัวแรก
- ในเวลานั้น เทอร์มินัลมักเป็นสภาพแวดล้อมแบบใช้ร่วมกัน และเพื่อป้องกัน การแอบมองข้ามไหล่ (shoulder surfing) จึงซ่อนการแสดงผลของการพิมพ์ทั้งหมด
- การออกแบบนี้คงอยู่ต่อมาเกือบ 46 ปีในลินุกซ์ดิสทริบิวชันหลักแทบทั้งหมด
- Linux Mint เป็นรายแรกที่ลองเปลี่ยนแนวทาง โดยเปิดใช้ฟีดแบ็กแบบมองเห็นได้เป็นค่าเริ่มต้นในการตั้งค่าของตนเอง
- ดิสทริบิวชันหลักอย่าง Ubuntu ยังคงใช้รูปแบบการพิมพ์แบบเงียบเดิมมาเป็นเวลานาน
sudo-rs และกระบวนการเปลี่ยนแปลงของ Ubuntu
-
sudo-rsเป็นอิมพลีเมนเทชันที่เขียนใหม่ทั้งหมดจาก sudo เดิมที่ใช้ C มาเป็น Rust
- Canonical เปลี่ยนมาใช้สิ่งนี้เป็น sudo เริ่มต้นใน Ubuntu 25.10 แต่ในมุมผู้ใช้ พฤติกรรมยังเหมือนเดิม
- ในเดือนกุมภาพันธ์ 2026 มีการรวมแพตช์เปิดใช้
pwfeedback เป็นค่าเริ่มต้นเข้ากับ upstream ของ sudo-rs
- Canonical นำการเปลี่ยนแปลงนี้มาใส่ในบิลด์พัฒนาของ 26.04 และจุดชนวนการถกเถียงในชุมชน
- ไทม์ไลน์หลัก
- 1980: พัฒนา sudo ต้นฉบับ โดยมีการพิมพ์แบบเงียบเป็นค่าเริ่มต้น
- ตุลาคม 2025: นำ sudo-rs มาใช้ใน Ubuntu 25.10
- กุมภาพันธ์ 2026: รวมแพตช์เปิดใช้
pwfeedback เป็นค่าเริ่มต้น
- 23 เมษายน 2026: กำหนดออก Ubuntu 26.04 LTS พร้อมเปิดใช้การแสดงดอกจันเป็นค่าเริ่มต้น
มุมมองทั้งสองฝ่ายของข้อถกเถียงด้านความปลอดภัย
-
ฝ่ายวิจารณ์
- การแสดงดอกจันทำให้ความยาวของรหัสผ่านถูกเปิดเผย และทำให้โมเดลความปลอดภัยเดิมอ่อนลง
- มีการส่งบั๊กรีพอร์ตว่า “เป็นการทำลายมาตรการความปลอดภัยเชิงประวัติศาสตร์”
-
ฝ่ายนักพัฒนา
- ในทางปฏิบัติ ความเสี่ยงจากการเปิดเผยความยาวของรหัสผ่านมีน้อยมาก เพราะถ้าอยู่ใกล้พอ ก็เดาได้จากเสียงกดแป้นพิมพ์หรือการเคลื่อนไหวของมืออยู่แล้ว
- รหัสผ่าน sudo ของผู้ใช้ส่วนใหญ่ก็คือรหัสผ่านล็อกอินเดียวกัน และบนหน้าจอล็อกอินก็มีการแสดงเป็นจุด (dot) อยู่แล้ว
- ดังนั้น การทำให้เฉพาะเทอร์มินัลยังคงเงียบจึงเป็นเพียง ‘security theatre’ เท่านั้น
- สรุปเปรียบเทียบ
| รายการ |
sudo เดิม (เงียบ) |
sudo-rs + pwfeedback |
| ฟีดแบ็กแบบมองเห็นได้ |
ไม่มี |
แสดงดอกจันทุกครั้งที่พิมพ์ |
| การเปิดเผยความยาวรหัสผ่าน |
ไม่มี |
มี |
| ความสอดคล้องกับหน้าจอล็อกอิน |
ไม่สอดคล้อง |
สอดคล้อง |
| ประสบการณ์ผู้ใช้ใหม่ |
สับสน |
ยืนยันการพิมพ์ได้ |
| เซสชัน SSH |
เงียบ |
ยังคงแสดงดอกจัน |
| สามารถย้อนกลับได้หรือไม่ |
— |
ได้ (!pwfeedback) |
วิธีคืนค่าเป็นแบบเดิม
- เปิดไฟล์
sudoers ด้วยคำสั่ง sudo visudo แล้วเพิ่มหนึ่งบรรทัดดังนี้
Defaults !pwfeedback
- หลังบันทึก จะมีผลทันทีในเซสชันเทอร์มินัลใหม่
- ไม่จำเป็นต้องรีสตาร์ตระบบ
ความทันสมัยของ Ubuntu 26.04
- การเปลี่ยนแปลงครั้งนี้เป็นส่วนหนึ่งของการปรับระบบโดยรวมของ Ubuntu 26.04 LTS “Resolute Raccoon”
- รวมถึง GNOME 50 (Wayland เท่านั้น), Linux kernel 7.0, Rust-based coreutils (uutils/coreutils)
- Canonical กำลังผลักดันการนำ Rust มาใช้เพื่อเสริม ความปลอดภัยของหน่วยความจำ และ ประสบการณ์ผู้ใช้สมัยใหม่
- ข้อถกเถียงเรื่องการแสดงดอกจันของ sudo-rs เป็นสัญลักษณ์ของ การปะทะกันระหว่างปรัชญา Unix แบบดั้งเดิมกับ UX สมัยใหม่
- ผู้ใช้สามารถเปลี่ยนกลับไปใช้รูปแบบเดิมได้ทุกเมื่อด้วยการตั้งค่าเพียงบรรทัดเดียว
- ค่าเริ่มต้นถูกตัดสินให้เอนเอียงไปทาง “ผู้ใช้ส่วนใหญ่ที่ชอบเห็นดอกจัน มากกว่าผู้เริ่มต้นที่ตกใจกับหน้าจอว่างเปล่า”
- Ubuntu 26.04 LTS มีกำหนดเปิดตัวอย่างเป็นทางการในวันที่ 23 เมษายน 2026 และขณะนี้ยังอยู่ระหว่างการพัฒนา
- แพ็กเกจ sudo-ws เดิมจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลง
pwfeedback
6 ความคิดเห็น
ถ้าการที่คนมองข้ามไหล่แล้วพอจะเดาความยาวได้ถือเป็นช่องโหว่ด้านความปลอดภัยร้ายแรง ทำไมถึงไม่บังคับให้คีย์บอร์ดทุกตัวที่ใช้เข้าถึงเทอร์มินัลลินุกซ์ต้องมีแผ่นบังกันส่องล่ะครับ? แค่ดูคีย์บอร์ดตรง ๆ หรือแอบบันทึกด้วยกล้องลับก็จบแล้วนี่.
ถ้ามองเห็นสิ่งนี้ได้จากการชะเง้อมองข้ามไหล่ ก็น่าจะต้องกังวลมากกว่าว่านิ้วที่กำลังพิมพ์นั้นมองเห็นได้ชัดเลยไม่ใช่หรือ...
ถ้าใกล้ถึงขนาดนั้น ก็อาจถึงขั้นอัดเสียงแล้วนับจำนวนตัวอักษรได้ด้วยนะครับ
ถ้ากังวลเรื่องความปลอดภัยมากและเป็นสถานที่สำคัญขนาดนั้น ก็ควรใช้กุญแจความปลอดภัยแบบกายภาพครับ
หากผู้ใช้ล็อกอินผ่านเทอร์มินัล รหัสผ่านจะไม่ถูกแสดง และแม้แต่ใน
sshที่เชื่อมต่อระยะไกล รหัสผ่านก็ไม่ถูกเปิดเผยเช่นกัน ไม่ว่าจะเป็นsudo,su,passwd,sshหรือการล็อกอินผ่านเทอร์มินัล ก็ไม่เคยมีอย่างไหนแสดงรหัสผ่านมาก่อน มีเพียงหน้าจอล็อกอินแบบ GUI เท่านั้นที่แสดงแยกต่างหากเสียอีก ตรงกันข้าม การเปลี่ยนแปลงครั้งนี้ยิ่งทำลายความสม่ำเสมอมากขึ้นไปอีกความคิดเห็นจาก Hacker News
สามารถเลือกการตั้งค่าที่ ซ่อนการแสดงผลขณะพิมพ์รหัสผ่านทั้งหมด ได้
บน KDE ให้เพิ่ม
ShowPasswordEcho=falseใน/etc/sddm.conf.d/hide-password.confแล้วรีบูต,สำหรับ
sudoให้เพิ่มDefaults !pwfeedbackใน/etc/sudoers.d/password-no-visual-echo,บน GNOME ต้องแก้
unlockDialog.jsแล้วเปลี่ยนเป็นset_password_char('')หรือecho_char=nullจากนั้นรีบูตตอนพิมพ์
sudoผ่านการเชื่อมต่อ SSH ที่หน่วงสูง เคยสับสนบ่อยว่าปุ่มที่กดถูกส่งไปแล้วหรือยังแถมยังมี VPN กับการยืนยันตัวตน IAM พัวพันอยู่ด้วย จนไม่แน่ใจด้วยซ้ำว่ารหัสผ่านใหม่ถูกนำไปใช้แล้วหรือยัง
ในสถานการณ์แบบนี้ ฟีเจอร์แสดงผลตอบกลับขณะพิมพ์รหัสผ่านน่าจะมีประโยชน์มาก โดยเฉพาะถ้า Red Hat นำไปใช้ด้วยก็จะยิ่งดี
ถ้า UI ตอนนั้นต่างออกไป น่าจะได้เริ่มใช้ลินุกซ์เร็วกว่านั้นมาก
ไม่ดีในแง่ความปลอดภัย แต่ก็ไม่มีใครมายืนแอบมอง
sudoโดยตรงหน้าจอล็อกอินของ macOS ก็ควรแก้เช่นกัน
ช่องกรอกรหัสผ่านแคบเกินไป พอพิมพ์รหัสผ่านยาวๆ ก็แทบไม่มีการตอบกลับใดๆ
ถ้าคีย์บอร์ดไม่เสถียร ขั้นตอนล็อกอินจะน่าหงุดหงิดมาก
รหัสผ่านยาว 18 ตัวแสดงได้แค่ 13 ตัว เลยคิดว่าการพิมพ์หยุดไปแล้ว สุดท้ายใช้เวลา 30 นาทีกว่าจะล็อกอินได้
แม้ความยาวรหัสผ่านจะถูกเปิดเผย แต่สำหรับผู้ใช้แล้วการตอบกลับตอนพิมพ์ชัดเจนมาก
ดูการพูดคุยที่เกี่ยวข้องได้ที่ Security StackExchange
ถ้ามี เวอร์ชันมุกตลกที่แสดงสตริงขำๆ แทน
***ก็น่าจะดีเช่น แสดงรหัสผ่านปลอมอย่าง “iloveyouiloveyou”, “12345612345”
คิดว่านี่เป็นการเปลี่ยนแปลงที่ดีมาก
ตอนแรกอาจงงบ้าง แต่เดี๋ยวก็ชิน และในความเป็นจริงก็แทบไม่มีผลต่อความปลอดภัยมากนัก
พรอมป์ต์แบบเงียบช่วยปกปิดเรื่องนั้นไว้ แต่ยังไงรหัสผ่านตัวเดียวก็ไม่มีความหมายอยู่ดี
ทุกวันนี้เรื่องนี้สำคัญน้อยลงมาก และถ้าต้องการก็ยังเปลี่ยนกลับเป็นโหมดเงียบได้
สุดท้ายแล้วความหมายหลักจึงเป็น การปรับปรุง UX มากกว่าความปลอดภัย
การมีการตอบกลับเมื่อกดปุ่มเป็นเรื่องดี แต่บางทีวิธีอื่นอาจดีกว่าการจับคู่แบบ 1:1 ตรงๆ
ตัวอย่างเช่น xsecurelock ให้การตอบกลับโดยทำให้จุดบนเส้นขยับเมื่อมีการพิมพ์
วิธีนี้ช่วยซ่อนความยาวรหัสผ่านแต่ยังคงความรู้สึกว่ามีการป้อนข้อมูลอยู่
ใน
sudoก็ทำเอฟเฟกต์คล้ายกันได้ด้วยDefaults !pwfeedbackในทางปฏิบัติ ถ้ามี การโจมตีจากการเข้าถึงทางกายภาพ ได้อยู่แล้ว ก็มักจะมีวิธีแฮ็กอื่นได้ด้วย ดังนั้นเรื่องนี้จึงเป็นแค่การปรับปรุง UX ระดับหนึ่ง
เวลาพิมพ์รหัสผ่านผิดจะหงุดหงิดมากเพราะ ไม่รู้ว่าต้องลบกี่ตัวอักษร และฟีเจอร์นี้ก็ช่วยแก้ปัญหานั้นได้
แค่เพิ่มพฤติกรรมใหม่นี้เป็น ตัวเลือกเสริม ก็น่าจะเพียงพอแล้ว
ถ้าเปลี่ยนค่าเริ่มต้น ตอนสตรีมแล้วพิมพ์
sudoความยาวรหัสผ่านอาจถูกเปิดเผยได้อีกทั้งยัง เดาความยาวได้จากเสียงแป้นพิมพ์ อยู่ดี
อีกอย่าง ระหว่างการถ่ายทอดสดก็ไม่ค่อยมีเหตุให้ต้องใช้
sudoอยู่แล้วเวลามีใครกำลังพิมพ์รหัสผ่าน ควรมี วัฒนธรรมการหันหน้าหนี
ในทางกลับกัน ถ้าเราเห็นพรอมป์ต์รหัสผ่านบนหน้าจอของคนอื่น ก็ควรหันหน้าหนีเองด้วย
ถ้าแสดง อักขระหมุน อย่าง
/ - \\ |ทุกครั้งที่พิมพ์ ก็น่าจะให้การตอบกลับได้โดยยังซ่อนความยาวไว้เวลา delete ก็ลดลงตามกติกาเดียวกัน ทำให้มีการตอบกลับแต่ก็ทำให้สับสนเรื่องความยาว
เหตุผลที่
sudoซ่อนรหัสผ่านเป็นค่าเริ่มต้น เป็น มรดกจากยุค shared terminal และเครื่องพิมพ์กระดาษ (tty)ในอดีต สิ่งที่พิมพ์จะถูกพิมพ์ลงกระดาษจริงและทิ้งร่องรอยไว้ จึงจำเป็นต้องซ่อนเพื่อความปลอดภัย
ทุกวันนี้ในสภาพแวดล้อมส่วนใหญ่ไม่มีปัญหาแล้ว และผู้ใช้ 1% ก็ยังเปลี่ยนกลับผ่านการตั้งค่าได้
ฉันคัดค้านเรื่องนี้
เลียนแบบ Mac เอาของที่ใช้งานได้ดีอยู่แล้วไปเปลี่ยนเป็น Rust วันนี้ก็ยังทำแบบนี้อีกสินะ