ฉันจะให้รหัสผ่านผู้ใช้หนึ่งรหัสสำหรับการใช้งานปกติเมื่อเข้าสู่ระบบและรหัสผ่านอื่นสำหรับการดูแลระบบและการเข้าถึง sudo ได้อย่างไร ฉันต้องการให้ผู้ใช้หนึ่งคนมีรหัสผ่านสองอัน
sudo usermod -d /path/to/new/home
ฉันจะให้รหัสผ่านผู้ใช้หนึ่งรหัสสำหรับการใช้งานปกติเมื่อเข้าสู่ระบบและรหัสผ่านอื่นสำหรับการดูแลระบบและการเข้าถึง sudo ได้อย่างไร ฉันต้องการให้ผู้ใช้หนึ่งคนมีรหัสผ่านสองอัน
sudo usermod -d /path/to/new/home
คำตอบ:
มีวิธีการทำเช่นนี้โดยการแทนที่การตั้งค่า PAM (Pluggable Authentication Module) สำหรับบริการ sudo ทำสิ่งนี้ด้วยความเสี่ยงอย่างยิ่งต่อเครื่องของคุณ - อย่าเพิ่งคัดลอกและวางนอกเสียจากว่าคุณจะเข้าใจสิ่งที่คำสั่งทำและเปิดเทอร์มินัลรูทไว้เสมอ - ทดสอบการทดสอบ! - ก่อนออกจากระบบในกรณีที่คุณต้องการย้อนกลับและแก้ไขบางสิ่ง
ฉันขอแนะนำให้อ่านข้อมูลบางอย่างเกี่ยวกับวิธีการทำงานของ PAM เพื่อให้คุณรู้ว่าต้องทำอย่างไรถ้ามันหยุดพัก ฉันยังแนะนำให้ผู้ใช้ส่วนใหญ่เข้าหาปัญหานี้จากมุมมองที่แตกต่างกัน (สร้างบัญชีผู้ใช้แยกต่างหากสำหรับการดูแลระบบ) เนื่องจากวิธีการแก้ปัญหาอาจมีความเสี่ยงต่อการโจมตีตารางแฮชบนรหัสผ่านของคุณ
หากคุณตั้งใจที่จะดำเนินการต่อคุณจะต้องติดตั้งโมดูล PAM ใหม่ pam_pwdfile ใช้ไฟล์ประเภทแบบเก่า / etc / passwd สำหรับการตรวจสอบความถูกต้องซึ่งเหมาะสำหรับการใช้รหัสผ่านที่แตกต่างกันสำหรับบริการต่างๆ มันไม่มีการรับรู้บัญชี - คุณสามารถสร้างคู่ชื่อผู้ใช้ / รหัสผ่านสำหรับผู้ใช้ที่ไม่มีอยู่ในระบบ เนื่องจากเราจะใช้สำหรับ sudo มันไม่สำคัญเนื่องจากเราจะปล่อยให้ sudo ตรวจสอบบัญชีที่มีอยู่ตามปกติ
sudo apt-get install libpam-pwdfile
ฉันยังแนะนำให้ใช้โปรแกรมแก้ไขไฟล์ htpasswd ที่มีประโยชน์ Benjamin Schweizer ได้สร้างตัวแก้ไขที่สะดวกใน python ซึ่งทำงานได้ดี คว้าได้จากhttp://benjamin-schweizer.de/htpasswd_editor.htmlและติดตั้งการพึ่งพา:
sudo apt-get install python-newt
สร้างรูปแบบไฟล์ htpasswd ใช้เครื่องมือ sudo python htpasswd_editor sudo.passwd
- ใส่ชื่อผู้ใช้และรหัสผ่านโดยใช้ชื่อผู้ใช้เดียวกันกับที่คุณจะใช้สำหรับ sudo - หนึ่งรายการสำหรับผู้ใช้แต่ละรายที่จะใช้งาน คัดลอกไปยังที่ที่ปลอดภัย (เมื่อทดสอบสิ่งนี้ฉันใส่ไว้ใน /etc/sudo.passwd) และทำให้ผู้ใช้ทั่วไปไม่สามารถอ่านได้: chmod 660 /etc/sudo.passwd
ในฐานะรูท
ตรวจสอบให้แน่ใจว่าไฟล์เป็นของ root และผู้ใช้รายอื่นไม่สามารถอ่านได้ นี่เป็นช่องโหว่เนื่องจากไฟล์นี้มีรหัสผ่านที่แฮชและหากผู้ใช้คนอื่นสามารถอ่านหรือเขียนได้ไฟล์ดังกล่าวจะทำให้ระบบความปลอดภัยของคุณไม่ดี ด้วยเหตุนี้ฉันจึงไม่แนะนำวิธีนี้ในเครื่องที่ต้องรักษาความปลอดภัย
สุดท้ายแก้ไข/etc/pam.d/sudo
ไฟล์ เพิ่มบรรทัดต่อไปนี้เหนือบรรทัดอื่น@include ...
:
auth required pam_pwdfile.so pwdfile /etc/sudo.passwd
เห็นได้ชัดว่าการแทนที่อาร์กิวเมนต์สุดท้ายด้วยเส้นทางไปยังไฟล์ htpasswd ที่คุณสร้างขึ้น ใส่ความคิดเห็นในบรรทัดถัดไป: #@include common-auth
เพื่อให้แน่ใจว่าใช้วิธีการรับรองความถูกต้องใหม่
คำเตือน - คุณจะต้องแก้ไข/etc/pam.d/sudo
ไฟล์จากเทอร์มินัลรูท อย่าปิดสิ่งนี้โดยไม่ทดสอบ! หากคุณทำเช่นนั้นคุณอาจไม่สามารถลงชื่อเข้าใช้ (ถ้าคุณทำบางสิ่งบางอย่างขาดหายไป) และจะต้องบูตจากดิสก์กู้คืนเพื่อซ่อมแซมระบบของคุณ sudo
การทดสอบก่อนที่จะออกจากระบบโดยการเปิดอาคารผู้โดยสารแห่งใหม่และลองใช้ คุณควรพบว่ามันจะไม่ทำงานกับรหัสผ่านการเข้าสู่ระบบปกติของคุณอีกต่อไป แต่ต้องการรหัสผ่านใหม่ที่คุณใช้เมื่อคุณสร้างไฟล์ passwd หากต้องการอัปเดตไฟล์ให้ใช้เครื่องมือที่มีประโยชน์อีกครั้ง
มีคำตอบที่ง่ายกว่าสำหรับคำถามดั้งเดิมและเป็นวิธีที่ฉันใช้:
เข้าสู่ระบบในฐานะผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบเสมอและเมื่อใดก็ตามที่ผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบต้องทำอะไร "adminy" เพียง:
fab-user@fab-ux:/media/Data/Temp
$ su - fab-root
Password:
fab-root@fab-ux:~
$ sudo smartctl --all /dev/sdc
ใช่ไม่ใช่สิ่งที่คุณต้องการแต่เป็นสิ่งที่คุณต้องการจริงๆ