แต่เดิมคำถามนี้กล่าวถึงpasswd --delete <username>
สิ่งที่ไม่ปลอดภัยโดยที่ฟิลด์รหัสผ่านที่เข้ารหัสใน/etc/shadow
นั้นจะว่างเปล่า
username::...
หากคุณได้กำหนดค่าของคุณsshd
จะปฏิเสธการตรวจสอบรหัสผ่านแล้วที่ปลอดภัยกับ SSH ... แต่ถ้าอื่น ๆ ที่ให้บริการในระบบการใช้ตรวจสอบรหัสผ่านของคุณและไม่ได้กำหนดค่าที่จะปฏิเสธรหัสผ่าน null นี้ช่วยให้สามารถเข้าถึงได้โดยไม่ต้องใช้รหัสผ่าน! คุณไม่ต้องการสิ่งนี้
adduser --disabled-passwd
จะสร้าง/etc/shadow
รายการที่ช่องรหัสผ่านที่เข้ารหัสเป็นเพียงเครื่องหมายดอกจัน
username:*:...
นี่คือ "รหัสผ่านที่เข้ารหัสที่ไม่สามารถทำประสบความสำเร็จ" เช่นนี้หมายถึงบัญชีที่ถูกต้องและเทคนิคช่วยให้การเข้าสู่ระบบ แต่มันทำให้การตรวจสอบด้วยรหัสผ่านไปไม่ได้ที่จะประสบความสำเร็จ ดังนั้นหากคุณมีบริการที่ใช้การพิสูจน์ตัวตนด้วยรหัสผ่านอื่น ๆ บนเซิร์ฟเวอร์ของคุณผู้ใช้รายนี้จะถูกบล็อกจากบริการดังกล่าว
วิธีการรับรองความถูกต้องที่ใช้อย่างอื่นที่ไม่ใช่รหัสผ่านบัญชีมาตรฐาน (เช่นคีย์ SSH) จะใช้ได้กับผู้ใช้รายนี้สำหรับบริการใด ๆ ที่ใช้ไฟล์รหัสผ่านระบบในระบบนี้ เมื่อคุณต้องการผู้ใช้ที่สามารถเข้าสู่ระบบด้วยปุ่ม SSH เท่านั้นนี่คือสิ่งที่คุณต้องการ
หากคุณต้องการตั้งค่าบัญชีที่มีอยู่เป็นสถานะนี้คุณสามารถใช้คำสั่งนี้:
echo 'username:*' | chpasswd -e
มีค่าพิเศษที่สามสำหรับฟิลด์รหัสผ่านที่เข้ารหัส: adduser --disabled-login
จากนั้นฟิลด์จะมีเครื่องหมายอัศเจรีย์เพียงอันเดียว
username:!:...
เช่นเดียวกับเครื่องหมายดอกจันสิ่งนี้ทำให้การตรวจสอบรหัสผ่านเป็นไปไม่ได้ที่จะประสบความสำเร็จ แต่ก็มีความหมายเพิ่มเติม: มันทำเครื่องหมายรหัสผ่านว่า "ล็อค" สำหรับเครื่องมือการดูแลระบบบางอย่าง passwd -l
มีผลเหมือนกันมากโดยการเติมแฮชรหัสผ่านที่มีอยู่ด้วยเครื่องหมายอัศเจรีย์ซึ่งทำให้การตรวจสอบรหัสผ่านอีกครั้งเป็นไปไม่ได้ที่จะใช้
แต่นี่คือกับดักสำหรับเลินเล่อ: ในปี 2008 รุ่นpasswd
คำสั่งที่มาจากshadow
แพคเกจเก่าถูกเปลี่ยนเป็น re-define passwd -l
จาก "ล็อคบัญชี" เป็นเพียง "ล็อครหัสผ่าน" เหตุผลที่ระบุคือ "เพื่อความเข้ากันได้กับรุ่น passwd อื่น"
หากคุณ (เช่นฉัน) เรียนรู้สิ่งนี้มานานอาจเป็นเซอร์ไพรส์ที่น่ารังเกียจ มันไม่ได้ช่วยเรื่องที่adduser(8)
เห็นได้ชัดว่ายังไม่ได้ตระหนักถึงความแตกต่างนี้เช่นกัน
ส่วนที่ปิดการใช้งานบัญชีสำหรับวิธีการทั้งหมดของการตรวจสอบที่เป็นจริงการตั้งค่าวันหมดอายุของ 1 usermod --expiredate 1 <username>
สำหรับบัญชี: ก่อนปี 2551 passwd -l
นั้นมีต้นกำเนิดมาจากshadow
ชุดแหล่งข้อมูลที่ใช้ในการทำสิ่งนี้นอกเหนือจากการใส่รหัสผ่านด้วยเครื่องหมายอัศเจรีย์ - แต่ไม่ได้ทำเช่นนั้นอีกต่อไป
แพคเกจการเปลี่ยนแปลงเดเบียนพูดว่า:
- debian / patches / 494_passwd_lock-no_account_lock: คืนค่าลักษณะการทำงานก่อนหน้าของ passwd -l (ซึ่งเปลี่ยนแปลงใน # 389183): ล็อครหัสผ่านของผู้ใช้ไม่ใช่บัญชีผู้ใช้ บันทึกความแตกต่างอย่างชัดเจน สิ่งนี้จะคืนค่าพฤติกรรมที่พบได้ทั่วไปกับ passwd รุ่นก่อนหน้าและกับการใช้งานอื่น ๆ ปิด: # 492307
ประวัติข้อผิดพลาดสำหรับDebian bug 492307และbug 389183อาจมีประโยชน์ในการทำความเข้าใจความคิดเบื้องหลัง
sudo
การเข้าถึง (ไม่ว่าจะด้วยสิทธิ์ของ sudo เลยหรือด้วยสิทธิ์ sudo ด้วยNOPASSWD
) คำตอบที่คุณเลือกควรเหมาะสม ฉันได้ส่งการแก้ไขคำตอบนั้นเพื่อรวมข้อกังวล sudo แต่คิดว่าฉันจะโทรหาคุณที่นี่ในระหว่างนี้